PIC 12F683 TMR0 Overflow erkennen

OP (Firma: Monster AG) #845258
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:
1
  banksel  OPTION_REG      
2
  bsf  OPTION_REG,INTEDG  
3
  bcf  INTCON,INTF
4
  bsf  INTCON,INTE
5
  bsf  INTCON,TOIE  
6
  ;bsf  INTCON,TOIF       ;muss das hier gesetzt werden ? 
7
  bcf     STATUS, RP0

Danke im Voraus
Gruß
Gast #845318
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
Gast #845324
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren