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
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.
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
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 :(
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
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.
Nobody: super, und was für ein RC glied brauche ich da? stufenlos wäre ja super...
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?
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 :)
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.
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
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
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.