Страница 1 из 1
Помогите настроить таймер в Atmega
Добавлено: Пт дек 30, 2011 16:16:27
akulov
В Atmega32 таймер2 насстроен на работу от внешнего часового кварца 32768Гц, Кдел.=1, прерывание по переполнению, на выходе имеем 128Гц.
Выставил:
Код: Выделить всё
ASSR=0x08;
TCCR2=0x01;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0b01000010;
Мне нужно подкорректировать частоту на выходе таймера. Изменяю начальный код в регистре TCNT2, ничего не изменяется.
Пробовал выставить переполнение по совпадению:
Код: Выделить всё
ASSR=0x08;
TCCR2=0x09;
TCNT2=0x00;
OCR2=0x7F;
TIMSK=0b10000010;
тогда не выходит на счетный режим.
Может еще что-то надо менять?
Re: Помогите настроить таймер в Atmega
Добавлено: Пт дек 30, 2011 16:48:31
pyzhman
в регистре TCNT2
Его надо менять в обработчике прерывания.
Re: Помогите настроить таймер в Atmega
Добавлено: Пт дек 30, 2011 20:22:07
akulov
pyzhman писал(а):в регистре TCNT2
Его надо менять в обработчике прерывания.
Пробовал менять в обработчике прерывания таймера2, программа зацикливается и постоянно возвращается в исходное состояние.
В программировании я новичок!
Есть программа для часы/будильник/метеостанция. Есть коррекция хода часов, но шаг коррекции 1/128Гц. Это много, часы или сильно отстают или спешат. Хотел подправить корректировкой счетчика таймера, но не знаю как это программно сделать. Программа написана в CodeVisionAVR, исходный код:
Re: Помогите настроить таймер в Atmega
Добавлено: Сб дек 31, 2011 10:35:05
pyzhman
Код: Выделить всё
OutInd(0);
OutInd(1);
}
TCNT2= 0x0000;// подбираем здесь.
}
Re: Помогите настроить таймер в Atmega
Добавлено: Сб дек 31, 2011 12:22:13
akulov
pyzhman писал(а):Код: Выделить всё
OutInd(0);
OutInd(1);
}
TCNT2= 0x0000;// подбираем здесь.
}
Спасибо, все работает, буду подбирать.
В интернете вычитал, что
После любой записи в регистры асинхронного таймера нужно дождаться установки соответствующего этому регистру флага прерывания, обработать его или сбросить, и только потом валиться в спячку
И еще, нужно дождаться записи кода в регистр. Пишут, что запись происходит через 2(3) такта.
Я написал
Код: Выделить всё
}
TCNT2= 0x0000;// подбираем здесь.
while (ASSR&0b00000100);
}
Правильно ли я сделал?
С наступающим Новым Годом!
Re: Помогите настроить таймер в Atmega
Добавлено: Вс янв 01, 2012 13:11:39
pyzhman
валиться в спячку
Судя по стилю - чья-то отсебятина, возможно и верная. Читайте даташиты, дабы все было чики-пуки.
С Новым годом!
Re: Помогите настроить таймер в Atmega
Добавлено: Вт янв 03, 2012 15:04:28
watchmaker