Hi, ich möchte gern den CLKDIV8 standardmäßig über Code ausschalten, hab die avr/fuse.h eingebunden und finde auch das Flag CKDIV8. Versteh nur nicht, wie ich das disablen, oder in diesem Fall enablen soll. Weiß jemand Rat? Mfg
Geht nicht. Das ist eine normale fuse, die lässt sich vom Programm aus nur auslesen, nicht verändern. Du kannst vom Prgramm aus nur nur den System clock prescaler einstellen. Oliver
Die CLKDIV8-Fuse ist nur eine Voreinstellung des Clock-Prescalers. In der avr/power.h findest du Funktionen bzw. Makros, mit denen du das bequem zur Laufzeit ändern kannst.
Thomas E. schrieb: > Die CLKDIV8-Fuse ist nur eine Voreinstellung des Clock-Prescalers. > In der avr/power.h findest du Funktionen bzw. Makros, mit denen du das > bequem zur Laufzeit ändern kannst. Good to know ... Kann man auch die Oszillatoren zur Laufzeit umstellen?
Mampf F. schrieb: > Thomas E. schrieb: >> Die CLKDIV8-Fuse ist nur eine Voreinstellung des Clock-Prescalers. >> In der avr/power.h findest du Funktionen bzw. Makros, mit denen du das >> bequem zur Laufzeit ändern kannst. > > Good to know ... Kann man auch die Oszillatoren zur Laufzeit umstellen? Nein, man kann KEINE Fuse zur Laufzeit ändern. KEINE. Das muss einfach langsam mal ankommen. AVRs haben jetzt seit Menschengedenken Fuses. Und mindestens seit dem kommt diese Frage. Auch die CLKDIV8 Fuse nicht. In diesem Fall kann man lediglich deren Funktion auch programmtechnisch nachbilden. Wenn du am gesamten Clocktree per Laufzeit fummeln willst nimm einen STM32. Da geht das.
:
Bearbeitet durch User
Cyblord -. schrieb: > Nein, man kann KEINE Fuse zur Laufzeit ändern. KEINE. Das muss einfach > langsam mal ankommen. Was regst du dich so auf? Der Vorposter hat das schon geschrieben und - ich zumindest - hatte es auch zur Kenntnis gekommen. Wenn man es programmtechnisch aber nachbilden kann, liegt doch die Frage nahe, ob man programmtechnisch auch die Oszillatoren umstellen kann. Das mit den Fuses hab ich schon immer für sinnlos gehalten ...
Mampf F. schrieb: > Wenn man es programmtechnisch aber nachbilden kann, liegt doch die Frage > nahe, ob man programmtechnisch auch die Oszillatoren umstellen kann. Eigentlich nicht. Aber wenn du dich das fragst, warum schaust du nicht ins Datenblatt ob es da Register für die Taktquelle gibt? Register für den Clock Prescaler gibt es dort nämlich. Ist also kein sooo großes Geheimnis. > Das mit den Fuses hab ich schon immer für sinnlos gehalten ... Gut zu wissen. Kommt ins Protokoll.
Cyblord -. schrieb: > Wenn du am gesamten Clocktree per Laufzeit fummeln willst nimm einen > STM32. Da geht das. Tu ich doch ... Nachdem Microchip Atmel aufgekauft hat, hätte es ja sein können, dass sich da etwas getan hat. Interessiert wird man ja wohl noch sein dürfen, ohne dass man von einem Oberschlauen direkt angemault wird ;-)
Cyblord -. schrieb: > Eigentlich nicht. Aber wenn du dich das fragst, warum schaust du nicht > ins Datenblatt ob es da Register für die Taktquelle gibt? Register für > den Clock Prescaler gibt es dort nämlich. Ist also kein sooo großes > Geheimnis. Derzeit mach ich mit AVRs wenig und meine bisherigen Infos waren, dass es nicht geht. Hatte deshalb auch nie wieder nachgeschaut. Wie gemeint, es hätte ja sein können, dass sich da was geändert hat^^
Hi
>Good to know ... Kann man auch die Oszillatoren zur Laufzeit umstellen?
Beim ATtiny417/814/816/817 sollte es gehen (ohne Gewähr).
MfG Spess
spess53 schrieb: > Beim ATtiny417/814/816/817 sollte es gehen (ohne Gewähr). Du zerstörst gerade auf brutale Art das Weltbild von Lord Helmchen :-) Cyblord -. schrieb: > Nein, man kann KEINE Fuse zur Laufzeit ändern. KEINE. Das muss einfach > langsam mal ankommen.
spess53 schrieb: > Beim ATtiny417/814/816/817 sollte es gehen (ohne Gewähr). Gerade nachgeschaut ... Jap richtig ... Du hast recht! Man kann wohl Fuses immer noch nicht ändern, aber zumindest die Voreinstellungen durch die Fuses (zT) programmatisch überschreiben - und jetzt anscheinend auch die Oszillator-Einstellung. Fand ich auch immer doof, dass das nicht ging ... Wieviele AVRs hätten dem Fuse-Tod entgehen können, wäre das schon immer gegangen :)
:
Bearbeitet durch User
Hi ATtiny417/814/816/817 sind die ersten und bislang einzigen die das können. Und mit der Verfügbarkeit sieht es auch noch irgendwie mau aus. Da kann man schon allg. 'Nein' sagen. MfG Spess
spess53 schrieb: > ATtiny417/814/816/817 sind die ersten und bislang einzigen die das > können. Und mit der Verfügbarkeit sieht es auch noch irgendwie mau aus. > Da kann man schon allg. 'Nein' sagen. Seltsam eigentlich, weil das Datenblatt ist auf Mai 2014 datiert ... Ich hab zufällig einen tiny841 hier herumliegen ... (für ein RGB-Licht, weil der 841er zwei 16Bit Timer hat). Aber stimmt, bei Reichelt bekommt man die (noch?) nicht.
Mampf F. schrieb: > spess53 schrieb: >> ATtiny417/814/816/817 sind die ersten und bislang einzigen die das >> können. Und mit der Verfügbarkeit sieht es auch noch irgendwie mau aus. >> Da kann man schon allg. 'Nein' sagen. > > Seltsam eigentlich, weil das Datenblatt ist auf Mai 2014 datiert ... > > Ich hab zufällig einen tiny841 hier herumliegen ... (für ein RGB-Licht, > weil der 841er zwei 16Bit Timer hat). Der 841 ist längst verfügbar und man bekommt den bei allen Distris wie Mosuer, Digikey, Farnell usw. Der hat mit den oben genannten Typen nichts zu tun. > > Aber stimmt, bei Reichelt bekommt man die (noch?) nicht. Jaja als wenn reichelt da irgendwie ne Referenz für wäre.
Mampf F. schrieb: > Cyblord -. schrieb: >> ... wenn du dich das fragst, warum schaust du nicht >> ins Datenblatt ob es da Register für die Taktquelle gibt? Register für >> den Clock Prescaler gibt es dort nämlich. Ist also kein sooo großes >> Geheimnis. > > Derzeit mach ich mit AVRs wenig und meine bisherigen Infos waren, dass > es nicht geht. Hatte deshalb auch nie wieder nachgeschaut. > > Wie gemeint, es hätte ja sein können, dass sich da was geändert hat Warum sollte MCP das Verhalten der alten AVRs auf inkompatible Weise ändern? Schon beim mega328B sind einige der Änderungen nach hinten losgegangen. Erwin D. schrieb: > spess53 schrieb: >> Beim ATtiny417/814/816/817 sollte es gehen (ohne Gewähr). > > Du zerstörst gerade auf brutale Art das Weltbild von Lord Helmchen :-) Wieso? > Cyblord -. schrieb: >> Nein, man kann KEINE Fuse zur Laufzeit ändern. KEINE. Das muss einfach >> langsam mal ankommen. Das stimmt immer noch. Auch bei den neuen Tinies kann man die Fuses aus dem Programm heraus nicht ändern. Mampf F. schrieb: > spess53 schrieb: >> Beim ATtiny417/814/816/817 sollte es gehen (ohne Gewähr). > > Gerade nachgeschaut ... Jap richtig ... Du hast recht! > > Man kann wohl Fuses immer noch nicht ändern, aber zumindest die > Voreinstellungen durch die Fuses (zT) programmatisch überschreiben - und > jetzt anscheinend auch die Oszillator-Einstellung. Auch das ist weder neu noch verwunderlich. Die neuen Tinies bauen auf dem xMega Kern auf. Und auch als die xMega noch von Atmel kamen, konnte man bei denen die Taktquelle zur Laufzeit umkonfigurieren.
Guten Mittag, nun man kann auch einzelne oder hohe Stückzahlen bei Markus Weber erhalten, aber es muss ja Keiner: https://guloshop.de/shop/Mikrocontroller/ATtiny841-SOIC::117.html?XTCsid=9smgajik7cmgdp18j3e5n09jl3
dreamliner schrieb: > Hi, > ich möchte gern den CLKDIV8 standardmäßig über Code ausschalten, hab die > avr/fuse.h eingebunden und finde auch das Flag CKDIV8. > Versteh nur nicht, wie ich das disablen, oder in diesem Fall enablen > soll. > Weiß jemand Rat? > > Mfg Es gibt nichts einfacheres:
1 | CLKPR = 0x80; // Vorbereitung |
2 | // CLKPR = 0; /* Prescaler auf 1 */
|
3 | // CLKPR = 1<<CLKPS0; /* Prescaler auf 2 */
|
4 | // CLKPR = 1<<CLKPS1; /* Prescaler auf 4 */
|
5 | // CLKPR = 1<<CLKPS1|1<<CLKPS0; /* Prescaler auf 8 */
|
6 | CLKPR = 1<<CLKPS2; /* Prescaler auf 16 */ |
7 | // CLKPR = 1<<CLKPS2|1<<CLKPS0; /* Prescaler auf 32 */
|
8 | // CLKPR = 1<<CLKPS2|1<<CLKPS1; /* Prescaler auf 64 */
|
9 | // CLKPR = 1<<CLKPS2|1<<CLKPS1|1<<CLKPS0; /* Prescaler auf 128 */
|
10 | // CLKPR = 1<<CLKPS3; /* Prescaler auf 256 */
|
Geprüft für ATmega88PA. Interrupts müssen disabled sein. Es ist auch möglich, für kurze Zeit, für besonders schwere Berechnungen, Taktfrequenz höher machen und danach wieder ruhiger werden. Aber Achtung: Taktfrequenz wird auch für alles anderes geändert, z.B. für Timer. Will man z.B. eine Uhr bauen, so muß man für Zeitaufgaben andere Frequenzquelle benutzen. Auch mit USART muß man vorsichtig sein.
:
Bearbeitet durch User
Maxim B. schrieb: > Es gibt nichts einfacheres: > CLKPR = 0x80; // Vorbereitung > // CLKPR = 0; /* Prescaler auf 1 */ > // CLKPR = 1<<CLKPS0; /* Prescaler auf 2 */ > // CLKPR = 1<<CLKPS1; /* Prescaler auf 4 */ > // CLKPR = 1<<CLKPS1|1<<CLKPS0; /* Prescaler auf 8 */ > CLKPR = 1<<CLKPS2; /* Prescaler auf 16 */ > // CLKPR = 1<<CLKPS2|1<<CLKPS0; /* Prescaler auf 32 */ > // CLKPR = 1<<CLKPS2|1<<CLKPS1; /* Prescaler auf 64 */ > // CLKPR = 1<<CLKPS2|1<<CLKPS1|1<<CLKPS0; /* Prescaler auf 128 */ > // CLKPR = 1<<CLKPS3; /* Prescaler auf 256 */ > Geprüft für ATmega88PA CLKPCE hast du vergessen!
Erwin D. schrieb: > CLKPCE hast du vergessen! Haben Sie auch erste Zeile gelesen? Wenn das für Sie schwer verständlich ist, dürfen Sie natürlich auch statt
1 | CLKPR = 0x80; |
auch
1 | CLKPR = 1<<CLKPSE; |
schreiben. Das ist auch wohl mehr korrekt im Sinn, daß Atmel theoretisch die Lage von Bit CLKPSE irgendwann ändern könnte. Aber für ATmega88PA, wie geschrieben, ist auch
1 | CLKPR = 0x80; |
völlig OK. Auch mit ATmega328P geht so. Ich habe (nach dem Löschen) die Platten von Arduino Pro Mini so programmiert, da 16 MHz nicht immer notwendig ist, mit 1 MHz Takt sind sie sparsamer.
:
Bearbeitet durch User
Hi >Auch das ist weder neu noch verwunderlich. Die neuen Tinies bauen auf >dem xMega Kern auf. Wenn das so stimmt, dann hätten sie wenigstens auch die neuen Befehle der XMegas mit übernehmen sollen. >Und auch als die xMega noch von Atmel kamen, konnte >man bei denen die Taktquelle zur Laufzeit umkonfigurieren. Von XMegas war vor deinem Post hier niemals nicht die Rede. MfG Spess
> Von XMegas war vor deinem Post hier niemals nicht die Rede. Jein. Atmel selbst schrieb, daß die Xmegas zur AVR Serie gehören (z.B. hier http://www.atmel.com/products/microcontrollers/avr/avr_xmega.aspx). Ich bin allerdings auch der Meinung, daß man sie separat betrachten sollten.
Karl M, schrieb: > nun man kann auch einzelne oder hohe Stückzahlen bei Markus Weber Du verwechselst, wie auch Mampf, den Attiny841 mit dem Attiny814.
S. R. schrieb: > Karl M, schrieb: >> nun man kann auch einzelne oder hohe Stückzahlen bei Markus Weber > > Du verwechselst, wie auch Mampf, den Attiny841 mit dem Attiny814. Ohja stimmt ... Das Datenblatt des Tiny814 ist von Dez'16 ... Lustig, ich hatte im Datenblatt des 841er nachgeschaut, ob man dort schon programmiertechnisch den Clock umschalten kann ... Und jo kann man und der kam 2014 raus :)
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.