Forum: Mikrocontroller und Digitale Elektronik Atmega32 / Atmega16 / Atmega128 externen Takt umschalten


von Manuel H. (booncode)


Lesenswert?

Hallo!

Ich hab mich hier schon ein bisschen umgesehen bezüglich "Takt während 
dem Betrieb von dem Kontroller umstellen" und auch ein paar ganz nette 
Artikel gefunden... Allerdings waren die Meinungen recht unterschiedlich 
und das Problem nicht ganz das selbe wie meins (bei dem Artikel ging es 
darum, dass mein einfach einen niedrigeren Takt haben wollte, und in 
weitere Folge um die Stromsparfeatures des AVR's)

Okay, soviel dazu. Das Datenblatt sagt zu Taktänderungen > 2% einfach 
nur nein und das wars. Das ist natürlich eben so wenig 
zufriedenstellend.

Ich will einmal schildern warum mir das so wichtig wäre. Ich habe vor 
ein kleines eval board für (vermutlich den Atmega32/ oder vielleicht dem 
ATMEGA1284P zu machen). Mit auf dem Board soll auch ein kleines RFM12 
Platinchen sein. (In ähnlicher konstellation hab ich das mit fädeldraht 
schon aufgebaut, funktioniert auch prächtig) Aber es ist so eine 
Verschwendung einen 10 MHz Quarz auf dem RFM12 zu haben, aber keine 
Möglichkeit die auch zu nutzen. Nicht's gegen den internen Oszillator, 
aber ich würd halt gern die 10 MHz nutzen... Nur startet das RFM12 
leider immer mit 1 Mhz (wenn ich das noch richtig im Gedächnis hab) und 
man muss es erst per SPI umstellen... Tja, und hier ist das Dilemma...

Ich hab mich natürlich schon ein bisschen umgesehen und selbst überlegt, 
was man da tun könnte... Ein ansatz wäre den Watchdog Reset vielleicht 
zu verwenden, direkt nach dem ändern der Frequenz... Leider kann man im 
Betrieb nicht die Taktquelle ändern (also vom avr).

Eine andere Idee war, dass man da vielleicht was mit den SLEEP Modes 
machen könnte (da gibts ja welche wo der Takt abgeschalten wird...) aber 
soweit ich das verstanden hab, wieder keine Möglichkeit auf z.b. 
internem Takt zu laufen und dann auf extern umzuschalten...

Es wäre mir zwar schon möglich, das eval board mit Atmega32U4 aufzubauen 
(die soweit ich das im Kopf hab die Taktquelle ändern können) allerdings 
ist es sehr schwierig für mich mehr als 1 davon zu bekommen, und ich 
will vermutlich mehr als ein Board machen, und nochdazu ist es der erste 
Versuch und ein Sockel wäre mir für diese Board sympatischer... 
(vorallem weil es Schade um die ungenutzte USB Schnittstelle wäre...)

Eine Überlegung wäre es noch Wert, wenn jemand einen AVR kennt, der die 
Taktquelle umschalten kann und auch halbwegs verfügbar ist (Reichelt??
Obwohl auch das schwierig ist, da ich da warten muss, bis genügend 
andere was vom Reichelt brauchen, sonst schickt der nicht nach 
Österreich :( )

Hat vielleicht jemand eine elegante Lösung oder einen guten Rat?
Ich hab mir nur gedacht, bevor ich endlos viel zeit damit verbrauche um 
festzustellen ob z.b. das mit dem Watchdog hinhaut, frag ich mal ob 
nicht vielleicht schon jemand mit einem ähnlichen Problem zu kämpfen 
hatte...

Ich bedank mich schonmal an dieser Stelle (fürs lesen.. ;) )
LG booncode

von Vlad T. (vlad_tepesch)


Lesenswert?

das Problem mit der SPI hab ich nicht verstanden.
Man kann doch für die SPI clock einen anderen vorteiler wählen.

Aber zur Frage:
die neueren AVRs haben einen zur Laufzeit programmierbareen 
Systemclock-Vorteiler.
benutze doch statt deinen veralteten Teilen einen neueren AVR zB einen 
zB Atmega164 Atmega324 oder Atmega1284
die sind auch pinkompatibel, wenn ich mich recht erinntere

Außerdem warum brauchst du unbedingt 10Mhz?
ohne Quarz können die doch alle auch 8Mhz mit internem Oszi laufen.

von Thomas E. (thomase)


Lesenswert?

Vlad Tepesch schrieb:
> die neueren AVRs haben einen zur Laufzeit programmierbareen
> Systemclock-Vorteiler.
Darum geht es ihm gar nicht.

Der RFM12 hat einen Oszillator mit 10MHz. Diesen Takt möchte er als 
CPU-Takt nutzen. Problem ist, daß dieser mit 1 MHz startet und per 
Befehl über SPI auf 10MHz hochgeschaltet werden muß. Die Frage ist 
jetzt, ob und wie man das beim laufenden Controller machen kann. Im 
Datenblatt steht dazu, daß der externe Takt nicht um mehr als 2% 
schwanken darf und eine größere Änderung nur im Reset-Zustand möglich 
ist.

Manuel H. schrieb:
> Aber es ist so eine
> Verschwendung einen 10 MHz Quarz auf dem RFM12 zu haben, aber keine
> Möglichkeit die auch zu nutzen.

Warum? Der Quarz wird doch vom RFM benutzt.

Verschwendung ist es, einen 20-MHz-Controller nur mit 10MHz laufen zu 
lassen.

Manuel H. schrieb:
> vermutlich den Atmega32

Bau dir nichts Neues mit so einer alten Gurke.

> oder vielleicht dem ATMEGA1284P zu machen
Ja. Ein, zwei Nummern kleiner täte es auch (644/324). Aber einer von 
denen sollte es schon sein.

mfg.

von Manuel H. (booncode)


Lesenswert?

Hallo!

Erstmal danke für eure Antworten...
Irgendwie stört es mich halt den Takt zwar da zu haben, aber nicht 
nutzen zu können...
Es soll ja ein möglichst flexibles layout sein, und ich hab jetzt auch 
einen quarz vorgesehen, falls ich mal wirklich die 20 Mhz brauchen 
sollte (oder was das Ding halt kann)

Die Controller Auswahl richt ich eher danach, was ich grad da hab... und 
von den 16ern und 32er hab ich noch genug; und da meine Boards sowieso 
alle gesockelt sind hab ich halt die bei der Planung verwendet...

644 hab ich auch einen und ATMEGA1284P werd ich mir wohl demnächst 
zulegen.
Da das Board aber sowieso möglichst alle Pins herausführen soll und nur 
ein paar On-Board Dinge (die aber per jumper abgesteckt werden können) 
hat ist es relativ egal welchen der IC's ich als Vorlage benutze... Aber 
du hast natürlich vollkommend recht dass es normalerweise klüger wäre 
neuere zu benutzen...

Ich würd auch lieber SMD benutzten, aber an die komm ich leider so 
schlecht rann, und hab nurmehr ein paar Atmega8 und ich glaub dass ist 
auch nicht grad der jüngste Vertreter... (Die sind außerdem für einen 
Nachbau reserviert wo eben genau dieser verbaut wurde und außerdem waren 
sie günstig zu bekommen...)

Aus den Erkenntnissen und dem Input von anderen soll dann aus diesem 
Board ein Board mit den nützlichsten Dingen mit dem Atmega32U4 
entstehen... der kann dann endlich auch den Takt vom RFM umschalten und 
verwenden... Da kommt aber trotzdem vermutlich ein Chip Oszillator oder 
auch ein Quarz drauf und man kann sich per Lötjumper für eins von beidem 
entscheiden...
So zumindest der Plan...

Is ein bisschen Offtopic aber hier ein 
Link(https://github.com/boon-code/evalavr) auf die aktuelle Version des 
Boards, falls jemand interessiert ist... Ist aber noch nicht fertig!!

von Sam .. (sam1994)


Lesenswert?

Vlad Tepesch schrieb:
> die neueren AVRs haben einen zur Laufzeit programmierbareen
> Systemclock-Vorteiler

Hmm, dazu finde ich gar nichts? Gibts da ein Fachbegriff, oder trifft 
das gar nicht auf die AVRs zu?

von Oliver J. (skriptkiddy)


Lesenswert?

Samuel K. schrieb:
> Vlad Tepesch schrieb:
>> die neueren AVRs haben einen zur Laufzeit programmierbareen
>> Systemclock-Vorteiler
>
> Hmm, dazu finde ich gar nichts? Gibts da ein Fachbegriff, oder trifft
> das gar nicht auf die AVRs zu?

Nicht fähig Datenblätter zu lesen?

"Clock Prescale Register"

von Sam .. (sam1994)


Lesenswert?

Skript Kiddy schrieb:
> Nicht fähig Datenblätter zu lesen?

Ich lese in der Regel nicht das ganze Datenblatt durch, sondern Suche 
gezielt nach den Registern die ich brauche. Und wenn bei Google hab ich 
nichts gefunden. Im Tut hab ich auch noch nichts davon gesehen.

von Oliver J. (skriptkiddy)


Lesenswert?

Samuel K. schrieb:
> Ich lese in der Regel nicht das ganze Datenblatt durch, sondern Suche
> gezielt nach den Registern die ich brauche.
Das macht fast keiner.
In dem richtigen Abschbnit wärst du sicher fündig geworden.

von Vlad T. (vlad_tepesch)


Lesenswert?

Samuel K. schrieb:
> Ich lese in der Regel nicht das ganze Datenblatt durch,
das hat auch keiner verlangt, aber wenigstens die relevanten Kapitel zB 
Clock System könnte man überfliegen. da wäre man nämlich schon bei 
einer der Unterkapitel-Überschriften fündig geworden.

von Falk B. (falk)


Lesenswert?

@Okay, soviel dazu. Das Datenblatt sagt zu Taktänderungen > 2% einfach
>nur nein und das wars. Das ist natürlich eben so wenig
>zufriedenstellend.

Eben. Vor allem weil der AVR ja keine PLLs etc hat, die da aus dem Tritt 
kommen könnten. Das Ding ist eigentlich rein statish gebaut, kann also 
auch mit 0 Hz betrieben werden. Die Praxis zeigt, dass es bei den 
neueren AVRs bisweilen wackelig ist. Bei einigen geht es, bei anderen 
nicht. Wenn du auf der sicheren Seite sein willst, nimm einen extra 
Quarz.

Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12"

MFG
Falk

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.