ATMEGA: Ausgabe halbe Systemfrequenz

OP #1857241
Lesenswert?

Hallo Leute,

ist erst einmal nur Neugier für ein mögliches Projekt. Ich stehe gerade 
auf dem Schlauch zum Datenblatt. Es geht um ATMEGA644P/ATMEGA1284P, aber 
das ist wohl nicht entscheidend.

Ist es möglich, mit Hilfe eines 8-Bit-Timers (z.B. TIMER0) an einem Pin 
den halben Systemtakt auszugeben? Und wenn ja, wie macht man das am 
geschicktesten? Ich sehe da zwei Möglichkeiten, weiß aber nicht, ob die 
funktionieren würden.

1.) OCR0A auf 0x00, den Timer auf CTC und OC0A auf "Toogle on Compare 
Match" setzen. Ausgang wäre dann OC0A. Der Timerwert immer 0x00 (geht 
das?)
2.) OCR0A auf 0x01, den Timer auf CTC, OCR0B auf 0x01 und OC0B auf 
"Clear OC0B on Compare Match, set OC0B at BOTTOM" setzen. Ausgang wäre 
dann OC0B, der Timer immer zwischen 0x00 und 0x01 wechseln.

Vielen Dank für jede Antwort.

Gruß, DetlevT
Moderator Persönliche Seite #1857337
Lesenswert?

Joachim A. schrieb:
> und du hast einen Timer für sinnvollere
> Sachen frei

Andererseits muss ich zugeben, dass ich bislang wohl noch nie beide
8-bit-Timer der großen AVRs benötigt habe.  Der Vorteil der Lösung
mit dem Timer ist, dass man die Frequenz noch (in Grenzen) variieren
kann.  So funktioniert ja die Erzeugung des Target-Takts auf dem
STK500.
OP #1857369
Lesenswert?

Joachim A. schrieb:
> So würd ich das auch machen. Dann kannst du noch einen beliebigen
> Frequenzteiler dahinter packen und du hast einen Timer für sinnvollere
> Sachen frei :)

Diese zusätzliche Hardware will ich Geizhals ja gerade einsparen. Am 
liebsten wäre es mir sogar, wenn es einen Pin gäbe, der sich via 
Software zwischen vollem und halben Systemtakt umschalten lässt. Das es 
so etwas nicht gibt, habe ich aber schon allein herausgefunden. ;)

Fiktiv etwas zum Tüfteln für diejenigen, denen so etwas Spaß macht und 
mit dem heutigen Sudoko schon fertig sind: Nehmen wir an, ich würde 
ein(!) zusätzliches IC spendieren wollen. Fällt euch eine Schaltung ein 
mit folgenden Bedingungen:

1.) Zur Verfügung stehen der volle Takt aus einem Quarzoszillator 
(25MHz) sowie ein Signal aus einem ATMEGA-Pin. Letzterer könnte low, 
high oder ein Takt mit halber Frequenz sein, wegen der Laufzeiten dann 
aber wohl etwas phasenverschoben.
2.) Je nach Konfiguration dieses Pins soll die Schaltung entweder den 
vollen oder den halben Systemtakt ausgeben.
3.) High und low müssen mindestens 16ns dauern, ein Duty-Cycle von 50% 
ist nicht(!) nötig.
4.) Das ganze muss sich mit einem einzigen IC realisieren lassen, , 
vorzugsweise ein 74HCXXXX, nach Möglichkeit keine weiteren Komponenten 
(z.B. RC-Glieder)
5.) Es dürfen nur ICs verwendet werden, die bei Reichelt verfügbar sind.

Ist wie gesagt mehr eine Denksportaufgabe als eine wirkliche Option. 
Eher würde ich am Ende einen Jumper nehmen, das würde eigentlich 
genügen.

Gruß, DetlevT
OP #1857854
Lesenswert?

Hallo ihr Tüftler,

noch ein Nachklapp zur Info, vielleicht braucht es ja eines Tages noch 
jemand. Ich denke, ich habe da noch eine gute Idee gehabt, die keine 
weitere Hardware braucht. Vielleicht kann das irgendjemand irgendwann 
noch gebrauchen.

Ich hatte euch vorenthalten, dass damit ein Schieberegister 74HC166 
angesteuert werden soll, das seine Daten dann entweder mit vollem oder 
halben Systemtakt herausschiebt. Der Systemtakt kommt dabei aus einem 
externen Quarzoszillator.

Es müsste eigentlich gehen, wenn man den /CE-Eingang des 74HC166 
entweder mit low-pegel oder halbem Systemtakt ansteuert. Im ersten Fall 
läuft er dann mit vollem Takt, im zweiten wird jeder zweite Impuls 
ignoriert, das Shiften läuft dann mit halbem Systemtakt. Pathologisch 
wäre es nur, wenn beide Signale "zu" synchron wären, damit ist wegen der 
Gatterlaufzeiten aber wohl eher nicht zu rechnen.

Gruß, DetlevT
Gast #1857863
Lesenswert?

Wenn du ein zusätzliches IC willst, fällt mir spontan noch der 74HC4060 
ein, dieser bietet einen Oszillator (einen Referenzquarz hast du 
ohnehin) sowie Teilerfaktoren 8/16/32 ..  8192, Betrieb mit externem 
Takt ist ebenfalls möglich. Allerdings bist du durch den geringsten 
Teilerfaktor 8 etwas beschränkt, die maximale Taktfrequenz beträgt 88 
MHz, also 11 MHz Systemtakt maximal.

Weiterhin gibt es noch den 74x74 mit 2 D-Flipflops, die du einfach als 
Teiler/2 schalten kannst.

Gruß,
Christian

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