Pages: [1]   Go Down
Author Topic: Die netten Fusebits und Co.  (Read 801 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Faraday Member
**
Karma: 19
Posts: 3420
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Check out my experiments http://blog.blinkenlight.net

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#define BAUD_RATE   4800

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

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?

Logged

Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2752
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Kann ich wie gewohnt den Code schreiben in Arduino1.0.1 und über die ISP übertragen, fertig?
Ja, "Upload mit Programmer"
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?

Logged

Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2752
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


Logged

0
Offline Offline
Faraday Member
**
Karma: 19
Posts: 3420
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Check out my experiments http://blog.blinkenlight.net

Pages: [1]   Go Up
Jump to: