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.
Da der Mega644 mehr Sram hat, wird es Schwierigkeiten geben, wenn der Stackpointer "manuell" auf das Ende des Srams gesetzt wird. Oliver
Mein erster Verdächtiger auf mögliche Unterschiede ist die Tabelle der Interruptvektoren. Abraten muss man von so einem Vorgehen dennoch.
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 zur Laufzeit 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: > compilieren Oliver 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
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.