mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 96 cyc. bei Prescaler 8. Welchen Wert für OCR1A?


Autor: Johannes Permoser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

mein timer1 soll nach 96 taktzyklen einen overflow interrupt auslösen.
deshalb habe ich ihn in den ctc-modus versetzt und den prescaler auf 8
eingestellt.

nun frag sich nur noch was der richtige wert für ocr1a ist:

kommt da jetzt 96/8 = 12 rein, oder (96/8)-1=11 rein, weil der timer ja
bei 0 anfängt, und, wenn er auf 11 steht, diese noch ganz auszählt?

mein hilfsprogramm (avrcalc) gibt mir die erste lösung, ich tendiere
eher zur zweiten.

mfg, johannes

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
12 müsste passen: Der Timer wird zurückgesetzt, sobald er 12 wird. Und
von 0.0 bis 12.0 sind es genau 12 Zyklen.

Autor: Johannes Permoser (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hab nochmal ein bisschen im manual des atmega8 gesucht und das diagramm
im anhang gefunden.

daraus kann ich entnehmen, dass, wenn im TCNT 12 steht, nochmal 8
zyklen durchlaufen werden. und dass, wenn TCNT = 0, auch nochmal 8
zyklen durchlaufen werden.

=> TCNT von 0-11: 12*8 cyc., wenn TCNT = 12: 8 cyc.
=> insgesamt 13*8 = 104 cyc.
=> richtiger wert für OCR1A wäre 11

hab ich das richtig interpretiert?

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
11 ist schon richtig, da der 16-bit-Timer bei 0 auf low bleibt, bei 1
für 8 Taktzyklen auf high und erst bei 65535 ganz auf high bleibt. Es
wird immer mit 0 angefangen zu zählen.
Du kannst da ja mit der Stopuhr im AVR-Studio ausmessen.

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum nimmst nicht CLK direk und stellst den ctc auf 96 ??

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder frag' den Zählerstand in der INT-Funktion ab, dann weißt du's
genau!

Autor: Johannes Permoser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> warum nimmst nicht CLK direk und stellst den ctc auf 96 ??

weil auch das falsch wäre :-) (müsste auf 95 stellen)

warum ich mit prescaler 8 arbeite?
keine ahnung, wollte einfach die fähigkeiten des µC voll ausnutzen :-)

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von miraus 96... aber den prescaler nur nutzen weil er da ist = ??

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm.. sollte 96 oder 95 heißen :(
Auf jedenfall wüßte ich nicht wozu man hier ne Prescaler braucht.

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob man den benutzt oder nicht is' wurscht! Das Ergebnis ist das
Gleiche! Würde ich wegen nicht Teilbarer Werte benutzen, ansonsten,
wie's beliebt ..

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.