Atmega8 I/O Taktvorteiler

Gast #4735937
Hallo zusammen,

Ich bin gerade dabei mich mit einem Atmega8 in die C Programmierung von 
uC einzuarbeiten. Im Datenblatt wird ersichtlich das dieser mit dem I/O 
Takt heraufgezählt wird, jedoch find ich nirgends wie man diesen I/O 
Takt mit einem Vorteiler versehen kann.
Ist dies überhaupt möglich ?

Vielen Dank für eure Hilfe.

Gruss
Jürg
Gast #4735960
Unter dem Kapitel 10.3 steht ins deutsche übersetzt:

Der Zähler wird bei jedem Takt von clkT0 um 1 erhöht. Der Takt clkT0 
kann durch eine interne oder externe Quelle erzeugt werden, die mit den 
Bits CS02 bis CS00 ausgewählt wird. Wenn keine Taktquelle ausgewählt ist 
(CS02 bis CS00 = 0), wird der Timer/Counter angehalten.
Gast #4735967
Sorry für die Unverständlichkeit. Mein Kopf ist wohl auch nicht mehr 
ganz so frisch. . .

Ich möchte alle 5ms mit dem Timer0 ein Interrupt erzeugen. So wies ich 
das verstehe kann man nun mit den CS2 bis CS0 Bits im TCCR0 Register die 
Taktquelle wählen, was ich auf I/O Takt gestellt habe. Nun frage ich 
mich jedoch, wo man diesen I/O Takt einstellen kann. (Momentan ist er 
gleich schnell wie der Quarz), doch hoffe ich diesen noch mit 256 teilen 
zu können.

Gruss
Jürg
Gast #4735976
Mit irgendwelchen Clocks werden irgenwelche Zähler hoch-
(manchmal auch runter-) gezählt.

Was willst du denn mit einem Vorteiler versehen?

Die Turbo-Taste, wie damals bei 286er-PCs ist bei µCs nicht üblich.
Da überlegt man sich vorher, wie schnell er sein muss und beschaltet,
oder (internal RC-Oscillator) konfiguriert ihn entsprechend.

Das Stromsparen geht eher über SLEEP-Modes etc.
Moderator Persönliche Seite #4735985
kleiner Affe schrieb:

> Ich möchte alle 5ms mit dem Timer0 ein Interrupt erzeugen.

OK.

> So wies ich
> das verstehe kann man nun mit den CS2 bis CS0 Bits im TCCR0 Register die
> Taktquelle wählen,

Ja.

> was ich auf I/O Takt gestellt habe.

Also ohne Prescaler.

> Nun frage ich
> mich jedoch, wo man diesen I/O Takt einstellen kann.

Der IO-Takt ist in der Frequenz immer gleich dem CPU-Takt.

Der einzige Grund, beide namentlich zu unterscheiden ist, dass sie
in den verschiedenen Schlaf-Möglichkeiten unterschiedlich behandelt
werden.

> (Momentan ist er
> gleich schnell wie der Quarz), doch hoffe ich diesen noch mit 256 teilen
> zu können.

Der ATmega8 hat keinerlei Vorteiler für den Takt, anders als seine
(pinkompatiblen) Nachfolgemodelle (ATmega88 etc.).

Wenn es unbedingt der Timer0 sein muss, dann würde ich dir ernsthaft
zu etwas Modernerem als einem ATmega8 raten.  Der Timer0 dort hat
als einzige Interruptmöglichkeit den Overflow-Interrupt.  Wenn man
den Interrupt nicht nur aller 256 Zählertakte auslösen lassen will,
dann muss man in der ISR den Zähler neu vorladen.  Jegliche
Verzögerung dieser Aktion (durch vorübergehende Interruptsperre)
führt zu Jitter und längeren Taktzeiten.  Neuere AVRs haben hier
einen so genannten CTC-Modus (Clear Timer on Compare match), bei
dem sich „ungerade“ Teilerfaktoren durch die Hardware erledigen
lassen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.