Forum: Mikrocontroller und Digitale Elektronik 8535 durch Mega16 ersetzen


von Volker (Gast)


Lesenswert?

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

von mikki merten (Gast)


Lesenswert?

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.

von Ralf Engel (Gast)


Lesenswert?

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

von mikki merten (Gast)


Lesenswert?

Hast du auch auf externen Takt umgestellt ?
Normaler Auslieferungszustand: interner 1 MHz Oszillator enabled

von Volker (Gast)


Lesenswert?

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

von Ralf Engel (Gast)


Lesenswert?

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

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.