www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega8535 Timer1


Autor: Germo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hab da mal ne frage bezüglich des Timer1:

ich habe an meinem µc einen externen Oszillator mit 8MHz angeschlossen.
Die beiden Timer 0 und 2 laufen auch einwandfrei damit ... der Timer1
allerdings nicht. Der läuft rein rechnerisch mit einem Takt von 1Mhz.
Hat evtl wer Ahnung wie das zustande kommt? der interne Takt des µc is
ja auch bei 8MHz ...

Autor: Jens D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du den Prescaler gesetzt??
Den IOtakt (IOclock) kannst du teilen, um damit die Teiler
anzusteuern..
Gruss

Autor: Germo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also
externer takt von 8 MHz mit einem Prescaler von 1024 = 7812/sec (sofern
ich  noch richtig rechnen kann ...

einstellen wollte ich den timer (testweise) auf eine sec und komme da
mit den werten im register TCNT
H: E1
L: 7C

auf 7811 ...

die LED geht aber erst nach ca 8 sec an und durch rückrechnen bin ich
darauf gekommen das der timer mit 1MHz laufen muss (klar) - erklären
kann ich mir dies jedoch nicht. Auch mit den werten bei angenommenen
1MHz
H: FC
L: 30
klappt es dann tadellos und die LED geht nach 1 sec an

Autor: Thorsten Fritzke (thorsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen.

Ich denke da könnte noch die DIV/8 Fuse programmiert sein.
Oder greift diese nur, wenn man den internen Oszillator benutzt?

mfg

Autor: Germo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann ja eigentlich nicht sein da die anderen timer mit den 8 MHz
einwandfrei funktionieren - es sei denn der timer1 nutzt den internen
während die timer 0 und 2 den externen oszillator nutzen

aber ich schau das nochmal nach, danke

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann vor allem aber deshalb nicht sein, weil der 8535 keine Div8-Fuse
hat. War nämlich auch mein erster Gedanke, aber dann hab ich im
Datenblatt nachgesehen.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du den OVF-Int nimmst, musst du den Timer nicht auf 7812
voreinstellen, sondern auf 65536-7812. Denn der Timer zählt aufwärts
und nicht abwärts.

Besser ist aber die Nutzung des OCR-Interrupts.
Da liest du in der ISR den Wert des OCR1A(H/L) aus, addierst dein
Intervall (die 7812) dazu und schreibst den Wert nach OCR1A(H/L)
zurück.
Auf diese Art läuft Timer1 durch und du kannst auch noch OCR1B und ICP
benutzen, ohne dass die sich gegenseitig stören.

...

Autor: Germo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja ich habe das vlt ein bisschen umständlich formuliert: ich habe
natürlich einen wert von 65536 - 7812 eingestellt bzw hat mit iccavr
diese 'arbeit' abgenommen und dennoch komme ich auf 8 sec ... auch
wenn ich den ocr1 bzw den compare interupt verwende komme ich auf 8 sec
... zur not muss ich halt für den timer umrechnen und mit 1MHz rechnen
anstelle von 8 ... die div8 fuse gibts im übrigen nicht wie oben schon
steht

---------
Computer lösen Probleme, die man ohne sie nicht hätte ...

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.