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
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.
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.
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!!
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?
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"
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.
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.
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.
@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
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.