mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 I/O Taktvorteiler


Autor: kleiner Affe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Taktluhser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian S. (amateur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häh?

Geht's nicht etwas verständlicher?

Muss aber nicht sein...

Autor: kleiner Affe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kleiner Affe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefanus F. (stefanus)
Datum:

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

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: kleiner Affe (Gast)
Datum:

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

Gruss
Jürg

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.