Forum: Mikrocontroller und Digitale Elektronik Atmega8 I/O Taktvorteiler


von kleiner Affe (Gast)


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

: Bearbeitet durch Moderator
von Taktluhser (Gast)


Lesenswert?

kleiner Affe schrieb:
> Im Datenblatt wird ersichtlich das dieser mit dem I/O
> Takt heraufgezählt wird

Wo ist das ersichtlich? Was bedeuted "mit Takt heraufgezählt"

Würg

von Sebastian S. (amateur)


Lesenswert?

Häh?

Geht's nicht etwas verständlicher?

Muss aber nicht sein...

von kleiner Affe (Gast)


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.

von kleiner Affe (Gast)


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

von Jakob (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

Klar geht das, und zwar mit den Bit CS00 CS01 und CS02 im Register 
TCCR0.

von Jakob (Gast)


Lesenswert?

Ja nun, wenn du schon TCCR0 gefunden hast.

Da gibt es doch 5 Möglichkeiten den I/O Takt zu nutzen:
1/1, 1/8, 1/64, 1/256, 1/1024

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

: Bearbeitet durch Moderator
von kleiner Affe (Gast)


Lesenswert?

Geniale Antwort. Kurz, und dennoch mit allen wünschenswerten 
Informationen.
Ich danke dir :-)

Gruss
Jürg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.