Hejsa
Jeg har forsøgt at få svar via programmering.C-nyhedsgruppen, men desværre uden held, så nu prøver jeg her i stedet.
Jeg sidder og leger lidt med AVR-controllere, men har et program, jeg bare ikke kan få til at virke.
Programmet benytter timer0, der tæller til 250 vha. system clock/8. Dette giver en fast tid på 500us. Hver gang Timer 0 laver overflow, vil variablen timecount blive talt 1 op. Når denne er lig 1000, vil den toggle bit 7 på PortA, som dermed blinker ved 1Hz. Problemer er blot. Den lyser konstant, men jeg kan ikke se, hvad der er galt.
Kan nogen ikke hjælpe mig?
#include unsigned int timecount = 0; //global time counter
//Timer 0 overflow ISR interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0 = 6; // start med at tælle fra 6; Tæl til 250 if(++timecount == 1000) { PORTA = PORTA ^ 0x80; // Toggle bit 7 på PortA timecount = 0; // Clear for de næste 500 us } }
void main(void) { DDRA = 0x80; // Port A bit 7 er output TCCR0 = 0x02; // Sæt Timer0 til clock/8 som clock input TCNT0 = 0x00; // Start Timer med værdien 0 i timer // Timer 0 interrupt initialisering TIMSK = 0x01; // Afmask Timer 0 overflow interrupt // Global aktivering af interrupts #asm("sei") while(1) ; }