HI, ich möchte eigendlich was ganz einfaches machen: einen Interrupt auslösen. und zwar von timer0 (16 bit modus) Welche bits muss ich hierzu setzen? INTCONbits.GIE = 1; // enables/disables all interrupt sources RCONbits.IPEN = 0; INTCONbits.TMR0IE = 1; // IRQ aktiv das dürfte doch schon alles gewesen sein. ich habe nur diesen einen interrupt, also nix mit high oder low. laut datenblatt soll nun an die stelle 0x000008 gesprungen werden. dort ist ne while(1); und somit soll meine LED aufören zu blinken. er springt aber einfach nicht in die ISR!!! wiso? habe schon alles probiert. kan mir jemand bitte behilflich sein? lg
Ja, könnte nicht schaden, aber eher auf internen Takt umschalten. Die Bits dort sind bei Reset alle auf 1. Für internen Takt muss T0CS aber 0 sein. Auch T08BIT musst du auf 0 setzen für 16 Bit Timer. Prescaler nach deinem belieben.
also der timer ist richtig konfiguriert. in einer funktion frage ich auch das bit if(INTCONbits.TMR0IF) ab (setze zb einen breakpoint). das geht (falg gesetzt). wie schon gesagt es wird nicht in die ISR gesprungen. woran liegt das? am T0CON nicht.
Alle Bedingungen sind erfüllt das in die ISR gesprungen wird. An dieser Stelle würde ich mir das Assemblerlisting anschauen und nachsehen was der Compiler aus der ISR Routine gemacht hat. Ich vermute da liegt der Hund begraben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.