Får inte Timer0 att snurra

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Får inte Timer0 att snurra

Inlägg av ankan »

Förstår inte vad jag har missat. Har kollat databladet flera gånger för att kolla att jag inte har glömt något register men jag kommer inte fram till annat än konfen nedan:

OPTION_REG = 0x07;
INTCON.TMR0IF=0;
INTCON.TMR0IE=1;

PCL snurrar men TMR0 står helt stilla.

Kör koden på en 16F88 med intern oscillator som tickar i 4Mhz.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Först en generell sak...

När man sätter värden på register som igentligen inte är "värden" utan
inställningar av olika "bitar", så är det *mycket* tydligare om man
anger värdet binärt , OPTION_REG = b'00000111'.
Det går mycket snabbare att jämföra med databladet !
I just detta fall med h'07' så var det enkelt, man ibland är det inte
lika tydligt...

Hur som helst...

> ...men TMR0 står helt stilla.

Hur vet du det ?
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Mjukvaru debuggar i MikroC. Kan tyvärr inte hårdvarudebugga ännu eftersom jag inte har fått utvecklingskortet.

Hur kan jag kolla om den snurrar som den ska eller vad som är fel?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Om du har en debugger som fungerar, så borde man kunna
se på TMR0 att det "tickar" fram. Obs att de kpör med 1:256 prescaler,
så det tar ett tag innan det händer något...
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Ändrade prescalen för att kolla men det hjälpte inte, TMR0 står stilla. Testade en kod som var för att testa TMR0 som medföljde kompilatorn men den fick inte TMR0 att snurra heller.

I och med att det är mjukvarudebugger så antar jag att det inte spelar någon roll vilken oscillatorkälla man väljer men jag har testat olika utan skillnad.

Vet inte vad jag ska kolla nu.
Användarvisningsbild
lgrfbs
Inlägg: 7320
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

Tycker att du ska bekriv felet i debuggern på mikroC:s forum för att de är
snabba på att fix såna här saker.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Testade Proteus VSM. Där snurrar Timer0 som den ska så det måste vara något med debuggern i MikroC´s kompilator.

Så jag får testa i morgon att programmera något enkelt exempel där Timer0 används för att se var felet kan vara.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Det var Timer1 som spökade. Trots att jag hade satt PIE1.TMR1IE=0; så gav den interrupt. Det hjälpte dock när jag satte T1CON.TMR1ON=0;

Ska Timer1 ge trots att PIE1.TMR1IE=0; ?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

xxxxF flaggorna sätts *alltid* (när t.ex en timer "slår runt"). Det går inte att stoppa.
xxxxE flaggorna (om de är = "0") bara hindrar att ISR'en anropas.

Det är därför som man bör testa båda flaggorna i ISR'en om man har
interrupt från flera källor...
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Det gör ingen skada om man anger vilken plattform man jobbar på redan i trådens titel. :wink:
Skriv svar