Sida 1 av 1

Interrupt, hur göra?

Postat: 1 juni 2004, 19:39:35
av gvs
Mitt ekolod igen....

har en interruptrutin som jag vet att den anropas, men sen kommer jag inte vidare.
pseudo kod:

enable interrupt
goto wait
---
---
wait
goto $ ; står här och väntar på interrupt
---
---

slut på pseudo kod.
Kommer till wait och hoppar sen till interrupt rutinen. Det funkar perfa, kommer sen även till retfie, så den ska hoppa tillbaka. Problemet är att jag inte kommer förbi "goto $"
Antagligen inte så konstigt... men hur ska jag gör min delay? den ska stå och göra inget tills interrupten sen ska den fortsätta efter delayen. det är capture eller timer interrupt jag väntar på.

Postat: 1 juni 2004, 19:46:24
av matseng
Såhär typ

Kod: Markera allt

 Sätt Flagga=0
 Enabla Interrupts
VäntLoop:
 Gå till Väntloop om Flagga=0
 ....
 .... Fortsätt exekveringen här
 ....


Interrupt:
 Sätt Flagga=1
 Återvänd från interrupt med RETFIE

Postat: 1 juni 2004, 19:47:13
av cyr
Om det bara är en delay i huvudloopen du vill uppnå så behöver du inte ens någon interrupt-rutin. Gör en loop som körs tills interrupt-flaggan sätts och sen clearar denna och fortsätter.

Alternativt sätt en egen flagga i interrupt-rutinen som du kollar i loopen.

edit: Mr. M hann före, med alternativ två menar jag samma sak som ovanstående.

Postat: 1 juni 2004, 19:49:06
av mrmike
Då tycker jag det låter som att det är bättre om du nollställer interrupt enable-bitarna (t.ex. TMR0IE) och istället för "goto $" pollar interruptflaggorna (t.ex. TMR0IF) istället. De sätts även om interrupten är inställda att inte orsaka nåt interrupt (hmm...)

edit: doh!

Postat: 1 juni 2004, 19:56:29
av gvs
Hm.. tror att jag behöver interrupten ska ju fånga vad som händer på capture. ska testa med några flaggor

Postat: 5 juni 2004, 10:49:31
av frax
Kan man inte sätta den in Sleep-läge, den vaknar väl upp när en interrupt kickar in? Spar lite ström också :)

/frax