Går det att generera ett avbrott med outputcompare på en P

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Stenmark
Inlägg: 54
Blev medlem: 7 juli 2004, 22:51:14
Kontakt:

Går det att generera ett avbrott med outputcompare på en P

Inlägg av Stenmark »

Jag skulle vilja ha igång output compare på en PIC men jag lyckas inte. Jag vill ha ett avbrott ska genereras till PIC:en med jämna tidsintervall och då tänkte jag använda timer1 och output compare genom att läsa av värdet och lägga till den tid jag vill vänta och sen skriva det värdet till output compare registret.

I manualen så står det att manska kunna generera "software interrupts". Betyder inte detta att avbrottsrutinen anropas när ett software interrupt framkallas eller har jag missförstått hela skiten och software interrupt är något helt annat?

Är det någon som vet hur man får detta att funka eller på kan komma på något annat smart sätt att få programmet att avbrytas med jämna mellanrum?

Här är lite pseudo C kod som jag använde för att initialisera avbrottet.

Kod: Markera allt

PIR1 = 0                    //reset CCP1IF
CCP1CON = 0x0a;	//generate software interrupt on compare match
PIE1 = 0x04;	//CCP interrupt enable
INTCON =  0x80;       // Allow intrreupts 
GIE = 1;                  //enable global interrupts
T1CON = TMR1ON;	//enable timer1
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Vilken PIC?

Tror du har en bit till att sätta i INTCON, som maskar "peripheral interrupts".
Fast den kanske är på som standard, kommer inte ihåg...

Om du bara vill få ett interrupt med jämna mellanrum så finns det "overflow interrupt" på varje timer. Dvs ett interrupt när den räknat upp till 0xff(ff) och går runt till 0 igen. Du kan ladda timern med ett nytt lämpligt värde i din interrupt-rutin eller använda en timer med periodregister om du har någon...
Stenmark
Inlägg: 54
Blev medlem: 7 juli 2004, 22:51:14
Kontakt:

Inlägg av Stenmark »

Jag använder 16f628.
Att använda overflowen och skriva ett värde till timern. Det är nog värt att testa.
Ska titta på INTCON biten också, imorrn :)
Jag är alldeles för irriterad på att det inte funkar nu så det är nog bäst att läta bli innan något går sönder.
Stenmark
Inlägg: 54
Blev medlem: 7 juli 2004, 22:51:14
Kontakt:

Inlägg av Stenmark »

Tack för det Cyr.
Det funkade när jag enablade Pheriperal interrupt.
Men jag tror jag kör på ditt förslag med overflow ändå. Det blir mindre kod på det sättet. Man slipper ju läsa av räknaren och addera värden. Nu är det ju bara att skriva samma värde till räknaren varje gång.
Skriv svar