mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer Probleme


Autor: Stephan Schwarz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  ich muss mal eine neues posting aufmachen, weil sich das Topic
doch geändert hat.

Ich betreibe 2 Timer im Atmega8 parallel.
Timer0 um die Abgelaufene Zeit des Programmes zu ermitteln.
Timer1 um ein Rechteck zu generieren. Dieser Timer läuft im
CTC-Mode. Also toggelt er, wenn ein Compare Match vorliegt am OC1A
Pin.
In Main berechnet eine Formel, in Abhängigkeit der aktuellen
Programmlaufzeit, einen Wert, den ich in das OCR1A Register schreibe.
Dadurch soll sich die Impulsbreite des Signals an OC1A ändern.
Soviel zur Theorie!
1. Ich bekomme keinen Rückwert aus der Overflow0 ISR
2. Main wird im Ablauf extrem eingeschränkt. Ich mach da zwar nur eine
LED an und aus, aber das Timming stimmt da nicht mehr. Das ist zwar
nicht wichtig, aber doch seltsam für mich.

Sobald ich den Timer 1 deaktiviere funktioniert auch die Komunikation
mir der Overflow0 ISR und ich kann den dort errechenten Wert auch lesen
und nutzen. Ausserdem funktioniert dann der Ablauf in Main auch wieder.
(Dealyzeit stimmen, was sonst nicht der Fall ist).

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, ich sehe keine ISR für den OCR-Interrupt, obwohl freigegeben.
Ausserdem gehören keine delays in eine ISR, das lässt sich eigentlich
immer umgehen.

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Hm, ich sehe keine ISR für den OCR-Interrupt, obwohl freigegeben."

du redest doch hiervon, oder?
TIMSK=1<<OCIE1A;
Hab gedacht ich muss den OCIE1A freischalten, damit der Togglemode am
OC1A pin funktioniert?

Aber dafür reicht wohl auch
TCCR1B=  (1<<WGM12|1<<CS11)

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nö, musste nicht.
Wenn du den Int allerdings freigibst, sollte auch eine ISR dafür da
sein. Mit Glück setzt dein Compiler ein reti an die entsprechende
Stelle, drauf verlassen würde ich mich nicht, zumindest mal ins Listing
schauen.
Das Schreiben ins OCR-Register solltest du allerdings mit dem
Timerstand synchronisieren, hatte ich dir schon geschrieben. Ideal
dafür ist der OCR-Int.

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.