В прерывании по переполнению таймера 2 написал:
TCNT2=50;
display[0]=TCNT2;
переменная display[0] возвращает 1, т.е. значение 50 не присваивается. Чем такое объяснить?
А хотели то чего добиться?anco писал(а):В прерывании по переполнению таймера 2 написал:
TCNT2=50;
display[0]=TCNT2;
переменная display[0] возвращает 1, т.е. значение 50 не присваивается. Чем такое объяснить?
После настройки и запуска таймера (с предделителем) будет формироваться импульс счета. Период зависит от частоты ТИ и деления. Этот импульс и будет увеличивать значение счетного регистра. В случае если надо обработать факт поступления К импульсов (внешних или внутренних), вы можете записав предварительно желаемое число в регистр ОС получить прерывание на совпадение результатов подсчета с этим числом. Смена значения в регистрах ОС происходит во время переполнения счетного регистра. Следущим тактом будет новое переполнение счетного регистраanco писал(а):Можно объяснить на пальцах когда же TCNT2 станет равным 50 (если станет)? И за одно уж что такое "результат сравнения" и "следующий такт синхронизации".
Это в таймер который считает до 255, заносите 300?anco писал(а):Хотел корректировать точность часов. И она корректировалась. Нашел нужную поправку...Потом сделал программную корректировку...и задал по умолчанию найденное значение (correct_ozu=300)
Мда без кода тут ничего не понять... Первое что напрашивается а не перевести ли таймер в режим СТС? Там можно будет опрокидывать его с коэф меньше 255.anco писал(а):...но часы начали отставать. Вот я и вывел вычисляемое значение поправки на индикатор, а оно оказалось равным 3 - не то что ожидал, а если присваивать как в первом случае без вычислений, то =1, т.е. часы тикают и пока ничего не присваивают. Вот и хочу узнать когда это произойдет.
Я же использую прерывание по переполнению, а не по совпадению. Я спрашиваю о моменте изменения регистра TCNT, а не OCR.Meteor писал(а): В случае если надо обработать факт поступления К импульсов (внешних или внутренних), вы можете записав предварительно желаемое число в регистр ОС получить прерывание на совпадение результатов подсчета с этим числом. Смена значения в регистрах ОС происходит во время переполнения счетного регистра. Следущим тактом будет новое переполнение счетного регистра
TCNT2=256+correct_ozu/60;Meteor писал(а): Это в таймер который считает до 255, заносите 300?
Кода 2 строки: присвоение первая и чтение вторая (см. первый пост). Смотрим то что прочитали и не понимаем почему присваивали одно, а прочиталось другое. Вот в чем вопрос.Meteor писал(а): Мда без кода тут ничего не понять... Первое что напрашивается а не перевести ли таймер в режим СТС? Там можно будет опрокидывать его с коэф меньше 255.
Давайте по порядку. Откуда берется тактовый сигнал на вход таймера? Как настроен предделитель? Регистр счета увеличивается в тот момент, когда будет сформирован импульс, частота которого меньше частоты тактового сигнала в число раз равное коэффициенту деления предделителя. Прерывание по переполнению формируется в момент перехода значения счетного регистра с максимального(0xFF) в минимальное (0x00)значение.anco писал(а):Я же использую прерывание по переполнению, а не по совпадению. Я спрашиваю о моменте изменения регистра TCNT, а не OCR.
ассинхронный режим, часовой кварц 32768ГцMeteor писал(а): Откуда берется тактовый сигнал на вход таймера?
1:1Как настроен предделитель?
// Timer 2 overflow interrupt service routineРегистр счета увеличивается в тот момент, когда будет сформирован импульс, частота которого меньше частоты тактового сигнала в число раз равное коэффициенту деления предделителя. Прерывание по переполнению формируется в момент перехода значения счетного регистра с максимального(0xFF) в минимальное (0x00)значение.
Воо-т оно наверно!Golosov_SA писал(а):сохраняется в специальном временном регистре, а пересылка содержимого временного регистра в рабочий регистр осуществляется по третьему после записи положительному фронту сигнала на выводе TOSC1.
Осмелюсь предположить, что правда будет в железе. Там и только там надо смотреть работу. И не надеяться на всяческих помощников типа протеуса. Когда пару раз зашьете и с сотню раз потыкаете осциллографом - разбираться будет намного легче(даже Вам самому)anco писал(а):В общем вот проект в CVAVR, там есть и проект для протеуса.
Где правда?
В смысле? То что так долго формулу считает? или то что появляется ошибка в связи с вычислением формулы + задержка в 2 периода?Golosov_SA писал(а):сомневаюсь по поводу п3-5.
4Мгц против 0,032768МГцеще немаловажно то, что частота тактирования cpu была МИНИМУМ в 4 раза БОЛЬШЕ частоты на TOSC1 (читай тот-же дш)
Код: Выделить всё
***************************
while (ASSR & (1<<TCN2UB)); // ждем пока регистр TCNT2 не изменится
***************************