Atmega 16 / 32

Gast #400560
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
Gast #400561
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.
Gast #400562
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.
Gast #400563
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.
Gast #400564
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.
Gast #400565
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).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.