Forum: Mikrocontroller und Digitale Elektronik AVR®DD family, low pin count devices


von Georg M. (g_m)


Lesenswert?

Wenn ich mir die I/O Multiplexing Tabelle vom AVR32DD14 anschaue, habe 
ich das Gefühl, dass diese SOIC-14 Variante als Abfallprodukt entworfen 
wurde.

Z.B.:
TCA: WO0 WO1 WO2³
TCD: WOD³ WOC³
ADC: AIN4 AIN5 AIN6 AIN7 AIN29 AIN30 AIN31
AC:  AINN2 AINP3 AINN3 AINP4

 ³Alternate pin positions.

von Jan V. (janv)


Lesenswert?

Georg M. schrieb:
> habe ich das Gefühl

Möchtest Du hier über Deine Gefühle diskutieren? Meins sagt mir das ist 
ein schönes Update zu Typen wie dem Tiny1614. Und ebenso wie dieser 
trotz SMD Größe sehr angenehm lötbar.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

solche Aussagen von Georg bringen nichts. Bspw. ganze CPU und GPU Serien 
bestehen aus "Downgrades" durch systematische Defekte während der 
Produktion. Sind die deshalb alle Minderwertig? Bezieht sich übrigens 
auf fast die gesamte Halbleiterproduktion. Also auch Mosfets usw. usw.. 
Solange die Specs eingehalten werden, und das müssen sie, ist doch alles 
gut. Den einzigen Nachteil dabei hat der Hersteller der ein nicht 
vollwertig funktionierenden "Chip" nicht zum vollen Preis verkaufen 
kann. Ganz entsorgen muss er ihn aber auch nicht. Vorteil für die Kunden 
mit mehr Auswahl. Also sind wir doch lieber froh das es so gemacht wird 
wie es gemacht wird.

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


Lesenswert?

Veit D. schrieb:
> Bspw. ganze CPU und GPU Serien bestehen aus "Downgrades" durch
> systematische Defekte während der Produktion.

Mag bei diesen sein, bei Controllern eher nicht.

Was allerdings ganz und gar üblich ist: nur einen Teil des Speichers im 
Controller zur Nutzung freizugeben und auf diese Weise die kleineren 
MCUs realisieren. Die können dann auch billiger verkauft werden – nicht 
nur, weil der Hersteller mit den größeren Exemplaren mehr Geld scheffeln 
will, sondern auch, weil die Kosten für die Inbetriebnahme und den Test 
des Flashs einen substanziellen Anteil an den Gesamtkosten ausmachen. 
Muss man also nur ein Viertel des eigentlich implementierten Flashs 
testen, wird der Chip deutlich billiger. Sollten sich später die 
kleineren Exemplare in hinreichend großen Stückzahlen verkaufen, kann 
man sich als Hersteller allemal noch überlegen, ob man den Aufwand für 
Design und Charakterisierung investiert, einen real kleineren Chip dafür 
zusammenzuschieben. Aus Sicht des Kunden bleibt sich das ja gleich.

Ist aber nicht immer so: den ATtiny48 konnte man beispielsweise in einem 
kleineren QFN-Gehäuse anbieten als den ATtiny88, weil der Chip wirklich 
kleiner war. Allerdings sind diese "runter gestrickten" Varianten von 
ATmega48/88 ohnehin erst später aufgrund von Kundennachfrage geschaffen 
worden.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich kann mir nicht vorstellen das es bei µC gar nicht gemacht wird. Wäre 
ja schon etwas Wahnsinn wegen kleinen Defekten ganze "Chips" zu 
entsorgen. Aber egal, wir wissen was gemeint ist.

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


Lesenswert?

Veit D. schrieb:
> ich kann mir nicht vorstellen das es bei µC gar nicht gemacht wird

Wie ich schon schrieb: der Test des Flashs selbst ist ein so teurer 
Schritt, dass man bei den kleineren Devices lieber einfach weniger 
testet (und dann die Fuses entsprechend setzt).

Bei Ausbeuten in der Größenordnung von 80 oder 90 % lohnt es nicht, den 
restlichen paar Prozent noch groß Aufwand hinterher zu werfen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

naja Moment. Man kann ja nur von vorn herein weniger testen wenn man 
schon vorm Testen weiß das der Flash oder was weiß ich Defekte hat. Das 
ist eine andere Herangehensweise wie im Vergleich pauschal wegwerfen. 
Während der Produktion mit den vielen Tests zwischendurch fallen die 
Daten an ob, welche und wo Defekte sind. Das heißt der Tester weiß 
vorher schon was er testen muss und was nicht. Damit fallen keine 
zusätzlichen sinnlosen Tests an. So wird ein Schuh daraus.

Außerdem denke ich wir reden hier über Details wo es sehr darauf ankommt 
wie man auf bestimmte Dinge schaut und was man sonst so darüber weiß. 
Man läuft Gefahr trotz Wissen darüber komplett aneinander vorbeizureden. 
Ein zwei Missverständnisse können zum sinnlosen Streit oder heftige 
Diskussionen führen. Das hatte ich schon bei älteren Threads zu solchen 
Themen bemerkt auch in anderen Foren. Da treffen sich Leute die sich in 
der Branche auskennen, jeder weiß was anderes, jeder hat hier und da den 
Überblick und trotzdem redet man erstmal lang und breit aneinander 
vorbei. Das will ich nicht das bringt nichts. Sowas kann man nur Offline 
besprechen.

von Thomas (Gast)


Lesenswert?

Georg M. schrieb:
> I/O Multiplexing [...] Abfallprodukt

Magst du das mal eben erläutern?

I/O Multiplexing heißt ausdrücklich nicht "Oh, der Pin ist zwar 
Schrott, aber da kann sich der Anwender ja was anderes drauf 
konfigurieren".

Ja, es gab in der Vergangenheit Probleme mit dem Multiplexer, z.B. war 
eine alternative Beschaltung nicht komplett durch verdrahtet. Passiert. 
Aber grundsätzlich ist das kein Schrott.

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


Lesenswert?

Veit D. schrieb:
> Während der Produktion mit den vielen Tests zwischendurch fallen die
> Daten an ob, welche und wo Defekte sind.

Bei Flash nicht. Der ist während der Produktion noch nicht groß 
auswertbar, weil er am Ende in einem wohl recht aufwändigen Verfahren 
"aufgeweckt" werden muss, bevor man überhaupt weiß, was darin geht.

von Georg M. (g_m)


Lesenswert?

Thomas schrieb:
> Magst du das mal eben erläutern?

Wenn der dritte PWM-Kanal nur als "alternate pin positions" verfügbar 
ist, dann entsteht der Verdacht, dass der Chip und das Gehäuse nicht 
zueinanderpassen, dass gar kein Chip (Die) speziell für die 
14-Pin-Variante entworfen und produziert wird.

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


Lesenswert?

Georg M. schrieb:
> dass gar kein Chip (Die) speziell für die 14-Pin-Variante entworfen und
> produziert wird.

Ja klar, glaubst du, die produzieren für jede Pinanzahl einen eigenen 
Chip?

Das wäre viel zu teuer.

Kuriosum sind in der Hinsicht die ATmega1280/1281. Da der ATmega1281 in 
der Linie von ATmega103 und ATmega128 liegt, hat er seine ISP-Pins nicht 
auf den SPI-Pins, sondern auf separaten PDI/PDO (gedoppelt mit den Pins 
von UART0). Bei den 100-Pin-Varianten dagegen wollte man die 
Standard-SPI-Pins benutzen. Dementsprechend hat die interne OTP-Fuse 
nicht nur die JTAGID zwischen beiden Varianten umgeschaltet, sondern 
auch das Routing für die Programmierpins.

Beim ATmega128RFA1 (der den MCU-Core des ATmega1281 benutzt) mussten wir 
uns dann entscheiden, welche der Varianten wir nehmen wollen. Wir haben 
uns gegen die ATmega103-Kompatibilität entschieden :-), d.h. er wird 
normal über die SPI-Pins programmiert.

von Jan V. (janv)


Lesenswert?

Georg M. schrieb:
> speziell für die
> 14-Pin-Variante

müssen bei einem leistungsfähigeren Chip natürlicherweise die meisten 
Kompromisse bei der Belegung der begrenzten Pinanzahl gemacht werden.
Wär Dir statt dessen ein minderwertigerer Chip lieber?

P.S. Die DD Serie bietet übrigens erstmalig bis 64KB Flash-Speicher in 
einem winzigen SOIC-14 bei einem AVR.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hab mal welche bestellt. Mal gucken, ob sie mehr oder weniger Fehler als 
die DA/DB-Serie haben ;-)

von Heinz K. (heinz_k960)


Lesenswert?

Ein paar ergänzende Frage zur AVR DD Serie:
1. Welche Entwicklungsumgebung nutzt man hier am ehesten? Konkretes 
Szenario: Ich habe einen C-Sourcecode, besser einen Arduino code für den 
Atmega328 und möchte diesen auf den AVRxxDD14 portieren. Bis dato hatte 
ich VScode und platformio benutzt. Leider hinkt platformio beim Dx core 
etwas hinterher und mein gewünschtes Device AVR32DD14 wird (noch) nicht 
unterstützt wohl aber der AVR64DD14. Weiss jemand, ob ich den 
Device-Eintrag in der platformio.ini auch nutzen kann?

Vorweg: ich würde auch den AVR64DD14 nutzen - den gibt es aber aktuell 
bei meinem Lieblings-Distri nicht - deshalb der AVR32DD14.

Auf Arduino zurück will ich aber ungern wechseln. Eher kann ich mir ein 
Umstieg auf C-code ohne Arduino libs vorstellen. Nur welche IDE nutzen? 
Bleibt ja nur das Microchip/ Atmel Studio. Wie sieht es bei euch hier 
aus? Was nutzt ihr für die AVR Dx Serie?

Danke für eure Rückmeldungen.

@Moderator: Bitte ggf. den Beitrag verschieben: Z.B: hier 
Beitrag "neue AVR-µCs: Entwicklungsumgebung", Danke

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Heinz K. schrieb:

> etwas hinterher und mein gewünschtes Device AVR32DD14 wird (noch) nicht
> unterstützt wohl aber der AVR64DD14. Weiss jemand, ob ich den
> Device-Eintrag in der platformio.ini auch nutzen kann?

Die beiden dürften sich wirklich nur in den Speichergrößen 
unterscheiden, da solltest du problemlos einen Clone vom 64er für den 
32er selbst zurecht feilen können. Habe bei einem früheren Brötchengeber 
auch mal platformio gemacht, die Beschreibungsdateien sind ja nun keine 
Raketenwissenschaft.

> Was nutzt ihr für die AVR Dx Serie?

Das, was ich sonst auch für alles andere benutze: Emacs, ist doch klar. 
:-)

'ne IDE sollte doch nun wirklich nicht an konkrete Devices gebunden 
sein. Wichtiger ist es halt, dass die Toolchain das Device unterstützt, 
die du benutzt.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Heinz K. schrieb:

> Nur welche IDE nutzen?

Jede, die du hinreichend konfiguriert bekommst.

> Bleibt ja nur das Microchip/ Atmel Studio.

Nein, eigentlich eher nicht. Denn MC will das Atmel-Erbe über kurz oder 
lang beerdigen. Wennschon eine (für dich) neue Welt, dann heißt sie: 
MPLAB-X. So Scheiße dieser Dreck auch ist. Aber wenn man nicht 
Atmel-Studio-Komfort-vorbelastet ist, ist er wohl sogar akzeptabel.

Man weiß dann einfach nicht, wie schön und einfach die Sache sein 
könnte, wenn irgendwer mal darüber nachgedacht hätte, wie ein 
brauchbares GUI aussehen müsste...

von Heinz K. (heinz_k960)


Lesenswert?

Jörg W. schrieb:
>
> Das, was ich sonst auch für alles andere benutze: Emacs, ist doch klar.
> :-)
> 'ne IDE sollte doch nun wirklich nicht an konkrete Devices gebunden
> sein. Wichtiger ist es halt, dass die Toolchain das Device unterstützt,
> die du benutzt.
Ja, genau. BTW: Wie du das mit Emacs gemacht hast, würde mich auch mal 
interessieren;-)
Ansonsten versuche ich den Vorschlag von Ob S. -> MPLAB-X

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


Lesenswert?

Heinz K. schrieb:
> Wie du das mit Emacs gemacht hast, würde mich auch mal interessieren;-)

Was denn genau?  Man schreibt den Code im Editor, für die Cross-Referenz 
gibt es Cscope, und mit ein paar Tasten kann man "make" oder den 
Debugger anwerfen. OK, für letzteres hätte ich für diese neueren AVRs 
noch keine Lösung, AVaRICE unterstützt die bislang nicht (und ich habe 
vermutlich auch nicht mehr den Enthusiasmus, das noch einzubauen).

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wichtig ist ja erst mal, dass deine Toolchain das Device unterstützt.

GCC unterstützt AVRxxDD14 ab v13.3, AVR-LibC ab v2.2.1

https://gcc.gnu.org/gcc-13/changes.html#avr
https://github.com/avrdudes/avr-libc/blob/16b742119eaed8d966929033b1ad325faea89798/NEWS#L1-L179

Für ältere Versionen gibt es Device-Packs wie beschrieben in

https://gcc.gnu.org/wiki/avr-gcc#atpack

Zu beachten ist dabei, dass specs-Files nicht zu 100% von der 
GCC-Version unabhängig sind.  Atmochip unterstützt soweit ich weiß 
maximal GCC v7 in den Packs.

Zudem liefern atpacks auch keine 100%igen Unterstützung weil Teile der 
AVR-LibC.h wie boot.h, power.h, wdt.h teils explicite #ifdef mcu 
enthalten.

Unterstützung von FLMAP gibt's ab GCC v14, was aber nur für den AVR64 
relevant ist; bei kleineren Flash-Größen passt ja der ganze ≤ 32 KiB 
Flash in den RAM-Adressraum.

https://gcc.gnu.org/gcc-14/changes.html#avr

Bei Flash ≤ 32 KiB wiederum, mach es einen Unterschied, ob man GCC ≤ v7 
verwendet oder GCC ≥ v8:

Bis v7: .rodata liegt im RAM, Devices gehören zu avrxmega2.

Ab v8: .rodata liegt im Flash. Devices gehören zu avrxmega3. Man braucht 
also kein Gehampel wie pgm_read_xxx.

https://gcc.gnu.org/gcc-8/changes.html#avr

Unterstützung für Compact Vector Table wird es ab AVR-LibC v2.3 / GCC 
v15 geben; dürfte für so reichlich ausgestattete Devices aber kaum von 
Interesse sein.

https://gcc.gnu.org/gcc-15/changes.html#avr

von Peter D. (peda)


Lesenswert?

Jörg W. schrieb:
> Da der ATmega1281 in
> der Linie von ATmega103 und ATmega128 liegt, hat er seine ISP-Pins nicht
> auf den SPI-Pins, sondern auf separaten PDI/PDO (gedoppelt mit den Pins
> von UART0).

Das betrifft auch die anderen AVRs im TQFP-64, z.B. AT90CAN32, 64, 128, 
ATmega2561.
Ich finde das ganz praktisch, man kann dann über die ISP-Pins eine 
Debug-UART an den PC anschließen. Ich hab mir dafür auch einen Isolator 
mit HCPL2232 gebastelt und bis zu 3000V benutzt.

Die M103C Fuse haben aber nur der ATmega64, ATmega128 und der 
ATmega128A.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Jörg W. schrieb:
> Ist aber nicht immer so: den ATtiny48 konnte man beispielsweise in einem
> kleineren QFN-Gehäuse anbieten als den ATtiny88, weil der Chip wirklich
> kleiner war.

Auch die ATtiny25/45/58 gibt es in verschiedenen Gehäusen, d.h. die 
Chips sind unterschiedlich groß (ATtiny25-20SSN: S8S1, ATtiny45-20XU: 
8X).

von Veit D. (devil-elec)


Lesenswert?

Heinz K. schrieb:
> Auf Arduino zurück will ich aber ungern wechseln. Eher kann ich mir ein
> Umstieg auf C-code ohne Arduino libs vorstellen. Nur welche IDE nutzen?
> Bleibt ja nur das Microchip/ Atmel Studio. Wie sieht es bei euch hier
> aus? Was nutzt ihr für die AVR Dx Serie?

- Arduino IDE 2.x
- Microchip Studio
- ATmega 4809
- AVR DB
- AVR EA

von Heinz K. (heinz_k960)


Lesenswert?

Veit D. schrieb:
> Heinz K. schrieb:
>> Auf Arduino zurück will ich aber ungern wechseln. Eher kann ich mir ein
>> Umstieg auf C-code ohne Arduino libs vorstellen. Nur welche IDE nutzen?
>> Bleibt ja nur das Microchip/ Atmel Studio. Wie sieht es bei euch hier
>> aus? Was nutzt ihr für die AVR Dx Serie?
>
> - Arduino IDE 2.x
> - Microchip Studio
> - ATmega 4809
> - AVR DB
> - AVR EA

Die letzten 3 genannten sind andere AVR Controller keine IDE‘s. Oder wie 
ist das gemeint?

Ich habe gerade geschaut und für meine Anwendung würde auch der 
Attiny3216 reichen. Nur da fängt das Chaos an. Irgendwie schafft es MC 
immer wieder keine einheitliche Produktfamilie aufzuziehen. Beispiel 
Taktfrequenz:
Attiny 1 Series: 20Mhz für Vcc > 4,5V und 10Mhz für Vcc> 2,7V
Avr Dx: 24Mhz

Was soll die geringe Taktung bei 3.3V Betrieb in der heutigen Zeit? Die 
ganzen ARM Cores takten ab 48 MHz ohne Einschränkungen und verbrauchen 
auch nicht mehr Strom als die ganzen MC AVR Controller.

Leider sind mir die STM Controller zu komplex, sonst wäre ich schon 
längst auf die umgestiegen.Programmierung ohne HAL ist möglich aber 
recht aufwändig. Deshalb fand ich die AVR DX Reihe eigentlich ganz gut. 
Leistungsfähig aber noch gut auf Registerebene beherrschbar.

UPDI bei MC ist auch so eine Sache. Programmierung hierüber ist möglich 
mit einfachen Adaptern. Fürs Debugging muss man tief in die Tasche 
greifen . Bei ARM M Cores ist das alles seit Jahren standardisiert.

von Heinz K. (heinz_k960)


Lesenswert?

Johann L. schrieb:
> Wichtig ist ja erst mal, dass deine Toolchain das Device unterstützt.

Danke, Johann. Das war eine super Übersicht der Änderungen!

Danke auch an alle anderen für die Infos. Ich denke ich komme jetzt 
etwas weiter.

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


Lesenswert?

Heinz K. schrieb:
> Die ganzen ARM Cores takten ab 48 MHz ohne Einschränkungen

Keineswegs "ohne Einschränkungen". Oft schafft der Flash das dann nur 
mit Waitstates, d.h. "ohne Einschränkungen" kannst du den vollen Takt 
nur nutzen, wenn du das Programm aus dem RAM arbeiten lässt (was ein AVR 
nicht kann).

Den CPU-Core auf Geschwindigkeit zu bekommen, ist im Vergleich dazu das 
kleinere Problem.

von Peter D. (peda)


Lesenswert?

Heinz K. schrieb:
> Ich habe gerade geschaut und für meine Anwendung würde auch der
> Attiny3216 reichen. Nur da fängt das Chaos an. Irgendwie schafft es MC
> immer wieder keine einheitliche Produktfamilie aufzuziehen.

Das nervt mich auch total, diese Inflation an ständig neuen Typen und 
Namensgebungen. Und dann sind es oft nur minimale Änderungen 
(Inkompatibilitäten), so daß es schwerfällt, einen geeigneten Typ zu 
finden.

Bei den klassischen Tiny/Mega war alles noch aus einem Guß, nur der 
ATtiny861 fiel etwas aus dem Rahmen mit seinen Timern.
Warum die Unterscheidung Tiny/Mega notwendig war, habe ich allerdings 
damals schon nicht verstanden. Der ATtiny48/88 hat 4 IO-Pins mehr als 
der ATmega48/88 und deshalb heißt er winzig?

Da diese "netten Spielereien" der neuen Typen nicht wirklich einen 
Quantensprung für meine Anwendungen bringen, bleibe ich daher bei den 
klassischen Tiny/Mega. Da kenne ich alle Eigenheiten und habe schon 
erprobte Libs für alles. Ich brauche mich also nicht auf Bugs und 
sonstige Überraschungen einzulassen. Wenn ein Programm logisch läuft, 
dann läuft es auch real.

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


Lesenswert?

Peter D. schrieb:
> Warum die Unterscheidung Tiny/Mega notwendig war, habe ich allerdings
> damals schon nicht verstanden.

Der CPU Core macht den Unterschied. Allerdings waren die ATmega8 und 
Nachfolger gar keine "richtigen Mega", was man beispielsweise am 
fehlenden JTAG sehen konnte. Der ATtiny48/88 wurde wohl dann für einen 
Großkunden extra von den Mega-Varianten abgespeckt, indem man den 
Multiplizierer rausgenommen hat und damit den Chip kleiner bekam.

von Johannes F. (jofe)


Lesenswert?

Peter D. schrieb:
> Das nervt mich auch total, diese Inflation an ständig neuen Typen und
> Namensgebungen.

Ja, da frage ich mich auch oft, was die BWLer(?) sich dabei gedacht 
haben (oder eben auch nicht)...

Peter D. schrieb:
> Da diese "netten Spielereien" der neuen Typen nicht wirklich einen
> Quantensprung für meine Anwendungen bringen,

Naja, sie haben m.E.n. schon drastische Vorteile: mehr u. deutlich 
komplexere/flexiblere Peripherie, wesentlich niedrigerer Preis bei 
größeren Speichern, fortgeschrittener Interrupt Controller, teils 
Betrieb bis zur maximalen Taktfrequenz bis herunter zu 1,8 V Vdd; um nur 
zu nennen, was mir gerade einfällt.

Falls das alles für einen nicht relevant sein sollte, kann man natürlich 
auch bei den "alten" AVRs bleiben und spart sich den Umstiegsaufwand, es 
gibt ja auch einige Fallstricke bei den neuen (manuelles Löschen der 
Interrupt Flags z.B.). Ist nur die Frage, wie lange MC die alten noch 
produziert bzw. ob sie evtl. noch verteuert werden.

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


Lesenswert?

Johannes F. schrieb:
> manuelles Löschen der Interrupt Flags z.B.

Yup, darüber bin ich auch schon gestolpert …

von Michael (Gast)


Lesenswert?

Veit D. schrieb:
> kann mir nicht vorstellen das es bei µC gar nicht gemacht wird.

Die Strukturgrößen bei MCUs sind meist deutlich fetter und damit der 
Yield erheblich besser in einer längst abgeschriebenen Fab. Zudem sind 
die Dies viel kleiner.
Auf einem Wafer liegen erheblich mehr MCUs als z.B. I7 CPUs.

Also viel mehr MCUs bei viel besserer Ausbeute.
Ist ein Unterschied ob ich 1% der Cent MCUs wegwerfe oder 30% der 
hochpreisigen CPUs.

von Veit D. (devil-elec)


Lesenswert?

Heinz K. schrieb:
> Veit D. schrieb:
>> Heinz K. schrieb:
>>> Auf Arduino zurück will ich aber ungern wechseln. Eher kann ich mir ein
>>> Umstieg auf C-code ohne Arduino libs vorstellen. Nur welche IDE nutzen?
>>> Bleibt ja nur das Microchip/ Atmel Studio. Wie sieht es bei euch hier
>>> aus? Was nutzt ihr für die AVR Dx Serie?
>>
>> - Arduino IDE 2.x
>> - Microchip Studio
>> - ATmega 4809
>> - AVR DB
>> - AVR EA
>
> Die letzten 3 genannten sind andere AVR Controller keine IDE‘s. Oder wie
> ist das gemeint?

Du hast nach Controller und IDE gefragt, die man so verwendet.

> Ich habe gerade geschaut und für meine Anwendung würde auch der
> Attiny3216 reichen. Nur da fängt das Chaos an. Irgendwie schafft es MC
> immer wieder keine einheitliche Produktfamilie aufzuziehen. Beispiel

What?
Es gibt eine ATtiny 0 Serie, 1 Serie und 2 Serie.
Erkennbar an der vorletzten Ziffer.
Bsp. 0er Serie: ATtiny406, 806  und 1616
Bsp. 1er Serie: ATtiny416, 1617 und 3217
Bsp. 2er Serie: ATtiny427, 1627 und 3227
Die 2er Serie ist die Neue die den neuen AVRs ähnlich ist.

Bsp. 3227, kann man mit 3V mit 16MHz betreiben. Wenn der Eingangstakt 
(intern/extern) höher ist, muss man ihn runterteilen, man gewinnt also 
nichts. Manual Table 33-12. Gilt für 25°C. Eigentlich sind es mit 3V nur 
10MHz im größeren Temperaturbereich.

von Johannes F. (jofe)


Lesenswert?

Veit D. schrieb:
> ATtiny 0 Serie, 1 Serie und 2 Serie

Ja, die (neuen) ATtinys sind schon ziemlich systematisch benannt. Die 
letzte Ziffer kennzeichnet die Pin-Anzahl, die vorletzte die Serie und 
die ersten ein oder zwei die Flashgröße.

Wobei die Unterschiede zwischen den Serien sich IMHO hauptsächlich in 
den verschiedenen Peripherieeinheiten widerspiegeln: Serie 0 ist da sehr 
abgespeckt (Low-Cost-Serie), Serie 1 hat z.B. einen 8-bit-DAC und 
10-bit-ADC, Serie 2 keinen DAC, dafür aber einen 12-bit-ADC u.a.

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hatte mich einmal vertippt.
Bsp. 0er Serie: ATtiny406, 806  und 1606

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft es jemanden.

von Heinz K. (heinz_k960)


Lesenswert?

Veit D. schrieb:
> Heinz K. schrieb:
>> Veit D. schrieb:
>>> Heinz K. schrieb:
>> Ich habe gerade geschaut und für meine Anwendung würde auch der
>> Attiny3216 reichen. Nur da fängt das Chaos an. Irgendwie schafft es MC
>> immer wieder keine einheitliche Produktfamilie aufzuziehen. Beispiel
>
> What?
> Es gibt eine ATtiny 0 Serie, 1 Serie und 2 Serie.
> Erkennbar an der vorletzten Ziffer.
Ja, da hast Du recht. Es gibt da auch eine tolle Übersicht auf 
technology.com. Ich meinte auch eher über die einzelnen Familien hinweg 
also z. B. Attiny 0/ 1/ 2 Series vs AVR Dx.

> 10MHz im größeren Temperaturbereich.
Genau das meine ich nur 10Mhz garantiert bei 3V. Andere Controller gehen 
da locker bis 48mhz oder höher (STM32, SAMD). Das Thema Waitstates bei 
Stm32 ist mir bekannt. Trotzdem sind die deutlich schneller. Wenn jetzt 
die Frage aufkommt warum mir 10MHz zu knapp erscheinen. Da gibt es 
mehrere Anwendungsfälle. Z.b Grafik-Display- Ansteuerung, 
Signalverarbeitung etc.

Ich stehe übrigens nicht auf dem Standpunkt bei den alten AVRs zu 
bleiben. Die Entwicklung geht halt weiter.

von Heinz K. (heinz_k960)


Lesenswert?

Ich will auch nicht nur über die AVRs meckern. Gut ist z.B. dass diese 
immer noch echten EEPROM beinhalten. Bei STM32 geht das nur mit 
Emulation im Flash. Da ich gerade auch EEPROM zur Config-Speicherung 
nutze ist das ein klarer Vorteil. Auch das Multivoltage I/O Feature der 
AVR Dx Serie finde ich Klasse. Ebenso Klasse ist der Portmultiplexer den 
Atmel/ MC bereits in den SAMD Devices seit vielen Jahren erfolgreich 
eingesetzt hat.

von Johannes F. (jofe)


Lesenswert?

Heinz K. schrieb:
> Genau das meine ich nur 10Mhz garantiert bei 3V. Andere Controller gehen
> da locker bis 48mhz oder höher (STM32, SAMD).

Dafür haben AVR eben einen größeren Versorgungsspannungsbereich bis 
5,5 V. Man kann eben nicht alles haben. Ohne es genau zu wissen, vermute 
ich mal stark, dass maximale Taktfrequenz und Vcc-Bereichsgröße 
konkurrierende Parameter sind.

Heinz K. schrieb:
> Wenn jetzt
> die Frage aufkommt warum mir 10MHz zu knapp erscheinen. Da gibt es
> mehrere Anwendungsfälle. Z.b Grafik-Display- Ansteuerung,
> Signalverarbeitung etc.

Das sind auch Anwendungsfälle, für die AVRs (meiner bescheidenen 
Einschätzung nach) einfach nicht konzipiert sind bzw. für die es besser 
geeignete Alternativen gibt. AVRs (u.a. 8-bit-MCUs wie PIC12/16/18) sind 
eher was für Steuerungsaufgaben, bei denen es mehr auf analoge 
Peripherie wie MVIO oder 5-V-Betrieb (der bessere Störimmunität als 3,3V 
bietet) ankommt als auf Rechenleistung. Wenn dagegen schnell gerechnet 
werden soll, bieten sich heute 32-bit-MCUs wie ARM Cortex M an, à la 
STM32 oder RP2040, allein schon wegen  Registerbreite und Befehlssatz.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Heinz K. schrieb:
> Bei STM32 geht das nur mit Emulation im Flash.

Die STM32L0 Serie hat EEPROM

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Heinz K. schrieb:

> Was soll die geringe Taktung bei 3.3V Betrieb in der heutigen Zeit?

Kosten, Kosten, Kosten.

Die Tinys sind halt die Billich-Linie. Früher(tm) bekamen sie einen 
abgespeckten Core und abgespeckte Timer, heute wird halt z.B. die 
eingebaute Ladungspumpe eingespart, die es bei den Dx gibt.

Wer den hohen Takt auch bei geringer Spannung braucht, nimmt halt einen 
Dx und gut isses. Wird ja schließlich niemand dazu gezwungen, einen Tiny 
zu verbauen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

warum soll ein ATtiny ein Grafikdisplay nicht ansteuern können? 
Abgesehen vom Speicher. Ansonsten stellt sich die Frage, warum man dann 
an einem ATtiny festhält. Oder was man unter einem Grafikdisplay 
versteht. Das ist ein breites Feld. s/w, farbig, grafisch programmierbar 
usw.
Alternativ zum ATtiny ein AVR128DB, brauchst sowieso viel Speicher für 
das Display. Der kann ab 1,8V mit 24MHz takten. Steht zwar nicht im 
Klartext im Manual, aber es gibt keine Einschränkung, deswegen kann er 
das. Nur wenn die PLL genutzt wird werden 3V notwendig.
Oder nimmst ein "ESP32 mit Display" bzw. "Display mit ESP32". ;-) Haste 
sogar noch WiFi und Touchscreen frei Haus.

Du musst dir erstmal ein Konzept erstellen welche Hardware du wirklich 
brauchst. Du hast viel zu viele Unbekannte im Spiel.

von Johannes F. (jofe)


Lesenswert?

Veit D. schrieb:
> warum soll ein ATtiny ein Grafikdisplay nicht ansteuern können?

Weil das sehr rechenintensiv sein kann, man denke an Animationen, 
komplexe geometrische Objekte etc., da kommt anspruchsvolle Mathematik 
ins Spiel. Dafür werden AVRs ab einem gewissen Niveau einfach zu 
„langsam“, wenn es auf flüssige „Bewegungen“ und Reaktionszeit etc. 
ankommt.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Johannes F. schrieb:

> Weil das sehr rechenintensiv sein kann, man denke an Animationen,
> komplexe geometrische Objekte etc., da kommt anspruchsvolle Mathematik
> ins Spiel. Dafür werden AVRs ab einem gewissen Niveau einfach zu
> „langsam“, wenn es auf flüssige „Bewegungen“ und Reaktionszeit etc.
> ankommt.

Schau dir einfach mal die Demos aus der Zeit der 8Bit-Homecomputer an. 
Da kannst du teilweise recht aufwendige Grafik sehen. Und deren µP waren 
meist mit weniger als 2MHz angetrieben und hatten einen wesentlich 
ineffizienteren Befehlssatz als die AVR8.

Das Problem ist einfach nur die Universalität. Diese Demos enthielten 
meist sehr viel vorberechneten Kram. Und der Speicher, die großen 
Grafik-Demos haben immer wieder Daten und Code nachgeladen.

Aber: Grafikdisplay bedeutet ja nicht zwingend, dass da drauf unbedingt 
aufwendige Animationen laufen müssen. Text und einfache GUI-Elemente 
genügen ja für die meisten Anwendungsfälle auch. Und das ist mit AVRs 
definitiv in absolut akzeptabler Geschwindigkeit möglich. Jedenfalls für 
Leute, die wirklich programmieren können...

von Johannes F. (jofe)


Lesenswert?

Ob S. schrieb:
> Diese Demos enthielten
> meist sehr viel vorberechneten Kram.

Eben ...

Ob S. schrieb:
> Grafikdisplay bedeutet ja nicht zwingend, dass da drauf unbedingt
> aufwendige Animationen laufen müssen.

Nicht zwingend, aber falls doch, dann gibt es dafür halt geeignetere 
MCUs als AVR; mit einem Vielfachen jeweils an RAM, Registerbreite, 
F_CPU, für ähnlich wenig Geld.

Ob S. schrieb:
> Jedenfalls für
> Leute, die wirklich programmieren können...

Keine Frage, es ist natürlich eine interessante Herausforderung bzw. 
Lernübung, LCD-Grafik auf AVR zu implementieren; vorzugsweise natürlich 
dann in Assembler, um das Maximum an Effizienz herauskitzeln zu können. 
Gibt ein gutes Buch dazu von Manfred Schwabl-Schmidt.

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


Lesenswert?

Heinz K. schrieb:
> Das Thema Waitstates bei Stm32 ist mir bekannt. Trotzdem sind die
> deutlich schneller.

Sicher ist ein ARM-Core bereits an sich in manchen Dingen schneller, 
beispielsweise weil er einen barrel shifter hat. Aber generell: beim AVR 
würde es dir nichts nützen, wenn der Core schneller rattern kann, als es 
der Flash hergibt. Er hat keinen Cache und kann keinen Code aus dem RAM 
ausführen. Damit bist du an die Geschwindigkeit des Flashs gebunden.

Bei ARM sieht das eben anders aus, herstellerübergreifend. Erstens kann 
man dort immer auch Code aus dem RAM ausführen, der läuft dann immer 
full speed. RAM ist zwar teurer, aber man kann ja beispielsweise 
schnelle ISRs da reinlegen. Außerdem haben die allermeisten ARMs noch 
Cache, damit ist man zumindest in einem begrenzten Bereich (kleine 
Schleife oder sowas) wieder auf full speed. Kommt noch dazu, dass 
üblicherweise der Flash bei Cortex-M auch noch breiter ist als die 
Befehlsbreite, sodass man sehr oft mit einem Lesezyklus zwei Befehle 
liest. Geht beim AVR auch nicht. (Und lös dich mal von "STM32" – die 
allermeisten dieser Aussagen treffen herstellerunabhängig für jeden 
Cortex-M zu.)

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.