Timer1 PIC16F690

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
MrIzoard
Inlägg: 339
Blev medlem: 25 september 2011, 15:33:08
Ort: Göteborg

Timer1 PIC16F690

Inlägg av MrIzoard »

Hej!

Nu har jag suttit och exprimenterat en del med Timer0 och Timer1 och nu börjar det fungera som jag har tänkt men jag förstår inte varför jag måste göra som jag gör med Timer1.

Jag har kopplat upp och programmerat PORTC till 8 LED'ar och vid ett interrupt så räknar jag upp en variabel som jag sedan skickar ut på PORTC.
Igår fick jag det inte att fungera men då lärde jag mig efter att ha kollat i lst-filen att jag bör ha en interrupthantering som är lite bättre :), sagt och gjort så la jag till den men när jag simulerade och hade en breakpoint i den så kom jag bara dit första gången och aldrig mer (sedan stog det bara och tuggade när man körde Run (simulering via MP SIM)).

Jag kollade med lite piggare hjärna idag och såg då att GIE i INTCON hade nollats så om jag i interrupthanteringen sätter den biten igen så fungerar programmet som tänkt.

Är det så att efter interruptet inträffar så behöver man "ladda" om GIE så det är "normalt"? (jag använder bara interna interruptet, inga periferigrejer som knappar och dylikt)

//Ulf L.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Timer1 PIC16F690

Inlägg av sodjan »

Du avslutar väl din ISR med en RETFIE, eller hur ?
MrIzoard
Inlägg: 339
Blev medlem: 25 september 2011, 15:33:08
Ort: Göteborg

Re: Timer1 PIC16F690

Inlägg av MrIzoard »

:vissla:
Tack!
Vet inte hur många gånger jag läst om det men tydligen en gång för lite.....

//Ulf L.
MrIzoard
Inlägg: 339
Blev medlem: 25 september 2011, 15:33:08
Ort: Göteborg

Re: Timer1 PIC16F690

Inlägg av MrIzoard »

Var tvungen att testa vidare med min termometer (ett annat litet projekt) innan jag kunde prova.
Ja det fungerade fint med RETFIE i koden, läste ju till och med hur det fungerade med stackhantering men när jag väl satt vid datorn så var det borta.

//Ulf L.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Timer1 PIC16F690

Inlägg av sodjan »

> läste ju till och med hur det fungerade med stackhantering

Nu var det ju inte problemet (jag antar att du hade en vanlig RETURN där), utan
just hanteringen av GIE. Stacken hanteras på samma sätt av RETURN och RETFIE.
MrIzoard
Inlägg: 339
Blev medlem: 25 september 2011, 15:33:08
Ort: Göteborg

Re: Timer1 PIC16F690

Inlägg av MrIzoard »

När jag var i min interrupthantering så tänkte jag inte på hur jag hade kommit dit (jag provade aldrig med RETURN för att komma åter) utan jag lämnade den med en GOTO till min "huvudsnurra".

Kanon att kunna ställa mina dumma frågor till er, sakta men säkert så lär man sig saker i alla fall.

//Ulf L.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Timer1 PIC16F690

Inlägg av sodjan »

Jaha, ja det är ju nästan hur fel som helst... :-)
Ett interrupt är lite likt ett vanligt CALL/RETURN med
vissa viktiga skillnader...
Skriv svar