Forum: Mikrocontroller und Digitale Elektronik .hex auf verschiedenen AVR's


von Therfd (Gast)


Lesenswert?

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?

von Achim M. (minifloat)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

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

von Sascha W. (sascha-w)


Lesenswert?

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

von Peter R. (pnu)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.