roboforum.ru

Технический форум по робототехнике.

Помогите с таймерами на Меге8

Помогите с таймерами на Меге8

Nikolai A » 04 сен 2007, 12:02

Здравствуйте, помогите новичку.

Инициализирую таймеры Т0 и Т1 по внешнему сигналу.
Код на С:  
  if(PINB.3){
        TCCR0=0x05; Внутренний источник сигнала
        TCCR1B=0x05;  Внутренний источник сигнала
  }
Симулирую в VMlab, при постоянном присутствии 1 на PINB.3 таймер Т1 не считает :evil: , а таймер Т0 все нормально считает.
Как только 1 на PINB.3 пропадает Т1 начинает считать. :D  Если Т1 переключаю на внешний источник тактового сигнала, то он при постоянном присутствии 1 на PINB.3 считает нормально.
Может кто знает в чем причина? Или это VMlab плохо симулирует?

Хочу сделать частотомер, правильно ли будет делать его на таймерах? Спасибо заранее.

avr123.nm.ru » 04 сен 2007, 12:10

В суть не вникал но if однократно провреряет условие - почему в описании "постоянно" ?

AVR может считать внешнюю частоту в 2 раза меньше тактовой а PIC до 40-50 МГц.

Nikolai A » 04 сен 2007, 12:41

Не знаю правильно ли объясню.
if находится внутри цикла while(1) т.е. условие if проверяется постоянно, если на PINB.3 1 не меняется какое-то время, то if с каждым циклом загружает управляюшие регистры значением 0х05, проблема в том, что Т0 работает, а Т1 не хочет. Вот я и пытаюсь понять почему и можно ли этого избежать.

avr123.nm.ru » 04 сен 2007, 14:02

Я просто while(1) не видел поэтому и уточнил.

avr123.nm.ru » 04 сен 2007, 14:05

Советую выложить проект с исходником и для VMLAB  - тогда легче помочь будет.

Nikolai A » 05 сен 2007, 11:28

Хорошо, завтра постараюсь выложить.
А есть ли какие-то соображения правильно ли делать частотомер на таймерах или может есть пути более рациональные?

avr123.nm.ru » 05 сен 2007, 11:38

Правильно.

Nikolai A » 06 сен 2007, 10:03

Спасибо, значит я на правильном пути.
Вот выкладываю архив с проектом полностью.
Вложения
my_project.rar
(39.32 КиБ) Скачиваний: 47


Rambler\'s Top100 Mail.ru counter