- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: PIC12F675 TMR0 Overflow Interrupt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.06.2017
    Beiträge
    5

    PIC12F675 TMR0 Overflow Interrupt

    Hallo,

    MPLab, XC8, PIC12F675, Simulator: "Real Pic Simulator"
    ohne große Umschweife, kann mir jemand auf die Sprünge helfen?
    Im Leben noch keinen PIC etc. programmiert habe ich mich nach langem Abwägen für die vorliegende Konfiguration entschieden.
    Doch schon die ersten Schritte bringen mich zur Verzweiflung.
    Es will mir nicht gelingen ein Mini-Programm zum "TMR0 Overflow Interrupt" zu schreiben.
    Einer meiner Ansätze:

    #include <xc.h>
    #define _XTAL_FREQ 4000000
    int R_count;

    void __interrupt(void)
    {
    GP5 = ~GP5; //zur Kontrolle
    INTCON &= ~(1<<T0IF); // clear timer0 overflow bit.
    R_count = 1; // ob der Rest so Ok ist wird interessant,
    GIE = 0; // sobalt der Interrupt überhaupt ausgeführt wird.
    PEIE = 1;

    } //RETFIE wird von XC8 autom. generiert, ebenso GIE=0. (heißt es)


    void main()
    {
    __CONFIG(0x3f70); //?
    TRISIO = 0; // Setzt alle GPIO als Ausgang
    ANSEL = 0; // all ports digital
    CMCON = 7; // Comparator aus
    GPIO = 0x00; // start with all outputs =1
    GIE = 1; // bit7 global interrupt enable
    PEIE = 1; //Enable Peripheral Interrupt
    OPTION_REG = 0x08; // oder auch 0x48;
    R_count = 0;

    TMR0 = 239; // preset for timer register, Counter zählt, doch kein Interrupt bei Überlauf

    while(1)
    { if (R_count == 1 ) {GP1 = 1; R_count = 0;} else GP1 = 0; //Kontrolle Interrupt
    GP0 = ~GP0;
    __delay_us(100);
    }
    }

    Die Ausgänge GPIO werden im Oszilloscope visualisiert.
    Ist GIE = 0; läuft main() wie vorgesehen, Rechtecksignal an GP0
    Ist GIE = 1; meldet "Real Pic Simulator" den Fehler: "out of code"
    der Simulator von OshonSoft zeigt brav das Rechtecksignal an GP0
    aber auch hier kein Interrupt bei TMR0 Überlauf.
    Bisher habe ich noch keinen Interrupt hinbekommen.

    Was muß ich ändern damit der Interrupt angesprochen wird?

    Vielen Dank

    Ergänzung_1
    Bin einen halben Schritt weiter.

    Ich muß anmerken, MPlab empfiehlt die Verwendung von XC8. Doch Die wenigen verfügbaren Erläuterungen / Beispiele verwenden alle Möglichen C Variationen, nur seltenst XC8.
    Das gilt auch für MPlab selbst.
    Seit mehr als zwei Wochen versuche ich mich an der Einarbeitung.

    Gerade eben bin ich auf ein PIC Beispiel gestoßen. Die Interrupt Routine lautet:
    void interrupt priority lowISR(void) // wird vom Compiler moniert
    Paßt natürlich nicht für XC8, merkt man schon wenn nicht #include <xc.h> gegeben ist.
    Dennoch, ich hatte schon einiges probiert, noch ein Versuch:
    void interrupt lowISR(void) // vom Compiler akzeptiert
    void interrupt ISR(void) // vom Compiler akzeptiert

    Diese Beiden bringen mich den Schritt weiter, der Interrupt wird aufgerufen.
    Allerdings, die Interruptroutine springt vom Ende an den Anfang.
    Der Debugger zeigt am Ende ein RETFIE, der Prog.Counter springt aber an Adr. 0x04


    Bei XC8 (finde ich gerade nicht) stand etwas von void __interrupt(void) oder so ähnlich.
    In einem Beispiel finde ich:

    For 8-bit compilers, change any occurrence of the interrupt qualifier e.g., from:
    void interrupt low_priority myLoIsr (void)
    to the following:
    void __interrupt(low_priority) myLoIsr(void)

    Es funktioniert nicht, habe aber noch nicht alle Variationen durch.
    Vielleicht hat doch jemand Erfahrung damit.


    Gruß juppkk
    Geändert von juppkk (30.06.2017 um 17:22 Uhr)

Ähnliche Themen

  1. Seltsames Verhalten Timer 0 overflow interrupt
    Von Markus87 im Forum Assembler-Programmierung
    Antworten: 6
    Letzter Beitrag: 24.08.2011, 20:27
  2. Kein Overflow Interrupt für Timer0
    Von eli45 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 05.06.2007, 21:56
  3. Timer2 overflow Interrupt will nicht
    Von BomberD im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 30.01.2006, 17:37
  4. Overflow Interrupt für Timer
    Von Maestro im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 28.09.2004, 18:02
  5. [ERLEDIGT] Analogverarbeitung und TMR0 Interrupt am 12F675
    Von Steffen35 im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 09.09.2004, 22:05

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen