www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik PIC 12F683 TMR0 Overflow erkennen

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

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: Gerhard Gunzelmann (sgssn)
Datum: 17.04.2008 13:44

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: 17.04.2008 13:54

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: 17.04.2008 13:59

@ 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: 17.04.2008 14:13

Super!

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

Grüße

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net