hat eigentlch schon mal jemand probiert einen UNO Bootloader in einen der älteren Chips zu laden? Gedade bei den kleinen ATMEGA8 oder etwa einem Pro Mini mit ATMEGA168 wäre das Mehr an freiem Speicher wirklich sehr angenehm!
Gibt es dazu irgendwo eine übersichtliche Anleitung, so eine Art Kochrezept. Ich habe bin jetzt herausgefunden das es wohl prinzipell gehen sollte, aber wohl einiges an Handarbeit bedeuted...
Hallo Christian,
wo solllt der mehr freie Speicher herkommen? 168 hat nur die Hälfte an Speicher, der Atmega8 lediglich 1/4 an Flash Speicher. Des weiteren wird der Pro Mini seit langen nicht mehr mit einem 168 ausgeliefert. Standard ist hier der 328.
elektron_:
Gibt es dazu irgendwo eine übersichtliche Anleitung, so eine Art Kochrezept. Ich habe bin jetzt herausgefunden das es wohl prinzipell gehen sollte, aber wohl einiges an Handarbeit bedeuted...
Die beiden Bootloader "optiboot_atmega168.hex" und "optiboot_atmega8.hex" sollte Deine Arduino-Software bereits mitbringen, und zwar im Verzeichnis:
hardware\arduino\bootloaders\optiboot
Du brauchst Dir also nur für die "boards.txt" Boarddatei zwei neue Einträge für zwei neue Boards zu machen (oder zu googlen), die diesen Bootloader verwenden.
sschultewolter:
Hallo Christian,
wo solllt der mehr freie Speicher herkommen? 168 hat nur die Hälfte an Speicher, der Atmega8 lediglich 1/4 an Flash Speicher. Des weiteren wird der Pro Mini seit langen nicht mehr mit einem 168 ausgeliefert. Standard ist hier der 328.
Er meint daß der Bootloader des UNO halb so groß ist als der des Arduino 2009 mit ATmega168. Dadurch hat man ca 500 Byte Flashspeicher mehr zur Verfügung.
Grüße Uwe
elektron_:
Gibt es dazu irgendwo eine übersichtliche Anleitung, so eine Art Kochrezept. Ich habe bin jetzt herausgefunden das es wohl prinzipell gehen sollte, aber wohl einiges an Handarbeit bedeuted...
sschultewolter:
Hallo Christian,
wo solllt der mehr freie Speicher herkommen? 168 hat nur die Hälfte an Speicher, der Atmega8 lediglich 1/4 an Flash Speicher. Des weiteren wird der Pro Mini seit langen nicht mehr mit einem 168 ausgeliefert. Standard ist hier der 328.
Er meint daß der Bootloader des UNO halb so groß ist als der des Arduino 2009 mit ATmega168. Dadurch aht an 500 Byte Flashspeicher mehr zur Verfügung.
Grüße Uwe
So war das also gemeint. Dachte der TE wollte auf den gesamt nutzbaren Speicher hinaus. Warum nicht komplett ohne Bootloader?
ich hab' schon mal gefragt, und weil das hier wirklich dorthin passen würde, nochmal:
es gab' früher im playground ein wiki, sogar mit einem deutschen teil. ich hab' damals einen testartikel angelegt, aber dann das wiki nicht wiedergefunden. weiß jemand, wo es geblieben ist und wie man dorthin kommt?
ich lehn' mich mal raus und behaupte, daß es schon noch vorhanden sein wird, aber ich finde den link nicht. dort könnte man doch solche dinge schön finden, für die frage hier zb unter bootloader oder/und atmega8.
Bootloader läßt sich dann sofort wie gewünscht flashen
Das Ergebnis beim Upload ist dann aber z.B.:
In file included from BlinkWithoutDelay.ino:26: C:\Users\User\Desktop\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Arduino.h:213:26: error: pins_arduino.h: No such file or directory
Interessanterweise geht es sobald ich die pins_arduino.h in das Verzeichnis ...\cores\arduino kopiere
Wo liegt das Problem? Mit einem "normalen" Uno oder was auch immer findet er die Datei auch an ihrem ursprünglichen Ort.
Eisebaer:
...der atmega8 ist nicht wirklich kompatibel...
Hmmm,
was genau soll nicht kompatibel sein? Klar hat der ATMEGA8 weniger RAM, Flash u.s.w. - ist aber etwa als Arduino NG doch ein echter Arduino. Ich würde erwarten daß die IDE dann eine Fehlermeldung bringt wenn ich eine der Hardwaregrenzen überschreite...
Oder übersehe ich etwas und es tritt ein Problem nur in Verbindung mit einem neueren Bootloader auf ???
nein, die kompatibilität hat nichts mit dem speicher zu tun. probleme gibt es bei hardwarenaher programmierung.
ich wollte atmega8er als ersatz für 328er nehmen, weil ich kaum speicher brauche, die sollten nur 4 shiftregister steuern, aber die bibliothek shiftPWM will nicht mit den atmega8. ist natürlich in assembler geschrieben und da gibts dann die wickel…
C:\Program Files (x86)\arduino-1.0.5\libraries\ShiftPWM\CShiftPWM.cpp:473: error: ‘OCIE2A’ was not declared in this scope
C:\Program Files (x86)\arduino-1.0.5\libraries\ShiftPWM\CShiftPWM.cpp:494: error: ‘TIMSK1’ was not declared in this scope
C:\Program Files (x86)\arduino-1.0.5\libraries\ShiftPWM\CShiftPWM.cpp:502: error: ‘TIMSK2’ was not declared in this scope
C:\Program Files (x86)\arduino-1.0.5\libraries\ShiftPWM\CShiftPWM.cpp:502: error: ‘OCIE2A’ was not declared in this scope
C:\Program Files (x86)\arduino-1.0.5\libraries\ShiftPWM\CShiftPWM.cpp:526: error: ‘OCR2A’ was not declared in this scope
die namen der register und der ports stimmen anscheinend nicht überein. es kommt also immer drauf an, was Du machen willst.
später bin ich dann draufgekommen, daß die shiftPWM drüber hinaus mehr speicher braucht, als der mega8 hat.
muß man halt probieren…
Ein Unterschied ist, dass der Atmega8 ein TIMSK Register für alle Timer hat. Auf den höheren Prozessoren hat jeder Timer sein eigenes TIMSK Register. Das gleiche mit TIFR (Timer Interrupt Flag Register), wobei man das nicht per Hand anfassen muss.
Es gibt aber generell große Unterschiede bei den Timern. Timer0 hat keine Ausgänge und macht kein Hardware PWM. Und Timer2 hat nur einen Ausgang, statt zwei. Deshalb gibt es da keine A/B Bits.