www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Capture Event Timer1


Autor: Martin Sche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Habe einen Atmega32 und wollte den Capture-Interrupt des Timer1 
ausprobieren. Doch leider reagiert er auf kein Signal an ICP1 (PD6).
Hier eder Aussschnitt des Codes, der den Interrupt einstellen soll:

TIMSK=(1<<TICIE1);/*Interrupt bei Signal an ICP1*/
TCCR1B=(1<<ICES1 );/*reagiert auf positive Flanke*/
sei(); /*Interrupt global aktivieren*/

Die Interrupt-Routine schaut so aus
ISR(TIMER1_CAPT_vect) /*Interrupt-R. wird aufgerufen wenn 
Programmierschalter betätigt*/
{
ibuf1=ICR1;
char string[10];

utoa(ibuf1,string,10);
uart_puts(string);
}


Hab ich da was vergessen? Das Programm soll einfach bei einer positiven 
Flanke an ICP1 den Timer-Wert über Rs232 an PC schicken.

Wäre super wenn mir da jemand helfen könnte!

Vielen Dank!

Autor: Fump (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Interrupt-Routine schaut so aus
ISR(TIMER1_CAPT_vect) /*Interrupt-R. wird aufgerufen wenn
Programmierschalter betätigt*/
{
ibuf1=ICR1;
char string[10];

utoa(ibuf1,string,10);
uart_puts(string);
}

Brrr. Ein unmittelbarer Hinweis ist hier zwar nicht möglich. Aber solche 
Dinge wie utoa und insbesondere uart_puts gehören nicht in 
Interrupt-Routinen. Da Deine UART-Routinen wahrscheinlich auch 
Interrupt-getrieben sind könnte das auch Deine Probleme erklären. Da die 
Interrupts innerhalb eines Interrupts gesperrt sind, würde das senden 
aufgehalten werden. Selbst wenn die Routine erstmal in einen Buffer 
schreibt, macht man das trotzdem nicht.

Autor: Andreas W. (geier99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.... ich kann es zwar nicht testen,  aber  uart_puts(string); würe ich 
nicht eine ISR rein tun.

Bye
 Andi

Autor: Fump (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ich hier noch Schalter lese: Schalter fragt man wegen des Prellens 
nicht in Interrupts ein. Jedenfalls nicht ohne Entprellung. Es könnte 
sein, das Deine Senderoutine so oft aufgerufen wird, das da was 
durcheinanderkommt.

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.