Помогите настроить таймер в Atmega

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
akulov
Открыл глаза
Сообщения: 42
Зарегистрирован: Пн июн 06, 2011 13:18:00

Помогите настроить таймер в Atmega

Сообщение 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;

тогда не выходит на счетный режим.
Может еще что-то надо менять?
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите настроить таймер в Atmega

Сообщение pyzhman »

в регистре TCNT2
Его надо менять в обработчике прерывания.
Docendo discimus
Реклама
akulov
Открыл глаза
Сообщения: 42
Зарегистрирован: Пн июн 06, 2011 13:18:00

Re: Помогите настроить таймер в Atmega

Сообщение akulov »

pyzhman писал(а):
в регистре TCNT2
Его надо менять в обработчике прерывания.
Пробовал менять в обработчике прерывания таймера2, программа зацикливается и постоянно возвращается в исходное состояние.
В программировании я новичок!
Есть программа для часы/будильник/метеостанция. Есть коррекция хода часов, но шаг коррекции 1/128Гц. Это много, часы или сильно отстают или спешат. Хотел подправить корректировкой счетчика таймера, но не знаю как это программно сделать. Программа написана в CodeVisionAVR, исходный код:
Вложения
Mega32.rar
(9.87 КБ) 126 скачиваний
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите настроить таймер в Atmega

Сообщение pyzhman »

Код: Выделить всё

        OutInd(0);
        OutInd(1);
        }
TCNT2= 0x0000;// подбираем здесь.     
}              
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
akulov
Открыл глаза
Сообщения: 42
Зарегистрирован: Пн июн 06, 2011 13:18:00

Re: Помогите настроить таймер в Atmega

Сообщение akulov »

pyzhman писал(а):

Код: Выделить всё

        OutInd(0);
        OutInd(1);
        }
TCNT2= 0x0000;// подбираем здесь.     
}              
Спасибо, все работает, буду подбирать.
В интернете вычитал, что
После любой записи в регистры асинхронного таймера нужно дождаться установки соответствующего этому регистру флага прерывания, обработать его или сбросить, и только потом валиться в спячку
И еще, нужно дождаться записи кода в регистр. Пишут, что запись происходит через 2(3) такта.
Я написал

Код: Выделить всё

        }
TCNT2= 0x0000;// подбираем здесь.
while (ASSR&0b00000100);     
}
Правильно ли я сделал?
С наступающим Новым Годом!
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите настроить таймер в Atmega

Сообщение pyzhman »

валиться в спячку
Судя по стилю - чья-то отсебятина, возможно и верная. Читайте даташиты, дабы все было чики-пуки.
С Новым годом!
Docendo discimus
Реклама
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2183
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

Re: Помогите настроить таймер в Atmega

Сообщение watchmaker »

отсебятина
Ди Халта?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»