www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA: Ausgabe halbe Systemfrequenz


Autor: Detlev T. (detlevt)
Datum:

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

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

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

Autor: Joachim B. (jojo84)
Datum:

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

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

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

Autor: Joachim B. (jojo84)
Datum:

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

Autor: Detlev T. (detlevt)
Datum:

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

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

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

XC 9536-15 PC44

:-)

Autor: Detlev T. (detlevt)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Detlev T. (detlevt)
Datum:

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

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

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

Autor: Detlev T. (detlevt)
Datum:

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

Autor: Christian Erker (Gast)
Datum:

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

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.