Forum: Mikrocontroller und Digitale Elektronik Kompatibilität (Pin und Binär)


von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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 ;-).

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

@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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

@dl8dtl

Boah! Besten Dank!

Ich wusste doch, ich interpretierte das falsch! ;)

Danke
Fabian

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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).

von spess53 (Gast)


Lesenswert?

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

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

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

von Vlad T. (vlad_tepesch)


Lesenswert?

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