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
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.
>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.
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.
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.