работает на таймере 2, но не работает на таймере 1
- Войдите на сайт для отправки комментариев
Ср, 12/07/2017 - 22:08
Моя тема видимо по ошибке была удалена модератором, поэтому пишу заново:
Запустил 16-битный таймер для формирования меандра частотой 500Гц на Atmega328P 16МГц. Аналогичная программа для 8-битного работает, а с 16-битным некорректно. Помогите пожалуйста найти ошибку.
void startTC1(void); void startTC2(void); void setup(void) { pinMode(10, OUTPUT); int i; for(i=0; i<10; i++) {digitalWrite(10,HIGH); delay(1); digitalWrite(10,LOW);delay(1);} delay(500); noInterrupts(); //startTC2(); // работает startTC1(); // работает неправильно interrupts(); } void loop(void){} void startTC1(void) { TCCR1B=0; TCNT1=0; TCCR1A=(1<<WGM11); OCR1A=32000-1; TIMSK1=(1<<OCIE1A); OCR1B=16000-1; TIMSK1|=(1<<OCIE1B); TCCR1B=B001; TIFR1&=0xff ; } ISR (TIMER1_COMPB_vect){ digitalWrite(10,HIGH); } ISR (TIMER1_COMPA_vect){ digitalWrite(10,LOW); } void startTC2(void) { TCCR2B=0; TCNT2=0; TCCR2A=(1<<WGM21); OCR2A=250-1; TIMSK2=(1<<OCIE2A); OCR2B=125-1; TIMSK2|=1<<OCIE1B; TCCR2B=B101; TIFR2&=0xff ; } ISR (TIMER2_COMPB_vect) {digitalWrite(10,HIGH);} ISR (TIMER2_COMPA_vect) {digitalWrite(10,LOW);}
Никуда она не была удалена. Вы её в другом разделе запостили и потеряли. Я Вам там ответил, читайте.