TIMER1 macht permanent RESET - warum?

OP #1225323
Hallo zusammen,

Ich experimentiere das erste Mal damit ein PWM Signal einzulesen und 
zwar mit Timer 1 und dem Input Capture Pin des ATMEGA16.

Ich hab mir also überlegt wie das gehen sollte und muss beim ersten Test 
feststellen dass der Controller jetzt permanent resetet! Ich versteh nur 
überhaupt nicht wie das gehen soll? Hier der Code dazu, hat jemand eine 
Idee warum das passiert?
1
int main(void)
2
{
3
  init();
4
  sei();
5

6
  // Rauschunterdrückung (Bit7) und steigende Flanke (Bit6) erkennen   und CPU-Takt / 8 (enstspr 0,57us)
7
  TCCR1B  = 0b11000010;
8

9
  // Interrupt für ICP (Input Capture Pin) einschalten
10
  TIMSK   = 0b00001000;
11
(...)


Hier setze ich die Timer Register und in der ISR(TIMER1_CAPT_vect) 
subtrahiere ich dann endwert und startwert.

Was kann also hier zu einem permanent auftretenden Reset führen???
#1225327
Du setzt das falsche Bit, nämlich
OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable.
Also wird ein Interrupt ohen ISR ausgelöst->Neustart.
Ich nehme mal an, du willst stattdessen
TICIE1: Timer/Counter1, Input Capture Interrupt Enable
setzen...
Dann mach es doch so:
TIMSK|=(1<<TICIE1);
Dabei kann man sich nicht mehr so leicht um ein Bit verzählen...
#1225553
Noch ein Tipp, um solche Fehler im Zusammenhang mit irrtümlich aktiven 
Interrupts besser zu finden:
Man kann eine ISR definieren, die alle Interrupts ohne eigene ISR 
abfängt. Das geht mit
ISR(BADISR_vect )
{
}
Darin kann man dann zB eine Warnmeldung per LED/LCD/wasauchimmer 
ausgeben lassen, dass ein nicht eingeplanter Interrupt ausgelöst wurde.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.