/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Problemer med Timer program AVR
Fra : Tomas .


Dato : 15-03-07 23:43

Hejsa

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 <90s8515.h>
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)
;
}


Mvh.

Tomas


 
 
Ove Kjeldgaard (16-03-2007)
Kommentar
Fra : Ove Kjeldgaard


Dato : 16-03-07 16:55

Tomas . <huttelbuttel@hotmail.com> wrote:

>Hejsa
>
>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.
>

Skal du ikke selv clear'e interruptflaget i interruptrutinen?

--
Med venlig hilsen, Ove Kjeldgaard, nospam AT privat DOT dk
Natur og Friluftsliv: <http://hiker.dk>

Tomas . (16-03-2007)
Kommentar
Fra : Tomas .


Dato : 16-03-07 18:31

Ove Kjeldgaard <ReadMyEmail@The.Signature> skrev:
>Tomas . <huttelbuttel@hotmail.com> wrote:
>
>>Hejsa
>>
>>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.
>>
>
>Skal du ikke selv clear'e
>interruptflaget i
>interruptrutinen?

Det kan jeg ikke lige svare dig på, det har jeg ikke arbejdet
nok med interrupts til at kunne svare på. Hvordan gør jeg det?

--
Mvh.

Tomas


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste