Moin Moin zusammen, vorhin sind meine gestern bestellten ATtiny85 angekommen. Da ich mein Shiftregister-Test-PCB schon mit Sockel (und Stützkondensatoren ;) ) vorbereitet hatte, brauchte ich den nur noch reinstöpseln, USBasp irgendwie ranstecken, Programm anpassen (ATmega328: auf PORTC, ATtiny85: hat nur PORTB). Die Voreinstellungen für avrdude waren schnell anzupassen, unter Hardware kann man dann ja den Zielprozessor einstellen. Habe dort ATtiny85 ausgewählt, man kann dort auch den Takt einstellen. Ich habe jetzt mal den krummen 11,xxxMHz-Takt ausgewählt. Damit soll der ATtiny85 laut irgendeinem Online-Rechner auch mit 3,0V laufen (plane den Betrieb direkt an einem LiIon-Akku von 4.2-3.0V). Vom Delay-Loop her musste ich aber massiv anpassen; 16MHz auf dem ATmega328 brauchten 3200 NOPs für gewünschten Zustand, der ATtiny85 jetzt 250 - und ist damit noch etwas langsamer; 200 war mir schon zu schnell, kommt aber eher hin. Das ist ziemlich genau der Faktor 16. Ich vermute daher, der ATtiny85 läuft nicht mit 11,xxx, sondern mit 1 MHz. Daher die Frage, wie stelle ich das ein? In der Eclipse-AVR-Toolchain offenbar nicht. Klappt das aus dem Programm heraus? Der kleine AVR hat laut Datenblatt ja sogar 'ne PLL nebst internen Oszillator.
:
Bearbeitet durch User
Und die AVRs haben meines Wissens keinen internen 11,x Mhz Takt, die haben nur 8 MHz und den Div8. Also die Div8 Fuse löschen, dann hast Du 8 MHz.
Dirk K. schrieb: > Klappt das aus dem Programm heraus? Im AVR GCC über clock_prescale_set(x) in power.h http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html > Der kleine AVR hat > laut Datenblatt ja sogar 'ne PLL nebst internen Oszillator. Die ist für was anderes.
>Die ist für was anderes.
Die PLL-Frequenz kann durchaus als Systemtakt dienen, man kommt damit
bis auf 16 MHz. Nur macht der Rest des Controllers dies bei 3.0 V nicht
mit, es bleiben dann wieder nur 8 MHz.
Dirk K. schrieb: > Vom Delay-Loop her musste ich aber massiv anpassen; 16MHz auf dem > ATmega328 brauchten 3200 NOPs für gewünschten Zustand, Schon mal was von TIMER gehört....für was man die wohl verwenden kann. Manchmal verstehe ich es nicht. NOPen sich zu Tode.
Tjo BattMan, natürlich kann ich Timer. Manchmal muss es aber eine schnelle Fingerübung sein. Und da ist ein NOP eindeutig schneller hingezaubert. Timer kommt dann mal, wenn ich richtig langeweile habe. ... eine etwas sinnfreie Beschwerde. Es gibt Mercedes, warum fahren den nicht alle? @MWS/alterHans und die anderen: Danke für die Tipps :) Werde mich wohl mal genauer mit dem Datenblatt auseinandersetzen und dann mal zusehen, ohne Fuses zu verdrehen den Takt aufzumachen :)
:
Bearbeitet durch User
Nachtrag: Der Tipp mit clock_prescale_set() war super, Danke MWS - jetzt rennt der Kleine mit 8 MHz, direkt gespiesen durch einen 18650er LiIon-Akku und macht nichts anderes, als LEDs am Schieberegister zu blinken. Habe mir dazu grade auch ein ISP->ATtiny85-Board gelötet, ist einfacher, den Prozessor so zu beschreiben. Auch, wenn ich ihn hin- und herstecken muss. Jetzt geht es ans Aufräumen: Mal Timer auf dem Lütten antesten, vielleicht noch andere "Animationen" basteln. Eine gute Übung, um damit und zwei Schieberegistern einen 3x3x3-Cube anzutreiben. Habe zwar Mini-Arduinos bis zum Umfallen, aber für so ein bisschen LED-Blink-Blink sind die einfach noch zu groß dimensioniert.
:
Bearbeitet durch User
> es bleiben dann wieder nur 8 MHz.
Stimmt nicht ganz: wenn man sich die Mühe macht, die einzelnen Exemplare
auszumessen, dann lässt sich per OSCCAL der Systemtakt weitgehend
anpassen, man kommt also auf die (bei 3.0 V zulässigen) 11.7 MHz.
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.