Go Down

Topic: Die netten Fusebits und Co. (Read 1 time) previous topic - next topic

piaggi0

Hey ,

habe es geschaft, den Atmega168 auf internen Quarz umzustellen mit 8MHz, aber auch nur weil ich den Bootloader vom Lillypad rauf spielte.

Nur sobald ich CKDIV8 aktiviere, läuft der Sketch nicht mehr.
Da ich aber den Arduino mit Batterie versorge und keine großen Ansprüche besitze, würde ich gerne die Stromaufnahme stark reduzieren und ihn auf 1MHz laufen lassen.

Ich denke ich muss am Bootloader (Makefile-Datei), etwas verändern.

Bevor ich mein Arduino Schrotte, wollte ich um Rat bitten, wie ich an die Sache richtig angehen muss.


Vielen Dank.

pylon

Quote
Ich denke ich muss am Bootloader (Makefile-Datei), etwas verändern.


Ja, Du musst den Wert von AVR_FREQ anpassen, sonst wird die Baudrate für den Upload nicht stimmen.


piaggi0

Hey,

Danke für den Hinweis, habe ich befolgt AVR_FREQ= 8000000 ---> 1000000 gewechselt.

Leider kann ich immernoch keinem Sketch uploaden, sofern die Fuses CKDIV8 aktiv ist.

Udo Klein

Wenn Du Bootloader flashen kannst und Fuses setzen, dann hasst Du einen ISP. Wieso brauchst Du dann überhaupt einen Bootloader? Du kannst doch einfach direkt per ISP die Sketches aufspielen.
Check out my experiments http://blog.blinkenlight.net

pylon

Ich habe schnell nachgerechnet. Bei 19200 Baud würde das UBRR einen Wert von 2.25 erhalten. Da das kein Integer ist, wird 2 reingeschrieben, was fast 10% Abweichung entspricht (8.5% gemäss Datenblatt). Einen relativ guten Teiler kriegt man erst mit 4800 Baud (12). Ich würde also im Bootloader-Code die Baudrate auf 4800 ändern:

Code: [Select]
#define BAUD_RATE   4800


und das entsprechend auch im boards.txt anpassen. Damit hast Du auf 0.2% genau die richtige Baudrate.

piaggi0


Wenn Du Bootloader flashen kannst und Fuses setzen, dann hasst Du einen ISP. Wieso brauchst Du dann überhaupt einen Bootloader? Du kannst doch einfach direkt per ISP die Sketches aufspielen.


Ja eine ISP besitze ich.
Darüber habe ich noch gar nicht nachgedacht.
Kann ich wie gewohnt den Code schreiben in Arduino1.0.1 und über die ISP übertragen, fertig?


michael_x

Quote
Kann ich wie gewohnt den Code schreiben in Arduino1.0.1 und über die ISP übertragen, fertig?

Ja, "Upload mit Programmer"

piaggi0

So, konnte es testen.
Bekomme Problemlos die Sketche geuploadet mit der ISP.


Nebeneffekt an der Änderung der Frequenz, die Zeiten bei Delay stimmen nicht mehr.
16Mhz delay(1000)= 1s  als vergleich hatte ich int.168khz /8 gestellt und diese Sekunde verging ewig.

Wie kann man sich das erklären, klar er läuft langsamer, aber gibt es da Formeln bzw. Tabellen um dies abzugleichen ?


Und ganz andere Frage, wenn das mit der ISP sogut geht, wieso machen sich viele die Arbeit mit dem Boatloader?


michael_x

Wenn du einen ISP hast und es gut geht, brauchst du natürlich keinen Bootloader.

Aber eine Serielle Schnittstelle "hat jeder"  ( ok, heute nur noch USB ).
Der Rest ist dann Software, incl. eines beim Arduino schon vorinstallierten Bootloaders.


Im Boards.txt kannst du zum Kompilieren auch
build.f_cpu=16000000L
passend abändern, damit 1000 millis wieder eine Sekunde sind.



Udo Klein

Bootloader statt ISP ist für Anfänger zunächst scheinbar einfacher und billiger. Und wer noch nie einen LKW  gefahren ist, der glaubt ja auch, daß man mit einem Kombi alles transportieren kann...
Check out my experiments http://blog.blinkenlight.net

Go Up