Например TDA7294

Форум РадиоКот • Просмотр темы - Таймеры/счётчики в AVR
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб май 04, 2024 05:55:41

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1322 ]     ... , , , 36, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн июл 18, 2016 10:02:12 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Привет всем, у меня вопрос такой: можно ли "склеить" 2 таймера на Меге8 - таймер1 и таймер2 с расчётом получить 24 битный таймер? Необязательно напрямую, можно через прерывания, например, таймер2 по переполнению а таймер1 работал бы в режиме СТС?. Просто нехватает точности 16-разрядного. Мне нужен 1-секундный интервал. Сейчас имею: частота ядра 16Мгц от внешнего генератора SG51P, предделитель 1/256, считаем до 62500. Получаю слишком длинную секунду. При 62499 - слишком короткую. Вот и думаю, если выключить прескалер и склеить таймеры, можно было бы иметь секунду с точностью 0,0625 мкс. Или есть способ попроще? Типа сделать секунду короче и выключить на некоторое время таймер1? Но нехочется делать тупых задержек. Подскажите, пожалуйста.

ПС. Питание стабильное, температура-тоже. Пишу в Студии на асме

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн июл 18, 2016 10:09:37 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4222
Откуда: Ижевск
Рейтинг сообщения: 0
Расширить Т1 дополнительной регистровой парой, в которой считать число переполнений. Т1 без предделителя, после 244 переполнений досчитать ещё 9'216 тактов.


Последний раз редактировалось akl Пн июл 18, 2016 10:12:54, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн июл 18, 2016 10:12:24 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
что мешает использовать предделитель 1024 и CTC на значение 15625?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн июл 18, 2016 10:19:18 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
akl писал(а):
Расширить Т1 дополнительной регистровой парой, в которой считать число переполнений. Т1 без предделителя.
Ну блин!!, А что сам-то не додумался? Этож надо- на ровном месте! Спасибо, akl! :)))
ARV, и Вам спасибо, только с 16-разрядным счётчиком как ни крути, а точность интервала зависит только от точности генератора и его частоты., Я уже пробовал всякие варианты. Вывод - надо увеличить разрядность счётчика

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн июл 18, 2016 13:17:50 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Ну вот и программка, ещё не симулял. Это если я правильно понял. Зае заразмножался с подсчётом что надо (в идеале) подсунуть в регистр Sekunda. И я не уверен, что подсчитал правильно, наверно, в железе надо будет тестить.
Спойлер
Код:
.cseg
.org   0
   rjmp   reset
.org   OC1Aaddr
   rjmp   MatchT1
.org   OVF1addr
   rjmp   OvfT1

.equ   Sekunda   =   9216   ;4321 counted manually
   
.def   temp   r16
.def   cnt1   r17
.def   cnt2   r18
.def   ;...............
reset:
   ldi      temp,Low(RAMEND)
   out      SPL,temp
   ldi      temp,High(RAMEND)
   out      SPH,temp
   ;PORT ini....
   ;other settings
   clr      temp
   out      TCCR1A,temp
   ldi      temp,1<<CS10
   out      TCCR1B,temp
   
   ldi      temp,1<<TOIE1
   out      TIMSK,temp
   ldi      cnt1,244
   sei
main:
   rjmp   main
   
OvfT1:
   in      r1,sreg                           ;1
   dec      cnt1                                   ;1
   brne           exit1                                  ;2/1
   ldi      temp,high(Sekunda)   ;prepare timer1    ;1
   out      OCR1AH,temp         ;to count in CTC mode           ;1
   ldi      temp,low(Sekunda)                          ;1
   out      OCR1AL,temp                        ;1
   ldi      temp,(1<<WGM12)|(1<<CS10)                    ;1
   out      TCCR1B,temp                        ;1
   clr      temp         ;do I need this "clr"?                           ;1
   ldi      temp,1<<OCIE1A                     ;1
   out      TIMSK,temp                        ;1
exit1:
   out      sreg,r1                           ;1   
   reti                                 ;4
   ;total OvfT1:   8/17 cycles or 0,5/1,0625 uS @16MHz approx.+rjmp=2*244+reti=4*244
   ;14/23, with rjmp/reti, timer1=65536+2+4=65542
   ;243*(65542+14)+65542+23+6=15995679 uS
   ;Sekunda=4321
MatchT1:
   in      r1,sreg         ;1
   ldi      cnt1,244              ;1
   clr      temp                 ;1
   out      TCCR1A,temp      ;1
   ldi      temp,1<<CS10           ;1
   out      TCCR1B,temp      ;1   =6 ticks=0,375 uS, timer starts here
   ldi      temp,1<<TOIE1     ;1
   out      TIMSK,temp      ;1
   
;   Have 1 Second here...

   out      sreg,r1
   reti

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 04:33:00 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4222
Откуда: Ижевск
Рейтинг сообщения: 1
Вы правильно поняли. Правда, код с недостатками.
Спойлер
Код:
.INCLUDE "m8DEF.INC"

.cseg
.org   0
   rjmp   reset
.org   OC1Aaddr
   SET
   RET
;   rjmp   MatchT1
.org   OVF1addr
OvfT1:
   in      r1,sreg                           ;1
   dec      cnt1                                   ;1
   brne           exit1                                  ;2/1

   ldi      temp,(1<<WGM12)|(1<<CS10)                    ;1
   out      TCCR1B,temp                        ;1
   ldi      temp,1<<OCIE1A                     ;1
   out      TIMSK,temp                        ;1
;*************
   OUT   TIFR,TEMP
;*************
exit1:
   out      sreg,r1                           ;1   
   reti                                 ;4
;   rjmp   OvfT1
;*************************************************
.equ   Sekunda   =   9216   ;4321 counted manually
   
.def   temp =  r16
.def   cnt1 = r17
.def   cnt2 = r18
;.def   ;...............
reset:
   ldi      temp,Low(RAMEND)
   out      SPL,temp
   ldi      temp,High(RAMEND)
   out      SPH,temp
   ;PORT ini....
   ;other settings
GO:
   CLI
   ldi      temp,high(Sekunda-1)   ;prepare timer1    ;1
   out      OCR1AH,temp         ;to count in CTC mode           ;1
   ldi      temp,low(Sekunda-1)                          ;1
   out      OCR1AL,temp                        ;1

   ldi      temp,1<<CS10
   out      TCCR1B,temp
   
   ldi      temp,1<<TOIE1
   out      TIMSK,temp
   OUT   TIFR,temp
   ldi      cnt1,244
   CLT
   sei
main:
   BRTC   main
   RJMP   GO
;   rjmp   main
   
   ;total OvfT1:   8/17 cycles or 0,5/1,0625 uS @16MHz approx.+rjmp=2*244+reti=4*244
   ;14/23, with rjmp/reti, timer1=65536+2+4=65542
   ;243*(65542+14)+65542+23+6=15995679 uS
   ;Sekunda=4321
;MatchT1:
;   in      r1,sreg         ;1
;   ldi      cnt1,244              ;1
;   clr      temp                 ;1
;   out      TCCR1A,temp      ;1
;   ldi      temp,1<<CS10           ;1
;   out      TCCR1B,temp      ;1   =6 ticks=0,375 uS, timer starts here
;   ldi      temp,1<<TOIE1     ;1
;   out      TIMSK,temp      ;1
   
;   Have 1 Second here...

;   out      sreg,r1
;   reti
.EXIT
Так можно формировать секунду для любого кварца.
Спойлер
Код:
.INCLUDE "m8DEF.INC"

.equ    Fo=16012344

.equ    OVER=Fo/65536

.equ   Sekunda=Fo-OVER*65536
   
.def   temp =  r16
.def   cnt1 = r17
.def   cnt2 = r18

.cseg
.org   0
   rjmp   reset
.org   OC1Aaddr
   SET
   RET
.org   OVF1addr
OvfT1:
 ;  in      r1,sreg                           ;1
   dec      cnt1                                   ;1
   brne           exit1                                  ;2/1

   ldi      temp,(1<<WGM12)|(1<<CS10)                    ;1
   out      TCCR1B,temp                        ;1
   ldi      temp,1<<OCIE1A                     ;1
   out      TIMSK,temp                        ;1
;*************
   OUT   TIFR,TEMP
;*************
exit1:
  ; out      sreg,r1                           ;1   
   reti                                 ;4
;*************************************************
reset:
   ldi      temp,Low(RAMEND)
   out      SPL,temp
   ldi      temp,High(RAMEND)
   out      SPH,temp
   ;PORT ini....
   ;other settings
GO:
   CLI

   LDI   R22,(1<<SE)
   OUT   MCUCR,R22      ; режим SLEEP IDLE

   ldi      temp,high(Sekunda-1)   ;prepare timer1    ;1
   out      OCR1AH,temp         ;to count in CTC mode           ;1
   ldi      temp,low(Sekunda-1)                          ;1
   out      OCR1AL,temp                        ;1

   ldi      temp,1<<CS10
   out      TCCR1B,temp
   
   ldi      temp,1<<TOIE1
   out      TIMSK,temp
   OUT   TIFR,temp
   LDI      cnt1,OVER
;   ldi      cnt1,244
   CLT
   sei
main:
   SLEEP
   BRTC   main
   RJMP   GO
.EXIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 07:19:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
akl писал(а):
Так можно формировать секунду для любого кварца.
наверное, можно, не вникал. но принципиально - зачем это может быть необходимо? все-таки достаточно "частые" прерывания по считающему на 16МГц таймеру - это весьма приличная нагрузка на ядро - оно действительно необходимо?

например, человечество не заморачивается с тем, что Земля облетает Солнце не ровно за 365 дней... а просто раз в 4 года добавляют сутки, и все. если у вас кварц не точный, то, например, для часов было бы достаточно каждую, допустим, 12845-ю секунду увеличивать счетчик секунд не на 1, а на 2, или наоборот, пропускать инкремент счетчика - и точность хода часов была бы 1 секунда в год.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 07:47:22 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Ув. ARV, в системах охраны так и сделано (DSC). Есть ячейка, в которой записано количество секунд последней в сутках минуты. По дефолту там 60. Но.. надо так..
akl, спасибо Вам, сейчас разбираюсь как и что в Вашем коде (в перерывах между основной работой :) ).
Ещё не понял, почему Sekunda-1 и зачем писать в TIFR?. По даташиту :

Цитата:
• Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
When this bit is written to one, and the I-flag in the Status Register is set (interrupts globally
enabled), the Timer/Counter1 Output Compare A match interrupt is enabled. The corresponding
Interrupt Vector (see “Interrupts” on page 46) is executed when the OCF1A Flag, located in
TIFR, is set.


Вот я почему-то и подумал, что флаг устанавливается аппаратно.

Где я сморозил?

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 08:17:31 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4222
Откуда: Ижевск
Рейтинг сообщения: 0
Цитата:
If TCNT equals OCR1x the comparator signals a match. A match will set the Output Compare Flag (OCF1x) at the next timer clock cycle. If enabled (OCIE1x = 1), the Output Compare Flag generates an Output Compare interrupt.
Следовательно, для точного сравнения нужно заносить значение на 1 меньшее требуемого.
dgrett писал(а):
Вот я почему-то и подумал, что флаг устанавливается аппаратно.
Да, а вот сбрасываются они аппаратно при обработке прерывания или программной записью лог. 1. Флаги в AVR всегда расположены на той же позиции в регистре локально разрешающем оные.
Запись типа
Код:
   ldi      temp,1<<TOIE1
   out      TIMSK,temp
   OUT   TIFR,temp
означает разрешение прерывания переполнения и сброс флага.


Последний раз редактировалось akl Вт июл 19, 2016 08:28:04, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 08:24:33 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Вот, теперь проясняется :) Читать и читать даташит. И чтоб не отвлекал никто :lol:

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 10:43:30 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Опять вопрос, хотя работает и так. Но может необязательно каждую секунду загружать OCR1A ? Можно его грузить единожды в общих настройках. Ведь менять я его не собираюсь в ходе программы? Или тут ещё какие камни под водой с острыми краями?

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 11:08:21 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4222
Откуда: Ижевск
Рейтинг сообщения: 0
В такой программе можно и единожды загружать OCR1A. Но, По возможности, подтверждать режим работы считаю более надежным решением. Или, например, программу можно переписать, используя только прерывание OC1A.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт июл 19, 2016 11:15:16 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Спасибо, я тоже так подумал, для надёжности, ведь несколько доп. тактов (их количество не меняется в ходе программы) не "спасёт отца русской демократии".

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пт июл 22, 2016 10:11:13 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 87
Зарегистрирован: Чт июл 24, 2014 23:09:23
Сообщений: 354
Откуда: Киев
Рейтинг сообщения: 0
Подскажите что может быть. Есть atmega 168, работает на
8 МГц, в Makefile тоже указано 8000000. Таймер с максимальным предделителем на 1024 срабатывает по переполнению, срабатывает в четыре раза медленнее чем нужно. Считал так.
1/(8 000 000/1 024/1 024)*1 000 = 131 мс
В реальности получается 32 миллисекунды
Что это за глюк и как с ним боротся?

Компилятор - Winavr 2010


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пт июл 22, 2016 10:15:59 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4222
Откуда: Ижевск
Рейтинг сообщения: 0
1000000/8000000=0.125мкс. 0,125*1024*256=32768мкс или 32,768мс


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пт июл 22, 2016 10:17:35 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт сен 14, 2010 23:07:10
Сообщений: 182
Откуда: Ростов
Рейтинг сообщения: 0
baron_P писал(а):
Доброго времени суток.
Есть странный затуп с МК ATMega8. Хочу использовать для генерации ШИМ-сигнала Т/С1 в режиме FastPWM со счетом до ICR1.
...
Вся эта штука работает правильно, если выбран обычный FastPWM или, например, PhaseCorrectPWM c отсчетом до ICR1. А если выбрать нужный мне FastPWM с отсчетом до ICR1, то не работает функция считывания нажатия кнопок. Если режим переключить переменной, то все ок (запускается ШИМ и тд.), а включить вручную никак: состояние PINC (на котором висят кнопки и входные сигналы) ни в какую не хочет считываться.
Подскажите, пожалуйста, куда примерно думать. Что-то совсем не могу понять, как это может быть связано между собой.


Нашел проблему. При такой
Код:
TCCR1A |= (1 << COM1A1)
инициализации Т/С1, на соответствующем выводе при включении МК висит единица. А у меня дальше идет цикл ожидания нуля на этом выводе, который становится бесконечным из-за этого. Лечится инверсией состояния вывода
Код:
TCCR1A |= (1 << COM1A1) | (1 << COM1A1)
А скважность теперь можно задавать как разность максимума счета и требуемого задания скважности
Код:
OCR1A = ICR1 - PWM_ref

_________________
We do what we must because we can (c) GLaDOS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пт июл 22, 2016 13:25:37 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 87
Зарегистрирован: Чт июл 24, 2014 23:09:23
Сообщений: 354
Откуда: Киев
Рейтинг сообщения: 0
Подскажите, можно ли так делить частоту прерываний, все работает, но правильно ли так делать?

ISR (TIMER2_OVF_vect) //32 миллисекунды
{
static char delenie_in_seven = 0;
if(++delenie_in_seven == 7) //Получаем нужную длительность такта 229 миллисекунд
{
delenie_in_seven = 0;
//Код
}
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пт июл 29, 2016 11:57:21 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 1
Теоретически, никто не запрещает использовать статические переменные в обработчике прерывания. Единственное, я бы убрал начальную инициализацию, т.к. static по требованию стандарта зануляется перед первым употреблением. Оно, конечно, и в таком виде абсолютно законно, но несколько двусмысленно. По аналогии с обычными переменными возникает ассоциация, что переменная обнуляется при каждом входе в обработчик, что на самом деле не так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб авг 06, 2016 17:06:13 
Грызет канифоль

Зарегистрирован: Чт апр 28, 2011 15:08:58
Сообщений: 274
Рейтинг сообщения: 0
Помогите с таймером в меге168 1MHZ не срабатывает каждые 5 секунд.
Код:
    OCR2A = 0x1E85;

    TCCR2A |= (1 << WGM21);
    // Set to CTC Mode

    TIMSK2 |= (1 << OCIE2A);
    //Set interrupt on compare match

    TCCR2B |= (1 << CS21);

interrupt [TIM2_COMPA] void timer2_compa_isr(void)
{
unsigned char i;
  LED_ON;
  delay_us(400);
  LED_OFF;
 
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб авг 06, 2016 17:54:20 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Цитата:
OCR2A = 0x1E85;
А ничего что у m168 таймер T2 восьмибитный?
Да и остальная логика на первый взгляд странная.
Цитата:
TCCR2A |= (1 << WGM21);
Чему равны остальные биты этого регистра? Лучше при настройке делать прямое присваивание.
TCCR2B |= (1 << CS21); делитель F_CPU/8 = 125 кГц
OCR2A = 0x1E85; если предположить, что этот регистр 16-битный, делитель равен 7814
Тогда прерывание возникает с частотой F_CPU/8/7814 = 16 Гц, то есть с интервалом 62,5 мс.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1322 ]     ... , , , 36, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y