Помогите начинающему. Изучаю прерывания и таймеры. Простая "программа-мигалка" - ничерта не работает, помогите найти ошибку, сто раз проверил - все должно работать... Микроконтроллер ATmega8, тактовая частота 7.3728Mhz, использую 16-битный TIMER_COUNTER_1, светодиод прицеплен к PD5, IDE - CodeVisionAVR
#include <mega8.h> unsigned char ctr = 1;
void timer1_init(void) { TCCR1B = 0x00; //stop timer1 TCNT1H = 0x0; TCNT1L = 0x0; TCCR1B = 0x05; //частота переключения Ft/1024=7200; 7200/2^16=0.10986; 1/0.10986=9.1cek TIMSK = 0x04; // TOIE1=0x4 ДЛЯ ATmega8 }
//согласно даташиту 9-е прерывание TIMER1_OVF interrupt [0x9] void timer0_ovf(void) { if (ctr) { PORTD=0xFF; ctr=0x0; } else { PORTD=0x00; ctr=0x1; }
TCNT1H = 0x0; TCNT1L = 0x0; } void main (void) { DDRD = 0xff; PORTD = 0x0; timer1_init(); while(1); }
Спасибо
Сообщение отредактировал kyrogaz - Mar 21 2006, 18:07
|