Микроконтроллеры | А таймер реального времени ATMega128 |
|
---|---|---|
Либо вариант - считаете, сколько полных переполнений в заданном периоде, грузите разницу между общим временем и 65536*число_переполнений, отсчитываете первый короткий период, а затем работаете по переполнениям. |
|
|
Или настроить таймер на прерывания с частотой 1КГц, и увеличивать/уменьшать счётчик в прерывании. |
|
|
раз часы не предусмотрены тогда - как я делаю: |
|
|
всем спасибо буду играцо |
|
|
мдяс... все сделал... только таймер неточно работает тормозит как будто... кто знает что может быть? |
|
|
Исходник выложите. |
|
|
#include <mega128.h> #asm // Reinitialize Timer 0 value // Timer 1 overflow interrupt service routine j++; } void main(void) PORTA=0x00; PORTB=0x00; PORTC=0x00; PORTD=0x00; PORTE=0x00; PORTF=0x00; PORTG=0x00; // Timer/Counter 0 initialization // Timer/Counter 1 initialization EICRA=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization // LCD module initialization // Global enable interrupts }; Вот код... таймер 0 вообще не работает не понимаю почему а по таймеру 1 - тормоза кварц 4.322 МГц |
|
|
Нескромный вопрос - почему вместо Compare match interrupt в таймере 1 используется экзотика с overflow? Из-за того, что между возникновением сигнала прерывания и вот этим присваиванием: |
|
|
BCluster: Вот код... таймер 0 вообще не работает не понимаю почему По таймеру 1. Не надо клок для таймера делить на 256, а потом бороться с кривыми временами. Если у вас частота системного клока 4322000 Гц, делите на 43220, в таймер1 надо записать 65536-43220=22316 (0х572С), таймер1 позволяет, получите частоту прерывания 10 Гц , т.е. требуемые 0.1 с, если не хотите делать, как chav1961 подсказал. И не пишите lcd_putsf("Ya Krevedko") - это моветон, пишите лучше lcd_putsf("Держы дестанцею, Кросавчег") . |
|
|
Compate Match - прерывание по сравнению с заданным значением... Вопрос - после того как происходит это прерывание, счетчик разве сбрасывается? Насчет команды деления... Может я не прав, но умножение и деление не одно и тоже ?? Дальше... Кварц висит на TOSC1... 4322000/43220 = 100 а не 10... и я на 256 не делю... там просто остались комменты... делил на 8 Дальше... Самое интереснойе - все заработало, заменил кварц на 12 мГц. Все тютелька в тютельку пашед... |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |