Ist es möglich ein .hex Files auf verschiedenen AVR's zu brennen und zu nutzen solange der AVR: a) genügend Speicher und b) genügend i/o Pins hat? Oder müssen die .hex Files auf den jeweiligen AVR abgestimmt sein?
Die Hexen müssen abgestimmt sein. Es gibt Ausnahmen, wie z.B. dass der mega128 per fuse setting als ein mega103 betrieben werden kann. Ich habe neulich ein Projekt für einen mega16 aus einem Template-Projekt für den 32er erstellt. Ich hatte vergessen, den Prozesortyp im makefile umzustellen. Fazit: nach dem ersten Funktionsaufruf schmiert der Prozessor ab. Warum, hab ich noch nicht herausgefunden. Liegt der RAM auf einer anderen IO-Adresse, da er beim 32er größer ist?? Flashen und der mainloop allein funktionierten allerdings einwandfrei. mfg mf
Mini Float schrieb: > warum, hab ich noch nicht herausgefunden. Liegt der RAM > auf einer anderen IO-Adresse, da er beim 32er größer ist?? Der Stack startet am Ende des Rams, und wächst nach oben. Das Ramende und damit auch der Stack des 32ers liegt damit beim 16er im Nirwana. Oliver
Therfd schrieb: > Oder müssen die .hex Files auf den jeweiligen AVR abgestimmt sein? ja, die fast einzige Ausnahme sind die Baureihen, die sich nur durch die Speichergröße unterscheiden z.B. tiny24, 44, 84 - auch daran zu erkennen das die dasselbe Datenblatt haben. Ansonsten funktioniert das vielleicht durch Zufall, weil gerade die abweichenden Funktionen/Register/Interrupts nicht benutzt werden. Sascha
Das genormte .hex-Format enthält die Anfangsadresse der zu speichernden Daten in jedem Zeilenbeginn. Wenn also der Kontroller die gleiche Speicherstruktur hat, wie z.B. Anfangsadresse des Speichers, geht es ohne weiteres. Die Lauffähigkeit geht eher dadurch verloren, dass die Plätze für die Int-Vektoren anders liegen oder dass die im Programm angesprochenen special-function-register andere Adressen haben.
Hi >ja, die fast einzige Ausnahme sind die Baureihen, die sich nur durch >die Speichergröße unterscheiden z.B. tiny24, 44, 84 - auch daran zu >erkennen das die dasselbe Datenblatt haben. Das ist kein eindeutiges Kriterium. ATMega48/88/168 teilen sich auch ein Datenblatt. Aber bei den ATMega48/88 belegt ein Eintrag in der Interrupvektortabelle ein Word (rjmp). Beim ATMega168 sind es zwei Word (jmp). Obwohl ein Programm der ersten beiden in den ATMega168 passt wird der erste Interrupt einen Sprung ins Nirvana zur Folge haben. MfG Spess
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.