Input Capture an Mega8535

Gast #1888136
Lesenswert?
• ▲
▼
Hi,

ich habe folgenden Code, bei dem Zunächst AVR Studio TICIE nicht 
erkennt.

Was soll passieren?

Es soll ein Timer1 gestartet werden, wenn eine fallende Flanke erkannt 
wird. Je nachdem, wird der Timer auf 0 gesetzt (entscheidung per flag) 
und gezählt, bis der nächste interrupt durch fallende flanke kommt.
Der Timer wird gestoppt, Interrupts ausgeschaltet, der Wert des 
Registers gespeichert.

Der Code funktioniert allerdings nicht korrekt.
Der Mikrocontroller scheint "neu zu starten".
(Es ist ein LCD angeschlossen und dieses wird nach ca. 3 s neu 
initialisiert.




Generell wird der Timer aktiviert. In meiner main funktion passiert dann 
nichts mehr.
Sinn ist es, eine zeit  von 20-40ms zu messen.
Habe ich evtl. ein Interrupt flag falsch gesetzt?
Ich habe mich dabei an die Beschreibung von hier gehalten:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#16-Bit_Timer.2FCounter



void TIMER1_enable(void){
TCCR1B&=~(1<<CS12);
TCCR1B|=(1<<CS11);
TCCR1B|=(1<<CS10);

TCCR1B&=~(1<<ICES1);//Fallende Flanke
TIMSK|=(1<<TICIE);
sei();
}



ISR(TIMER1_CAPT_vect){


  if(flag==1){
  time=ICR1;//Wert sichern

  //timer stoppen Interrupts ausschalten
     cli();
   TIMSK&=~(1<<TICIE);
  TCCR1B&=~(1<<CS12);
  TCCR1B&=~(1<<CS11);
  TCCR1B&=~(1<<CS10);

  flag=0;
  COMMAND(LCD_COMMAND_CLEAR);

  //gespeichertern Wert benutzen
  TIMER1_enable();
  //danach Timer starten, interrupts einschalten
  }
     if(flag==0){
     //Timer Zählregister Nullen
    TCNT1H=0x00;
    TCNT1L=0x00;

    //Timer läuft weiter.

    }

}
Gast #1888190
Lesenswert?
• ▲
▼
Hi,

Fehler gefunden.

Laut dem Tutorial ist es beim Mega 8 wohl das Bit nr 3.

Ich habe, da mein AVR STUDIO das TICIE nicht erkennt einen define 
gemacht mit 3.

Ein Blick ins Datenblatt sagt mir, dass es bit 5 ist.
Nun funktioniert es :)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.