Hallo Leute! Ich bin gerade auf der Suche nach einer Kompatibilitätsliste von Atmel-Kontrollern. Voranging erstmal die 8-Bit-Reihe. Gibt es eine Übersicht in der vermerkt ist, welche Kontroller zu welchen Pinkompatibel ist? Wie zum beispiel die 40-Pin-DIP-Varianten von ATmega32 und ATmega644! Nice, aber nicht unbedingt notwendig wäre eine ähnliche Liste für die Binärkompatibilität. Dies ist aber nicht unbedingt Notwendig, wenn sich die Register- und Flagbezeichnungen untereinander nicht ändern und man vernünftig programmiert. Mein Anliegen wäre es, im Falle dass man Aufrüsten möchte, eine einfache Liste zu haben in der man leicht den "nächst größeren" Kontroller herausfinden kann. Die Liste der AVR Typen gibt zwar einigen Aufschluss, ich denke aber, ich interpretiere hier auch etwas falsch. Der Link in dem Thread Beitrag "Pinkompatibel zu Mega32" half mir leider auch nicht wirklich weiter. ______ Im konkretem Falle möchte ich herausfinden, ob ich die 04-Pin-Dip-Version des ATmega128 /* ATmega1284P-PU */ mit dem STK500 (ohne den STK501 für die SMD-Varianten) programmieren kann. In der Liste der nutzbaren Kontroller des STK500 steht er natürlich nicht drin. Das aber muss nichts heißen, da diese Liste nicht mehr gepflegt wird. Zum Beispiel steht zwar der ATmega32 drin, aber nicht der ATmega644 der zum 32er Pinkompatibel ist und auch auf dem STK500 funktioniert. Laut dem Artikel über die AVR Typen gäbe die 4 in der Typenbezeichnung an, dass es sich um pinkompatible 40/44-pinnige Kontroller handelt. Also meine ich, mit dem ATmega128/4/ (ATmega64/4/ geht ja) gute Chancen zu haben. Aber auf meinem ATmega32 steht keine 4 dahinter. Deshalb hätte ich ganz gerne eine Kompatibilitätsliste um es verifizieren zu können. Ich bedanke mich vielmals Gruß BrEin
Fabian Hoemcke schrieb: > Im konkretem Falle möchte ich herausfinden, ob ich die > 04-Pin-Dip-Version des ATmega128 /* ATmega1284P-PU */ mit dem STK500 > (ohne den STK501 für die SMD-Varianten) programmieren kann. Davon abgesehen, dass das keine "Version des ATmega128" ist, sondern ein ziemlich eigenständiger Controller (am ehesten noch wäre es die 128-KiB-Erweiterung des ATmega644), ja, den kannst du im STK500 wie einen ATmega16/32/164/324/644 programmieren. Er ist zu diesen ausreichend pinkompatibel (komplett pinkompatibel zu 164/324/644 und aufwärtskompatibel zu 16 und 32). Programmiertechnisch ist er zu 164/324/644 aufwärtskompatibel, d. h. er enthält zusätzlich noch Dinge, die in denen nicht drin sind (der Timer 3 fällt mir hier ein, wobei das selbst Atmel beim Zusammenlegen der Datenblätter von 164/324/644 und 1284 in ein Gesamtdatenblatt vermasselt hat ;-).
Hallo Fabian, Du weisst, dass "kompatibel" auf deutsch "blindes Vertrauen" heisst? :-) Ernsthafter: Ohne zu wissen, was identisch oder ähnlich sein muss, kann man keine solche Liste erstellen. Allerdings hat Atmel in den neuen Famielien ja meist einige Skalierungs-Varianten vorgesehen (z.B. ATMega48, ATMega88, ATMega168...). Die sind dann aber auch in einem Datenblatt beschrieben. Grüße, Kurt
Naja, bei den AVRs kann man schon "Linien" aufstellen:
1 | AT90S1200 → AT90S2313 → ATtiny2313 → ATtiny4313 |
2 | |
3 | AT90S2333 → AT90S4433 → ATmega8 → ATmega48/88/168/328 |
4 | |
5 | AT90S2343 → ATtiny11/12/13/15 → ATtiny25/45/85 |
6 | |
7 | AT90S4414 → AT90S8515 → ATmega8515 → (ATmega161?) → ATmega162 |
8 | |
9 | AT90S4434 → AT90S8535 → ATmega163 → ATmega16/32 → ATmega644 → ATmega164P/324P/644P → ATmega1284P |
10 | |
11 | ATmega103 → ATmega128 → ATmega1281 → ATmega2561 |
12 | |
13 | ATmega640 → ATmega1280 → ATmega2560 |
14 | |
15 | AT90USB646/647/1286/1287 |
16 | |
17 | AT90USB82 → AT90USB162 → ATmega16U2/32U2 |
18 | |
19 | ATtiny24/44/84 |
20 | |
21 | ATtiny26 → ATtiny261/461/861 |
22 | |
23 | ATtiny10 → ATtiny4/5/9 |
Linien, die im Diagramm weiter rechts erst anfangen, sind geschichtlich später hinzu gekommen.
@All Danke für die schnellen, kompetenten und hilfreichen Antworten. Das bringt mich auf jeden Fall ein gutes Stück weiter! @dl8dtl Wieso ist der ATmega1284 keine Version des ATmega128? Sind mega324, mega644, ... auch keine Versionen der mega32, mega64, ...? Wenn dem so ist, ist die Namensgebung doch recht verwirrend. Gruß Fabian
Fabian Hoemcke schrieb: > Wieso ist der ATmega1284 keine Version des ATmega128? Weil er erstens viel jünger ist (was man an vielen Features merkt, beispielsweise dem RC-Oszillator oder dem Watchdog), und andererseits weil er ein völlig anderes Pinout hat. Schau dir oben meine "Linien" an, da siehst du, wo der ATmega1284P einzuordnen ist. > Sind mega324, mega644, ... auch keine Versionen der mega32, mega64, ...? Sie sind Weiterentwicklungen, die zumindest in der gleichen Linie liegen. > Wenn dem so ist, ist die Namensgebung doch recht verwirrend. Nö. Alle neueren AVRs haben ein ziemlich einheitliches Namensschema: ATtiny oder ATmega, gefolgt von der Größe des Flashs, gefolgt von einer Ziffer im Suffix, die die "Linie" angibt (jeweils bezogen auf Mega oder Tiny, also ATmega...4 ist natürlich was komplett anderes als ATtiny...4). Vor dieser Vereinheitlichung ging's aber reichlich wild zu. Die alten AT90S-Devices hatten die erste Ziffer für die Flashgröße, aber das Schema musste natürlich jenseits von 8 KiB scheitern, und die nachfolgenden Ziffern waren in ihrem Zusammenhang kaum zu erraten.
@dl8dtl Boah! Besten Dank! Ich wusste doch, ich interpretierte das falsch! ;) Danke Fabian
wirklich binärmopatibel sind die aber auch nicht, oder kann ich in einen AtMega644P das hex-File eines AtMega164P flashen? die Pointer-Register sind doch unterschiedlich breit.
Vlad Tepesch schrieb: > wirklich binärmopatibel sind die aber auch nicht, oder kann ich in einen > AtMega644P das hex-File eines AtMega164P flashen? Doch, innerhalb einer solchen Familie (also die, die ein gemeinsames Datenblatt haben) sollte das klappen, solange sich nicht auch noch die PC-Größe ändert (also ATmega1281 und ATmega2561 sind nicht mehr binärkompatibel, aber ATmega640 nach ATmega1280 schon).
Hi >Doch, innerhalb einer solchen Familie (also die, die ein gemeinsames >Datenblatt haben) sollte das klappen, solange sich nicht auch noch >die PC-Größe ändert (also ATmega1281 und ATmega2561 sind nicht mehr >binärkompatibel, aber ATmega640 nach ATmega1280 schon). Nicht ganz. Auch innerhalb einer 'Familie' gibt es Unterschiede. Beispiel ATMega48...328: ATMega48/88 können nur 'rjmp', ab ATMega168 'rjmp' und 'jmp'. Die IV-Tabelle richtet sich nach nach dem Sprungbefehl mit der größten Sprungweite. Ein für einen ATMega168 assembliertes/compiliertes Programm wird, wenn es Interrupts benutzt, nicht auf einem ATMega48 laufen. Auch wenn es in den Speicher passt. MfG Spess
OK! Mit >>Binärkompatibel<< hatte ich mich falsch ausgedrückt, auch wenn mich eine solche Liste ebenso interessiert hätte. Mir ging es eher darum, einen Sourcecode von einem Atmel-Kontroller schnappen zu können, ihn für den Neuen kompilieren zu können und zu flashen. Und das ohne umzuschreiben. Ich programmiere in C und selten in Assembler. Gruß BrEin
das kommt zum Teil auch auf das Alter des Codes an. die Defintionen für die neuen enthalten eine ältere, seit lamgem als depricated gekennzeichneten Makros nicht mehr. Anonsten kann man natürlcih auch beim Programmieren einen Großteil dazu beitragen, dass nur an wenigen Stellen geändert werden muss.
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.