Forum: Mikrocontroller und Digitale Elektronik Dynamisch eine Frequenz erzeugen?


von Marius Schmidt (Gast)


Lesenswert?

Wie kann ich einen µC dynamisch takten? Ich habe hier ein gerät das ich
über einen schalter oder so einen einstellbaren takt geben möchte (zB:
langsam (2 Mhz), normal (4 Mhz), schnell (6 Mhz) und sehr schnell (6
Mhz)). Womit mache ich sowas? Sollte auch möglichst klein sein, im
Gehäuse ist nicht mehr sehr viel Platz.

Danke für eure Hilfe!
Marius

von TravelRec. (Gast)


Lesenswert?

Nur AVR-Controller: Wenn´s nicht allzu genau sein muß mit der Taktung,
geht das mit dem internen Oszillator, den man über das OSCCAL-Register
per Software tunen kann (+-200%). Ansonsten ein  Teilerschaltkreis
(oder mehrere), der die Frequenz von einem 8MHz Oszillator n/2; n/4
teilt (z.B.74hc74). Beim Umschalten der Frequenz aber dem Prozessor ein
genügend langes Reset gönnen, da sonst das Programm abschmiert, wenn man
bei laufendem Betrieb einfach umschaltet.

von Hans (Gast)


Lesenswert?

z.b 16Mhz quarz.. danach mit einem netten zähler einen teiler baun..

dann hast 16,8,4,2,... Mhz über einen lustigen mehrstufigen schalter
kannst dann umschalten... die frage ist nur ob es für deine anwendung
nicht besser wäre eine kleine pll dafür zu verwenden... da gibts wenn
ich mich richtig erinnere eine von cypress... die kannst per i2c vom
controller steuern lassen...

73

von Marius Schmidt (Gast)


Lesenswert?

eigentlich wäre das ganz nett wenn man das während des betriebes
umschalten könnte. Wie funktioniert denn der 74hc74? Ich hab mir das
datasheet angesehen aber ich verstehe davon halt nix.

An einen AVR habe ich auch schon gedacht (ATtiny zB.) aber da hätte ich
auch keine ahnung wie das gehen soll :(

von Johannes Raschke (Gast)


Lesenswert?

Beim MSP430 gehört sowas zum Standardrepertoir; man kann den Takt für
den Core und die Peripherie jederzeit vom Programm aus ändern. Ist halt
ein ultra low power controller, und wenn man erst mal die
Initialisierung geschafft hat, ein wirklich schöner.

Johannes

von Nobody (Gast)


Lesenswert?

Wenn du deinen controller mit einem RC glied taktest geht das über das
Poti wärend dem betrieb stufenlos ohne probleme. Controller schmiert
auch nicht ab. Bei billigen controllergesteuerten Lauflichtern aus
Taiwan und china wird das so praktiziert.

von Marius Schmidt (Gast)


Lesenswert?

Nobody: super, und was für ein RC glied brauche ich da? stufenlos wäre
ja super...

von Rolf Magnus (Gast)


Lesenswert?

Man muß schon ein bisschen aufpassen, wenn man den Takt ändert.Aus dem
Datenblatt des tiny13:

"When applying an external clock, it is required to avoid sudden
changes in the applied clock frequency to ensure stable operation of
the MCU. A variation in frequency of more than 2% from one clock cycle
to the next can lead to unpredictable behavior. It is
required to ensure that the MCU is kept in Reset during such changes in
the clock frequency."

Aber bei dem ist das eh kein Problem, da er bei internem Takt auch
softwaremäßig umgestellt werden. Der Oszillator kann mit 9,6Mhz oder
4,8Mhz laufen, und der Controller kann in Zweierpotenzen von vollem
Takt bis 1/256 davon runtergetaktet werden, un das softwaremäßig und
ohne Stabilitätsprobleme. Genauer kann man es dann noch mit dem OSCCAL
machen, wie hier schon erwähnt wurde.
Was brauch ich da noch irgendwelche externen Geschichten?

von Marius Schmidt (Gast)


Lesenswert?

ich möchte aber einen controller takten den ich nicht selber
programmieren kann. das mit diesen RC glied hört sich gut an, ich hab
nur kA was das sein soll :)

von ..,- (Gast)


Lesenswert?

Fuses so einstellen, daß als Takt ein externes RC-Glied verwendet wird
(setzte jetzt mal AVR als µC voraus). Dieses schließt du statt des
Quarzes an, allerdings nur an XTAL1 (oder XTAL2?). Das R ersetzt du
durch ein Poti und schon kannst du stufenlos die Taktfrequenz
variieren. Über die Dimensionierung des RC-Gliedes dürfte das
Datenblatt des Controllers auskunft geben.

von olaf (Gast)


Lesenswert?

Man darf den Takt nicht zu schnell veraendern! Es ist z.B gefaehrlich
einfach mit einem Schalter, oder auch einem Gatter, nur zwischen zwei
Takten umzuschalten weil es dann passieren koennte das der Takt fuer
einen kurzen Augenblick sehr kurz wird. Dadurch wird stuerzt dann der
Controller ab.
Es gibt aber natuerlich Schaltungen die dieses Problem umgehen. Ich
glaub so vor 20 Jahren stand mal eine in einer C´t. :-)

Einfach ein externes RC Glied anszuschliessen und dort das R durch
einen Poti zu ersetzen ist natuerlich auch Unsinn. Einfach deshalb weil
es beim verdrehen des Potis immer mal zu kurzen Spruengen im
WIderstandswert kommt.

Klappen koennte vielleicht ein externe VCO (74HC4046) und dort das Poti
anschliessen und die VCO Spannung ueber einen Kondensator schoen langsam
machen.

Olaf

von Hans (Gast)


Lesenswert?

dieses problem umgehst du einfach indem du einen frequenzteiler mit
einem T-FF reintust... dann hast du wieder 50% duty-cycle und der
controller sollte wieder zu frieden sein... im schlimmsten fall sollte
aber ein monoflop dir die sache bereinigen... oder eine kombination...
ich müsst mir das jetzt genauer überlegen was von beiden sicherer ist
und ob die kombination überhaupt sinn hat.. aber ich werd mich jetzt
mal von der firma heim begeben und beim fahren über diese problematik
meditieren g

zur avr-methode:
ich bin gerade soo froh, dass ich mich 0 in avr-asm auskenne (sofern es
clock-cycles/operation betrifft ;)... sonnst würde ich dir vorschlagen
einen pin per software zu toggeln... aber ich bezweifle,dass man damit
in die gegend von 8Mhz kommt.. eher 1-2 aber nicht 8...

73

von Olaf (Gast)


Lesenswert?

Mist, ich wert alt, es waren nur 16 Jahre. :-)

Titel       : Entstört
Untertitel  : Spike-sichere Taktumschaltung für alle Zwecke
Autor(en)   : Johannes Assenbaum
Redakteur   : be
Zeitschrift : c't 10/89, S. 66
Schlagwörter: Praxistip

Dort wird ein 74xx153, zwei 74379, 74379, 7432 und 7408. Relativ
aufwendig.

Olaf

von Rolf Magnus (Gast)


Lesenswert?

> Mist, ich wert alt, es waren nur 16 Jahre. :-)

Na dann bist du doch 4 Jahre jünger als befürchtet ;-)

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.