Forum: Mikrocontroller und Digitale Elektronik Atmega 16 / 32


von Sven (Gast)


Lesenswert?

Servus!

Habe einen Atmega 16 in meinem Bauteil. Jetzt reicht der Speicherplatz
nicht mehr aus. Kann ich den Controller einfach durch einen Atmega 32
ersetzen. Muss ich die Fuses verändern? Wird der Quellcode genauso noch
funktionieren? Ist das genau der selbe Controller nur mit mehr
Speicher.

Danke im Voraus, Gruss Sven

von Jan M. (Gast)


Lesenswert?

Im Prinzip ja. ABER:
Es sind verschiedene Controller, zwar pinkompatibel, aber nicht bei den
inneren Werten: Die Register und Bits haben andere Namen und Positionen.
Einige gibt es neu, andere sind verschwunden, manche haben sich
verändert. Du musst also jedes einzelne Register durchgehen und
gegebenfalls ändern.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Du musst also jedes einzelne Register durchgehen und
>gegebenfalls ändern.

Das kann man ziemlich einfach dadurch lösen, indem man sich die
Registerübersichten beider Controller ausdruckt (Bestandteil des
Datenblattes) und nebeneinander legt.
Wenn man in C programmiert, braucht man "nur" das Makefile anpassen,
den Quellcode compilieren lassen und sich gegebenenfalls um die
aufgetretenen Fehler kümmern.
Man sollte auch die entsprechenden Makros für Register und
Register-Flags benutzt haben. Das erspart noch mehr Probleme bei der
Fehlersuche.

von Kri (Gast)


Lesenswert?

Eigentlich reicht ein Durchgang mit dem Assembler und dem Simulator...
bei Register die er nicht kennt, kann man z.b. im AVR-Studio gleich mal
unter I/O-View nachschauen (richtiger AVR vorrausgesetzt).

1 16-bit Timer mehr
4 PWM-Channels mehr
1 UART mehr
mehr Interrupts (intern und extern)

d.h. bei den UART - Registern kommt noch eine Indexzahl hinzu z.b.
statt USART USART0 oder USART1.
Die Interrupt-Tabelle kannst direkt vom Datenblatt rausnehmen (ASM
vorausgesetzt)

Dürfte aber alles in 5min geändert sein.

von crazy horse (Gast)


Lesenswert?

irgendwann hatte ich das Problem auch mal, ausser geänderten
Interrupt-Vektoren sind mir keine Unterschiede aufgefallen.
-zus. 16bit-Timer: nicht gefunden
-4 PWM-Channels mehr: nicht gefunden
-1 UART mehr: nicht gefunden

Ich behaupte mal, mit einer Mega32.inc statt Mega16.inc ist das
gegessen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Ich behaupte mal, mit einer Mega32.inc statt Mega16.inc ist das
>gegessen.

Wenn man Makros benutzt auf jeden Fall.
Wenn man natürlich Register mit irgendwelchen handgerechneten Werten
belegt, kann es zu Problemen führen (irgendwelche Bits in gewissen
Registern sind vertauscht).

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.