Forum: Mikrocontroller und Digitale Elektronik ATMEGA: Ausgabe halbe Systemfrequenz


von Detlev T. (detlevt)


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

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


Lesenswert?

Detlev T. schrieb:
> 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?)

Genau so geht's.

Alternativ kannst du über die CKOUT-Fuse den vollen Systemtakt auf
ein Pin legen lassen.

von Joachim B. (jojo84)


Lesenswert?

Jörg Wunsch schrieb:
> Alternativ kannst du über die CKOUT-Fuse den vollen Systemtakt auf
> ein Pin legen lassen.

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 :)

Gruß

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


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.

von Joachim B. (jojo84)


Lesenswert?

Na, wenn du doch schon weißt, wie das so wo funktioniert, dann mach es 
doch einfach :)
Wenn du mit deinen Hardware-Ressourcen soweit hinkommst ist doch alles 
tutti...

von Detlev T. (detlevt)


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

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


Lesenswert?

Detlev T. schrieb:
> Es dürfen nur ICs verwendet werden, die bei Reichelt verfügbar sind.

XC 9536-15 PC44

:-)

von Detlev T. (detlevt)


Lesenswert?

Wer hat, der kann. :-) Ich denke da eher an ein (N)AND/(N)OR, wo man mit 
dem halben Systemtakt jeden zweiten Impuls "wegmaskiert", bei festem 
Pegel kommen dann alle Impulse durch.

von Peter D. (peda)


Lesenswert?

Ein Widerstand (1k) von CLKO nach OC0A.
Ist OC0A tristate, liegt die volle Frequenz an.
Ist OC0A ein Ausgang, dann die geteilte Frequenz.


Peter

von Detlev T. (detlevt)


Lesenswert?

Hallo Peter.

das dürfte einem zusammen mit den unvermeidlichen Kapazitäten wohl 
ziemlich die Flanken versauen.

Die ursprüngliche Frage wurde aber voll beantwortet. Dafür noch einmal 
Danke.

DetlevT

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


Lesenswert?

Detlev T. schrieb:

> das dürfte einem zusammen mit den unvermeidlichen Kapazitäten wohl
> ziemlich die Flanken versauen.

Ein 74HC14 dahinter.  Allerdings bekommst du das als single gate IC
nicht bei Tante Reichelt Nachf.

von Detlev T. (detlevt)


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

von Christian Erker (Gast)


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

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.