www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 12F683 TMR0 Overflow erkennen


Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite mich gerade in PIC's mit Assembler ein. Ich möchte einen 
Interrupt durch einen Timer0 Overflow erkennen, sorry für die 
Anfängerfrage:

Aber wie kann ich sehen wann ein Interrupt mit einem Overflow 
stattgefunden hat, gibt es da ein bestimmtes Register wo ein Flag 
gesetzt wird ? Ich sehe nur ein INTCON-Register mit dem TOIF-Flag, ist 
es zufällig dieses Flag oder gibt es ein anderes im Status-Register ?

Ich denke mal zum initialisieren wird dies hier ja ausreichen:
  banksel  OPTION_REG      
  bsf  OPTION_REG,INTEDG  
  bcf  INTCON,INTF
  bsf  INTCON,INTE
  bsf  INTCON,TOIE  
  ;bsf  INTCON,TOIF       ;muss das hier gesetzt werden ? 
  bcf     STATUS, RP0

Danke im Voraus
Gruß

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

genau das:

INTCON,TOIF zeigt an, wenn ein Timer-Ereignis stattgefunden hat, also 
nicht setzen, sondern zurücksetzen und warten bis es gesetzt wurde. Im 
Interruptbetrieb wird beim Setzen dieses Flags der Interrupt ausgelöst.

Gerhard

Autor: fragliche begründung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TMR1IF oder TMR0IF sind die bits, die gesetzt werden.


bsp:

interrupt serverX( void)
{
    int_save_registers
    if (TMR1IF)         // T1 übergelaufen?
    {
        TMR1IF = 0;
        T1OSCEN = 0;
        TMR1CS = 0;
        TMR1H = 238;    //Counterregister befüllen(16 bit timer aus 2 
Byte
        TMR1L = 120;
        TMR1ON = 1;
        GIE = 1;        // Interrupts erlauben
        PEIE = 1;
        TMR1IE = 1;     // Interrupt von T1 erlauben
        TMR1IF = 0;     // Overflowbit rücksetzen!!!!!!!
        if (!sleep_mode)
        {
            send_protocol();
        }

     }
    int_restore_registers
}                     // Interrupt-Routine zu ende

Autor: Latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ fragliche begründung:
Was denn nun? C oder ASM? T0 oder T1 ?!?


@ Wolf:
Ja, T0IF ist das Overflow-Bit! Kann ich also auch nur bestätigen!

lass die zeile weg, da das ja ein Overflow-bit ist, welches auch nur bei 
einem Overflow gesetzt werden soll, sonst wäre es ja sinnfrei!

denk an das Rücksetzen im Interrupt!

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super!

Danke für eure schnelle Antwort, es klappt jetzt :-)

Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.