Wie "-B250" zur AVRdude command line hinzufügen? CPU Clock ist auf 128kHz geset

Hallo,

habe bei meinem zum Strom sparen modifizierten Arduino Mega Board nun auch den Stromverbrauch im Betrieb reduzieren wollen (im Schlaf: 51uA).

Dafür fröhlich den "clock_prescale_set (clock_div_256);" gesetzt (das sind dann 125kHz) und nu kann ich nicht mehr Flashen... ja da war doch was... Nick Gammon hat mich gewarnt:

Warning: Once the clock is set to 128 KHz, you will have trouble programming the board. You need to add -B250 to the AVRdude command line. For example, to put the clock back to using the crystal:


avrdude -c usbtiny -p m328p -U lfuse:w:0xFF:m -B25

0

Und wie kann ich diese "-B250" nun in der Arduino IDE hinzufügen? Oder wie rufe ich den AVRDude "händisch" auf?

Vielen Dank! :slight_smile:

PS: Ubuntu 14.04 IDE 1.6.5

Und wie kann ich diese “-B250” nun in der Arduino IDE hinzufügen?

Das kannst du in der betreffenden platform.txt eintragen.

Oder wie rufe ich den AVRDude “händisch” auf?

Die Kommandozeile kannst du dir anzeigen lassen.
Datei->Voreinstellungen und die Häkchen bei “Ausführliche Ausgabe”

Ok, die sieht für mich noch sehr verwirrend aus..

Wo / wie genau hier einfügen? Oder doch in die avrdude.conf ?? (die ist aber noch viel undurchsichtiger)

# AVR Uploader/Programmers tools
# ------------------------------

tools.avrdude.path={runtime.tools.avrdude.path}
tools.avrdude.cmd.path={path}/bin/avrdude
tools.avrdude.config.path={path}/etc/avrdude.conf

tools.avrdude.upload.params.verbose=-v
tools.avrdude.upload.params.quiet=-q -q
tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"

tools.avrdude.program.params.verbose=-v
tools.avrdude.program.params.quiet=-q -q
tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i"

tools.avrdude.erase.params.verbose=-v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m

tools.avrdude.bootloader.params.verbose=-v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m

Vielleicht doch mit dem Pfad probieren...

avrdude -C/home/jose/Jo/100_Prog/arduino-1.6.5/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -cwiring -P/dev/ttyACM1 -b115200 -D -Uflash:w:/tmp/build1228575789470302846.tmp/_150912_ADC_V_Ref_sleep_RingBuf_V004b.cpp.hex:i

Habe es mal über die Kommandozeile versucht...

Funktioniert auch (mit einem anderen Mega) aber dem ich den CPU Clock auf 125kHz gesetzt habe, will damit auch nicht... bekomme "avrdude: stk500v2_ReceiveMessage(): timeout"

Jemand noch eine Idee? Habe schon den Uploadspeed von 115200 auf 9K6 runter gesetzt. Macht es Sin aus B250 B500 oder B128 zu machen?

jose@jose-flex:~/Jo/100_Prog/arduino-1.6.5/hardware/tools/avr/bin$ avrdude -C/home/jose/Jo/100_Prog/arduino-1.6.5/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -cwiring -P/dev/ttyACM0 -b9600 -D -Uflash:w:/tmp/build1228575789470302846.tmp/_150912_ADC_V_Ref_sleep_RingBuf_V004b.cpp.hex:i -B250

hmm komme nicht weiter, kann ihn nicht mehr flashen :confused:

Boodloader Brennen wie hier von Nick Gammon beschrieben geht ...aber hat auch nicht geholfen.

Welche Möglichkeiten gibt es noch, ihn wieder beschreibbar zu machen? Kann auch alles überschrieben/gelöscht werden was drauf ist...

Danke!

Wenn der Bootloader drauf geht, sollte doch alles wieder voll original sein!
Mit Fuses usw....

Oder hast du den Resonator auch von dem Mega runter geknibbelt?

Leider nein. Habe ja auch nicht die Fueses geändert, sondern im Code den Clock Divider mit

clock_prescale_set (clock_div_128);

16MHz Quarz ist noch drauf.

Wird denn der Code im Flash überschrieben wenn Bootloader neu drauf kommt? Und wird damit auch der ClockDivider Eintrag in den Registern überschrieben??

Programmiere den Mega mit einem leeren UNO Board und RX/TX verbunden.

Aber da geht seit dem nix mehr ... :confused:

Ok habe es hin bekommen. :slight_smile:

Hatte beim Bootloader flashen dummerweise falsche Fuse Einstellungen und konnte dadurch nicht weiter flashen.

Aber auch das Flashen mit USBTinyISP unter Ubuntu geht nur als SUDO
das hat mir weiter geholen.

Eine Frage habe ich noch zum flashen mit USBTinyISP: wird dabei der Bootloader automatisch überschreiben oder kann man das einstellen (falls ja wo?)?

Vielen Dank!

Eine Frage habe ich noch zum flashen mit USBTinyISP: wird dabei der Bootloader automatisch überschreiben oder kann man das einstellen (falls ja wo?)?

Wenn du per ISCP Adapter ein Programm aufspielst, wird in der Regel vorher das ganze Flash gelöscht.
Der Bootloader wird also nicht überschrieben, sondern gelöscht.

Allerdings bleiben die Fuses auf Bootloader Betrieb stehen.
(falls du kein Vorkehrungen triffst)

Du kannst allerdings auch Anwendung UND Bootloader gleichzeitig schreiben.

Dazu muss von der anwendung.hex die letzte Zeile entfernt werden, und der Inhalt der bootloader.hex da dran kopiert werden. Also ein verschmelzen der beiden hex Dateien.
(ohne Gewähr)