roboforum.ru

Технический форум по робототехнике.

Помогите с таймерами пожалуйста =)

Re: Помогите с таймерами пожалуйста =)

avr123.nm.ru » 10 янв 2010, 20:34

Этот кусок не обязателен, но я бы оставил.

Re: Помогите с таймерами пожалуйста =)

Ramzez » 10 янв 2010, 20:47

Не работает, даже в цикл while(1) не заходит, странно, как такое вобще может быть?

Re: Помогите с таймерами пожалуйста =)

yak-40 » 10 янв 2010, 20:57

Не работает, даже в цикл while(1) не заходит, странно, как такое вобще может быть?

Как определили?
при этом загораются соответствующие светодиоды на выходах PORTB=00010001

А как, простите светодиоды будут зажигаться, если весь портБ на вход сконфигурирован?

Re: Помогите с таймерами пожалуйста =)

Ramzez » 10 янв 2010, 21:16

Ой, ошибочка, в цикл заходит (перепутал название порта с диодами) но ШИМ как то неправильно работает, серво стоит на месте
Попробую чуть позже подключить осциллограф и посмотреть какой сигнал на выводе таймера

Добавлено спустя 1 минуту 2 секунды:
Поправил код программы

Добавлено спустя 8 минут 25 секунд:
сейчас светодиоды горят в зависимости от кнопки, значит соответственно уменьшается или увеличивается регистр OCR

Re: Помогите с таймерами пожалуйста =)

yak-40 » 10 янв 2010, 21:18

Прога должна при нажатии кнопки перегонять серво постепенно из крайнего левого в крайнее правое положение

Постепенно - это как? если ни таймер не задействован, ни временные задержки. При тактовой частоте 1МГц, 110 тактов пролетят и глазом не успеешь моргнуть...

Re: Помогите с таймерами пожалуйста =)

avr123.nm.ru » 10 янв 2010, 21:55

Рекомендую PROTEUS !

Re: Помогите с таймерами пожалуйста =)

Ramzez » 10 янв 2010, 22:20

Спасибо =) попробую разобраться, а что лучше-протеус или VMLAB ?

я пока не с тем, не с другим не работал.

Ну ладно , ладно =) хоть и не постепенно, но должно менять состояние сервы из одного положения в другое, притом когда отпускаю должно все обратно вставать) но этого не происходит. Даже 2 раза серва заработала , но не реагировала на кнопку (в отличае от светодиодов) , но всеголишь 2 раза, при неизменном коде прошивки. Искал отстающие контакты и все такое-не нашел. Что-то тут не так.

Re: Помогите с таймерами пожалуйста =)

avr123.nm.ru » 10 янв 2010, 22:53

PROTEUS конечно более продвинут но он большой а VMLAB просто маленький.

Re: Помогите с таймерами пожалуйста =)

yak-40 » 10 янв 2010, 23:08

Ramzez писал(а): Даже 2 раза серва заработала , но не реагировала на кнопку (в отличае от светодиодов) , но всеголишь 2 раза, при неизменном коде прошивки.

Телепаты в отпуске, поэтому точную схему и последнюю прошивку в студию пожалуйста :)

Re: Помогите с таймерами пожалуйста =)

Ramzez » 10 янв 2010, 23:53

МК.jpg

Код: Выделить всёРазвернуть
#define F_CPU 1000000UL  // 1 MHz
   #include <avr/io.h>
   #include <avr/interrupt.h>

// Declare your global variables here

void main(void)
{

PORTD=0x00;     
DDRD=0x20;    //выход таймера
DDRA = 0xff; //выходы
DDRB=0x00; //входы
PORTB=0b00000001 ;  //pull-up на нулевую ногу

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Set
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xC0;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x09;
ICR1L=0xc4;
OCR1AH=0x00;
OCR1AL=0xBC;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
{

while(PINB & 0x01 != 0) {     
if (OCR1AL<250)
{
OCR1AL++;
PORTA = 0b00000001;
}

}

if (OCR1AL>140)
{
OCR1AL--;
PORTA=0b00010000;
}
}
}


Добавлено спустя 2 минуты 24 секунды:
вот так вот все и обстоит, и не работает =)

Re: Помогите с таймерами пожалуйста =)

yak-40 » 11 янв 2010, 00:09

Ужос! :shock:
А нормальной схемы нет?
Ну на вскидку:
1. портА не запитан.(пин 30,32 на +5в надо).
2. Резистор на кнопке не нужен.
3. Ёмкости на питание есть? керамика и электролит должен стоЯть.
4. Питание стабильно? (чем питаемся?)

Re: Помогите с таймерами пожалуйста =)

avr123.nm.ru » 11 янв 2010, 00:23

2. я считаю что нужен, но небольшой 150-560 Ом.

31 и 11 надо соединить и конденсаторы добавить и серву я бы отдельно питал от батарейки иль еще как.

Re: Помогите с таймерами пожалуйста =)

Ramzez » 11 янв 2010, 02:03

Питаю от компа, USB. Сопротивление для кнокпи нужно на всякий случай, если в том или ином коде забуду поставить порт на вход,чтобы не спалить все. Конденсаторы хз, нужны или нет, если иточник питания до 40 ампер? броски по питанию не надо сглаживать, все в БП предусмотрено, а вот помехи не знаю, их надо керамикой или нет?
Скажите пожалуйста , зачем нужны ножки 30 и 32, обязательно ли их подключать? (все и так работало, свтодиоды мигали, серва управлялась (программно, без таймера))

Добавлено спустя 6 минут 48 секунд:
кстати чем схема то не понравилась?)) все понятно, все ясно)

Re: Помогите с таймерами пожалуйста =)

avr123.nm.ru » 11 янв 2010, 08:24

Сопротивление ко всем ногам МК - это ОЧЕНЬ ПРАВИЛЬНО для начинающих и продолжающих если не мешает работе схемы.

30 это аналоговое питание и его надо подключить к питанию.

32 это опорное напряжение - подключать не обязательно, можно просто конденсатором 0.1 uF заземлить если используете АЦП.

"Устройство микроконтроллера AVR на русском языке" - http://proavr.narod.ru/02.htm - найдите время почитать ВНИМАТЕЛЬНО !

Re: Помогите с таймерами пожалуйста =)

yak-40 » 11 янв 2010, 12:04

Ramzez писал(а): если иточник питания до 40 ампер

Ого! :shock: Где это из USB 40 ампер выходит? Обычно 0,5А не более, поэтому ёмкости крайне желательны.


cron
Rambler\'s Top100 Mail.ru counter