mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Input Capture an Mega8535


Autor: A.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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-Tu...



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.

    }

}

Autor: A.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, ich sollte noch erwähnen, dass ich den ICP Pin konstant auf Masse 
liegen lasse.

Autor: A.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Fehler gefunden.

Das Bit heisst beim ATMega8535 offiziell:  TICIE1 .

MfG Spess

Autor: A.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dankesehr.

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.