8535 durch Mega16 ersetzen

Gast #27198
Hallo zusammen,

meine kleine Applikation ist das letzte Jahr über beständig gewachsen. 
Langsam geht mir der Speicher im 8535 aus. Kann ich diesen durch z.B. 
einen Mega16 in der Schaltung ersetzen? Pinkompatibel scheinen sie ja zu 
sein, muss ich etwas besonderes beachten? Auf der Atmel Homepage konnte 
ich leider keine Infos dazu finden.
Vielen Dank für die Tipps :-)

Volker
Gast
Du mußt nur die Interrupt Tabelle anpassen (Mega 16 mehr Einträge und 2 
Worte Länge pro Eintrag für JMP xxxx anstelle von RJMP beim 8535). 
Ebenso mußt du evtl. einige RCALL und RJMP Befehl bei 
Assemblerprogrammierung durch CALL umd JMP ersetzten, da der MEGA16 >8 
Flash hat und daher mit RCALL und RJMP nicht mehr der komplette Speicher 
adressierbar ist. In einigen Fällen ist auch eine Anpassung der UART 
RX/TX Routinen erforderlich, da dieser nunmehr über ein FIFO verfügt.
Gast
Hallo,

habe z.Z. das gleiche Problem. Ich habe testweise Code verfasst für den 
8535 (Interruptroutine lässt eine LED im Sekundentakt aufblinken, 
außerdem ist am Port C (Datenbus) und Port A (Kontrollbus) ein 
graphisches LCD angeschlossen. Das funktioniert mit 8535 ganz gut, nun 
sollen noch ein paar zusätzliche Routinen rein. Der gleiche Code läuft 
aber auf dem Mega16/32 nicht mehr richtig. Interrupttabellen sind 
angepasst, ansonsten gleicher Code und nach Austausch des AVR blinkt 
zwar die LED, aber das LCD dreht total am Rad. Ich habe keinen 
speziellen Code benutzt, Takt ist 4 MHz, alle Delays sind mit Schleifen 
programmiert.

Gibt's da noch andere Inkompatibilitäten, evt. mit den Ports?

Das LCD funktioniert, sobald der 8535 wieder drinsteckt, ohne 
Probleme...

Gruß   R A L F
Gast
Klingt ja erstmal nicht unmöglich :-) Ich habe eigentlich alles in C 
programmiert. Es sollte beim AVR-GCC doch eigentlich reichen den 8535 
druch den Mega16 zu ersetzen (Registerdef. usw), dann müsste es 
rascheln? Die UART Routinen stehen noch aus und ich würde die dann 
gleich auf dem Mega16 entwickeln, um so besser, dass der nen 
integrierten Fifo hat.

Viele Grüsse

Volker
Gast
So, bin mal ein gutes Stück weiter:

wichtig bei der Migration von 8535 auf mega16/32 sind die Fuses! Bei mir 
war z.B. das Problem, dass das Flag JTAGEN gesetzt war und dadurch der 
PORT C blockiert war. Das ist im Auslieferungszustand per default so! Am 
besten alle Fuses mal durchgehen anhand des Datenblattes und überprüfen, 
ob sie richtig gesetzt sind. Die meisten Brennprogramme erlauben das 
Auslesen und Setzen der Fuses.

Dummerweise habe ich mir dabei die Clock-Einstellungen alle auf 0 
gesetzt (externer Takt) und kann nun nicht mehr auf den AVR zugreifen. 
Die sollten bei Quarzbetrieb alle auf 1 gesetzt sein. Mal sehen, wie ich 
das wieder rückgängig mache :-(


Gruß   R A L F

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.