Använda Pic 18 med avbrott i c, tips?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Använda Pic 18 med avbrott i c, tips?

Inlägg av BJ »

Förut har jag använt Pic 16 och 18
med avbrott i assembler. Det vet jag
hur man gör. Tar register som finns i
alla banker för att spara vissa register
när man går in i avbrottet, och återställer
dom när man går ur.
Inne i avbrottet tittar man vilken bit
det är som har skapat avbrottet, och
gör det man ska.
Nu har ju Pic 18 dubbla avbrott, men
ungefär så går det ju till.

Hur gör man om man vill programmera i c
och använda avbrott?
Kompilator = någon som man kan hämta gratis.
Man har ju lite sämre koll på vad det skapas
för instruktioner när programmet kompileras
mot om man skriver det i assembler direkt.
Men är det ändå användbart?
Om programmet inte är så tidskritiskt.

Finns det någon bra sida som någon kan
peka på? Kanske lite tips?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av TomasL »

Tja, som jag skrev tidigare, MPLABX och dess tillhörande kompilatorer, gratis på hobbynivå.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av Icecap »

Jag använder MPLAB X och XC8, fungerar helt OK. Kompilern tar hand om att spara de nödvendiga bits & bytes.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8412
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av AndersG »

Håller med tidigare talare. Finns massvis med exempel i dokumentationen.
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av BJ »

Okej. Jag får ta en titt. :)
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av Icecap »

Ett exempel, saxat från ett fungerande program:

Kod: Markera allt

void interrupt high_priority HIGH_ISR(void)
  { // High Priority interrupt
  }

void interrupt low_priority ISR(void)
  { // Low Priority interrupt
  }
Såklart kräver detta att det ska vara en PIC med ställbar high/low priority interrupt.
Använder man bara en enkel prioritet ser ISR-deklarationen ut såhär:

Kod: Markera allt

void interrupt ISR(void)
  { // Interrupt
  }
Context-Switching fixar kompilern men man ska fortfarande själv ta hand om att kolla vilket interruptflag som är orsaken till interrupten.
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Använda Pic 18 med avbrott i c, tips?

Inlägg av BJ »

Okej. Det ser ju enkelt och bra ut. :)
Tack.
Skriv svar