Hallo,
sehe ich das richtig, daß sich die ATmegas 644A und 164A nur in der
Speicherausstattung unterscheiden, sonst aber identisch sind?
Könnte ich also ein Hexfile, welches für den 644A kompiliert wurde, 1:1
auf den 164A flashen? Das Programm belegt 5KB Flash, 190Byte Sram und 2
Byte EEprom. Genügend Platz sollte also auch im 164A sein.
Oder gibt es da feine Unterschiede, die im Datenblatt wieder bestmöglich
versteckt sind?
Hatte da z.B. etwas von einem 4.Timer gelesen, der nur beim größten
Mitglied der Familie, dem 1284A, verfügbar ist. Das betrifft mich im
vorliegenden Fall zwar nicht, aber daher die Bedenken, daß es noch
andere abweichende Details geben könnte.
Das lässt sich so pauschal nicht sagen, es gibt sicher Gründe weshalb
ein µC ausgewählt wurde z.b. könnten andere HW komponenten genutzt
worden sein als der alternative Chip vorhält ...
Ohne den Sourscode abzugleichen kannst du nur im Nebel stochern aber das
sollte ja kein Problem sein, da du den ja sicher auch hast?
Namaste
Nein Nebel habe ich hier nicht, höchstens den magischen Rauch aus dem
ATmega, wenn doch etwas schief gegangen ist ;-)
Achso, Du meinst den Quellcode. Ja, den habe ich.
Ich verwende die "universelle CAN-Bibliothek" in meinem Code. Dort habe
ich jetzt auch den Mega164A bei den unterstützten Controllern
eingetragen. Dann konnte ich das Ganze auch problemlos compilieren. Die
SPI-Pins beim 644 und 164 sind ja die gleichen.
Übrigens, das oben erwähnte 1:1 flashen hat nicht funktioniert. Leider
kenne ich mich mit dem Innenleben des Compilers gar nicht aus. Daher
kann ich auch nicht sagen, wo die Unterschiede zwischen den erzeugten
Codes lagen.
Peter K. schrieb:> sehe ich das richtig, daß sich die ATmegas 644A und 164A nur in der> Speicherausstattung unterscheiden, sonst aber identisch sind?
Keine Ahnung, ob die beiden wirklich so weitgehend identisch sind, ich
hatte keine Lust, die beiden DB Stück für Stück zu vergleichen.
> Könnte ich also ein Hexfile, welches für den 644A kompiliert wurde, 1:1> auf den 164A flashen?
Flashen kannst du immer alles, was in den Flash reinpaßt, das ist doch
klar. Ob das geflashte Programm dann aber auch läuft, ist eine ganz
andere Frage.
> Das Programm belegt 5KB Flash, 190Byte Sram und 2> Byte EEprom.
Schon das kannst du garnicht wissen, jedenfalls nicht, wenn du wirklich
nur das Hexfile hast und dieses auch nicht weiter analysiert hast.
> Oder gibt es da feine Unterschiede, die im Datenblatt wieder bestmöglich> versteckt sind?
Versteckt wird da garnichts. Es ist nur eine Schweinearbeit, jedes
verschissene Register detailliert zu vergleichen. Ich hatte keine Lust
dazu und du offensichtlich auch nicht.
Da es aber dein Problem ist, bin ich hier fein raus...
Aber wie schon gesagt: Selbst wenn auch penibelste Vergleiche der
Register kein Unterschiede aufzeigen, so bleibt doch immer noch dein
potentielles Unwissen über die tatsächliche Speichernutzung zurLaufzeit als Risikofaktor.
c-hater schrieb:> Keine Ahnung, ob die beiden wirklich so weitgehend identisch sind, ich> hatte keine Lust, die beiden DB Stück für Stück zu vergleichen.
Na ja, da es sich dabei nicht um zwei verschiedene, sondern nur um ein
einziges Datenblatt handelt, ist das doch nicht ganz so schwierig. Das
selbe gilt für die INterrupt-Vektoren.
Peter K. schrieb:> compilierenOliver S. schrieb:> Da der Mega644 mehr Sram hat, wird es Schwierigkeiten geben, wenn der> Stackpointer "manuell" auf das Ende des Srams gesetzt wird.
Ich hätte vielleicht noch dazuschreiben sollen, daß avrgcc mit avrlibc
den Stackpointer immer "manuell" setzt. Damit geht spätestens das erste
return auf einem 164er in die Hose, da der SP da ins Nirwana zeigt.
Oliver