Atmega8 I/O Taktvorteiler

Gast #4735937
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren