Forum: Mikrocontroller und Digitale Elektronik "Arduino kompatibler" MC für 2025


von Niklas M. (nik23)


Lesenswert?

Ich muss eine Schaltung bauen, die dann von - sagen wir mal Einsteigern 
- verwendet und programmiert wird. Nichts spezielles, 2x ADC einlesen, 4 
Taster, 4 Relais, Display. Daher auch keine besonderen Anforderungen an 
den MC.
Der unbedingte Wunsch war aber, dass die Platine direkt mit einem FTDI 
Kabel (TTL-232Rx) aus der Arduino-IDE heraus und ohne Zusatzpakete zu 
installieren verwendbar ist, weil u.A. die Anleitung ansonsten unnötig 
kompliziert wird und sich auch ändern könnte, wenn neue IDE Versionen 
etc. kommen.
Welchen Microcontroller sollte ich also verwenden, der möglichst noch 
längere Zeit lieferbar ist (also eben nicht den ATMega328P...) und 
direkt unterstützt wird? Also für die IDE als originales Board 
erscheint, wenn der Bootloader drauf ist?

von Helmut -. (dc3yc)


Lesenswert?

Warum nicht einen Arduino Nano? Oder einen ESP32? Da braucht es kein 
FTDI-Kabel. Es reicht ein USB-Kabel.

von F. (radarange)


Lesenswert?

Niklas M. schrieb:
> Welchen Microcontroller sollte ich also verwenden, der möglichst noch
> längere Zeit lieferbar ist (also eben nicht den ATMega328P...) und
> direkt unterstützt wird? Also für die IDE als originales Board
> erscheint, wenn der Bootloader drauf ist?

Warum kein ATMega328P? Der ist auf vielen Arduino-Boards drauf und 
erfüllt genau deine Anforderungen. Wie lange der erhältlich ist, weiß 
man natürlich nicht, daher erlaube mir eine Rückfrage: Warum ist die 
lange Erhältlichkeit wichtig? Ist abzusehen, dass die Anwender den 
Microcontroller regelmäßig zerstören werden? Ist geplant, in ferner 
Zukunft noch mehr von diesen Schaltungen zu entwickeln?
Ich würde mal spekulieren, dass die Arduino-IDE in Zukunft weiterhin den 
klassischen auf einem ATMega328 basierten Arduino unterstützen wird. 
Davon gibt es einfach sehr viele und die sind sehr beliebt.

Ansonsten kann ich nur Eines empfehlen, was vielleicht etwas ärgerlich 
ist, das Problem aber behebt: Verpasse deiner Schaltung einen 
Steckverbinder und stecke dort eine originale Arduino-Platine (bzw. 
einen kompatiblen Nachbau) auf. Dadurch wird deine Schaltung zum großen 
Shield und du musst dich nicht um die Integration der Arduino-Hardware 
kümmern. Der etwas unglückliche Formfaktor des Arduino wird so schnell 
nicht abgelöst werden, da wird man also weiterhin kompatible Boards 
finden (und selbst wenn er abgelöst wird, wird es Adapterplatinen 
geben).

von Niklas M. (nik23)


Lesenswert?

Ja, das Produkt soll sehr langlebig werden, kann sein dass in 5-10 
Jahren noch was nachgebaut wird.
https://www.microchip.com/en-us/product/atmega328p
‎Not Recommended for new designs
Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel. 
Leider.
Ein fertiges Arduino-NANO oder PRO (sehr selten) einzubauen geht leider 
wegen dem Formfaktor wirklich nicht.

von Sherlock 🕵🏽‍♂️ (Gast)


Lesenswert?

Niklas M. schrieb:
> also eben nicht den ATMega328P

Wieso nicht? Der wird bestimmt noch lange hergestellt, oder zumindest 
sein Nachfolger mit ATmega328PB. Damit er direkt unterstützt wird  musst 
du ihn mit Bootloader präpariert kaufen. Einige Händler bieten das an.

Die meisten STM32 Mikrocontroller haben bereits einen Bootloader an 
Werk, allerdings muss man "Fremdsoftware" (Den STM32 Core) über den 
Boardmanager der Arduino IDE installieren. Es ist daher nicht
> für die IDE als originales Board erscheint
aber nahe dran.

von Harald K. (kirnbichler)


Lesenswert?

Ein anderer Ansatz wäre ein RP2040. Den kann man auch mit der 
Arduino-Umgebung programmieren, der braucht keine USB-Seriell-Bridge ...
Und er spielt in einer anderen Liga als der nun ziemlich angealterte 
Atmega328.

von Sherlock 🕵🏽‍♂️ (Gast)


Lesenswert?

Ich glaube es gibt überhaupt keinen Mikrocontroller, der von der Arduino 
IDE direkt als original erkannt wird.

von F. (radarange)


Lesenswert?

Harald K. schrieb:
> Ein anderer Ansatz wäre ein RP2040. Den kann man auch mit der
> Arduino-Umgebung programmieren, der braucht keine USB-Seriell-Bridge ...
> Und er spielt in einer anderen Liga als der nun ziemlich angealterte
> Atmega328.

Das ist nicht zielführend. Das explizite Ziel war, eine Möglichkeit zu 
finden, das Board heute an einen Rechner mit gerade eben installierter 
Arduino-IDE stecken und ohne weitere Konfiguration losprogrammieren zu 
können, und in 10 Jahren nochmal ein Board zu bauen, mit dem das immer 
noch geht.

Da bringt es wenig, wenn für den RP2040 erst andere Libraries 
installiert werden müssen. Das Problem hier ist kein technisches 
Problem. Das Problem hier ist, dass der Nutzer eine Anforderung gibt, 
die zwar im Prinzip erfüllbar ist, aber nur mit absurd großem Aufwand. 
Wichtig ist es hier, als Entwickler nochmal sehr genau nachzufragen und 
eine erträgliche Lösung zu finden, denn dem Nutzer ist überhaupt nicht 
klar, welche Konsequenzen er mit seiner Anforderung auslöst.

Eine mögliche Lösung könnte ja z.B. sein, eine vorkonfigurierte 
Arduino-IDE bereitzustellen, in der die ganzen Libraries schon 
installiert sind, die man für das Board der Wahl braucht.

von Alexander (alecxs)


Lesenswert?

Installiert sich die Arduino IDE die Boards nicht sogar automatisch? Ist 
kein Internet vorhanden? Ein Board muss so oder so ausgewählt werden. Ob 
man da einen Arduino auswählt oder einen ESP32-C3 ist dann auch egal.

von Harald K. (kirnbichler)


Lesenswert?

F. schrieb:
> Das Problem hier ist, dass der Nutzer eine Anforderung gibt,
> die zwar im Prinzip erfüllbar ist, aber nur mit absurd großem Aufwand.

In der Tat. Die Anforderung ist Unfug.

von Cartman E. (cartmaneric)


Lesenswert?

Niklas M. schrieb:
> Ich muss eine Schaltung bauen, die dann von - sagen wir mal Einsteigern
> - verwendet und programmiert wird. Nichts spezielles, 2x ADC einlesen, 4
> Taster, 4 Relais, Display. Daher auch keine besonderen Anforderungen an
> den MC.
> Der unbedingte Wunsch war aber, dass die Platine direkt mit einem FTDI
> Kabel (TTL-232Rx) aus der Arduino-IDE heraus und ohne Zusatzpakete zu
> installieren verwendbar ist, weil u.A. die Anleitung ansonsten unnötig
> kompliziert wird und sich auch ändern könnte, wenn neue IDE Versionen
> etc. kommen.
> Welchen Microcontroller sollte ich also verwenden, der möglichst noch
> längere Zeit lieferbar ist (also eben nicht den ATMega328P...) und
> direkt unterstützt wird? Also für die IDE als originales Board
> erscheint, wenn der Bootloader drauf ist?

Das ist ja wie Birne Helene ohne Birne.

Was die IDE in 10 Jahren noch unterstützt, weiss heute noch keiner.
Ob es 328 oder Nachfolger in 10 Jahren noch gibt, ebenfalls nicht.

Zweckmässig wäre wohl ein Controller, der ein
USB-Massenspeicherinterfach hat, und die Software nur ein Interpreter
für eine dialogorientierte Hochsprache ist.
Das wird es in in 10 Jahren wohl noch geben.

von Axel S. (a-za-z0-9)


Lesenswert?

Niklas M. schrieb:
> Ja, das Produkt soll sehr langlebig werden, kann sein dass in 5-10
> Jahren noch was nachgebaut wird.

Und?

> https://www.microchip.com/en-us/product/atmega328p
> ‎Not Recommended for new designs

NRFD heißt nicht, daß der morgen abgekündigt wird. Abgekündigt heißt 
nicht, daß der morgen nicht mehr erhältlich ist.

> Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel.

Albern. Für deine pillepalle-Anforderungen ist er allemal kompatibel. 
Zumal du ja wohl mit Arduino programmieren willst. Da wird der 
ATMega328PB jetzt schon unterstützt. Warum nimmst du nicht gleich ein 
Arduino-Board deiner Wahl mit dem ATMega328PB?

von Niklas M. (nik23)


Lesenswert?

Also ich halte die Anforderung, dass die Benutzer sich nicht zuerst in 
der IDE irgendwelche 3rd Party Zusatzpakete installieren müssen, für 
durchaus vernünftig und sehr Supportanfragenmindernd. Die User kämpfen 
ja eh schon mit dem Leben, dem Universum und den ganzen Rest. hust 
Lehrer hust.
Was in 10 Jahren ist - eh keine Ahnung, aber man kann ja immerhin keinen 
jetzt schon als "‎Not Recommended for new designs" MC einsetzen.

von Georg M. (g_m)


Lesenswert?

R7FA4M1AB3CFM#AA0

von Alexander (alecxs)


Lesenswert?

Darf ich Dich mal fragen, hast Du schon mal Arduino benutzt?

von Georg M. (g_m)


Lesenswert?

MGM240SD22VNA

von Niklas M. (nik23)


Lesenswert?

Hier übrigens gut erklärt, was man machen muss, damit der ATMega328PB 
funktioniert:
https://wolles-elektronikkiste.de/atmega328pb-basierte-boards
Man muss ein Board Package installieren. Davon gibts mehrere, aber nur 
von kleineren Händlern. Ob die weiter gepflegt werden? Keine Ahnung, 
verlassen möchte ich mich nicht darauf.
Übrigens war der Arduino Pro Mini ein absolut geniales Teil, leider 
nicht mehr aktuell und natürlich hat Arduino den Unsinn mit den Pins 
nicht im 100mil Raster auch dort gemacht, warum auch immer.
Renesas RA4M1 klang mal interessant, scheint aber nicht weiter verfolgt 
zu werden und die SW soll nicht sooooooo toll sein, selbst die 
"offizielle".
MGM240S werde ich mir mal ansehen, danke, ist halt deutlicher overkill 
und teuer.

von Alexander (alecxs)


Lesenswert?

Das war bei Arduino 1.8.19 so dass man irgendwelche Links hinterlegen 
musste. Die Arduino IDE 2.3.x macht das mittlerweile ungefragt OOTB. 
Arduino ist doch wie Fritzing extra für Kinder gemacht.

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Sherlock schrieb:
> Die meisten STM32 Mikrocontroller haben bereits einen Bootloader an
> Werk, allerdings muss man "Fremdsoftware" (Den STM32 Core) über den
> Boardmanager der Arduino IDE installieren.

"Fremdsoftware" kann er scheinbar nicht.

Den Bootloader sehe ich kritisch: Ich habe mal eine externe Entwicklung 
betreut, die einen STM32L072С8 nutzt. Nach Einspielen eines Treibers 
konnte ich unter Windows per USB das Gerät parametrieren, erstmal alles 
gut. Dann habe ich ein Update per USB aufgerufen und peng, Treiber 
fehlt. Nach etwas Sucherei zusätzlich den STM-Treiber für den Bootloader 
eingespielt, war das Gerät leider schon tot. Das war eine gefährliche 
Falle, für Betrieb und Update zwei unterschiedliche Treiber zu brauchen.

Niklas M. schrieb:
> Ein fertiges Arduino-NANO oder PRO (sehr selten) einzubauen geht leider
> wegen dem Formfaktor wirklich nicht.

Wenn der 'Formfaktor' des NANO unpassend ist, sollte dringend die 
Anforderung revidiert werden - der ist wie ein großes DIL-IC klaglos 
handhabbar.

Dessen Original mit FTDI-USB läuft klaglos mit der A*-IDE. Bei den 
ChiNanos mit CH340 muß man unter Windows den USB-Treiber 
nachinstallieren - wozu es widersprüchliche Aussagen gibt. Aber, wenn 
das schon zuviel verlangt ist, sollte man besser Tischler oder Gärtner 
werden.

Niklas M. schrieb:
> Übrigens war der Arduino Pro Mini ein absolut geniales Teil, leider
> nicht mehr aktuell und natürlich hat Arduino den Unsinn mit den Pins
> nicht im 100mil Raster auch dort gemacht, warum auch immer.

Was am ProMini passt denn da nicht? Ich habe mehr als einen auf 2,54mm 
Lochraster gesetzt. Die halb versetzen 6 Pins auf der Stirnseite führen 
kein Signal, was nicht auch auf den beiden Längsseiten vorhanden wäre.

Ein Ärgernis ist allerdings, dass I2C auf den Längsseiten nicht 
zugänglich ist. Zu allem Überfluß sind aus China zwei abweichende 
Layouts des ProMini unterwegs.

Dass man, im Gegensatz zum Nano, für den ProMini einen USB-Adapter 
benötigt, ist eher lästig und eine mögliche Fehlerquelle. Der Vorteil 
ist, dass ich kein USB-IC mit Strom versorgen muß und das Ding mit 8 MHz 
an einem LiIon-Akku sparsam betreiben kann, wenn ich LED und Regler 
entferne.

Alexander schrieb:
> Darf ich Dich mal fragen, hast Du schon mal Arduino benutzt?

Die könnte er evtl. mit NEIN beantworten.

Ich denke, dass sich Niklas M. (nik23) mit seinen Sonderwünschen auf 
Arduino.cc austoben sollte.

von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

Was hast du denn da noch dazwischen gebastelt, einen Pegelwandler? 
Optokoppler? Ich hab so ein Teil das gibts für 5 Eur.

: Bearbeitet durch User
von Georg M. (g_m)


Lesenswert?

Niklas M. schrieb:
>  dann von - sagen wir mal Einsteigern

Für die Einsteiger von heute hat die Smartphone-Tauglichkeit oberste 
Priorität.

von Alexander (alecxs)


Lesenswert?

Arduino for Android ArduinoDroid.

von Niklas M. (nik23)


Angehängte Dateien:

Lesenswert?

Alexander schrieb:
> Was hast du denn da noch dazwischen gebastelt, einen Pegelwandler?

Beim Pro steckt man direkt einen FTDI TTL-232R-3V3 (für die 3.3V 
Variante bzw einen FTDI TTL-232R-5V an.

https://docs.arduino.cc/retired/getting-started-guides/ArduinoProMini/

Auf dem Board ist kein überflüssiger (und oft fragwürdiger / nicht 100% 
kompatibler) USB Chip und er ist kleiner als der NANO. Mehr Beschaltung 
wie im Anhang braucht es zum programmieren in der Schaltung nicht.

Zusätzliches Problem beim Nano: das USB Kabel war mir oft im Weg, wenn 
die Schaltung in einem (etwas tieferen) Gehäuse eingebaut war. Da muss 
man mit dem Kabel erst mal rankommen zum anstecken oder gar eins 
dranhängen lassen.

Aber darum geht es ja überhaupt nicht: Ich brauche eben de facto einen 
Nachfolger für den altehrwürdigen ATMega328P und möchte die guten 
Eigenschaften dieser Lösung (Kabel einstecken, in der Arduino IDE 
"Arduino Pro or Pro Mini" auswählen und los gehts) behalten.

von Frank K. (fchk)


Lesenswert?

Niklas M. schrieb:

> Aber darum geht es ja überhaupt nicht: Ich brauche eben de facto einen
> Nachfolger für den altehrwürdigen ATMega328P und möchte die guten
> Eigenschaften dieser Lösung (Kabel einstecken, in der Arduino IDE
> "Arduino Pro or Pro Mini" auswählen und los gehts) behalten.

Dann geh doch einfach auf https://www.arduino.cc/en/hardware/ und such 
Dir eine neue Basis aus. Da gibts nicht nur den alten 328P, sondern auch 
moderne MCUs, zum Beispiel:
https://store.arduino.cc/products/uno-r4-minima
oder:
https://store.arduino.cc/products/arduino-zero

Abpinnen können solltest Du dann schon.

fchk

von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Alexander schrieb:
> Was hast du denn da noch dazwischen gebastelt, einen Pegelwandler?
> Optokoppler?

Falls ich gemeint sein sollte:
Eine galvanische Trennung mit ADUM1201 und Optokoppler. Dann ist es 
egal, ob der ProMini an drei oder fünf Volt läuft. Und wichtig ist, dass 
der PC geschützt ist, wenn im Versuchsaufbau ein Fehler mit Überspannung 
auftritt.

Am Nano kann ich einen USB-Trenner mit ADUM3160 verwenden, wenn z.B. das 
System keine sichere Netztrennung aufweist.

Aber ich weiß, das machen nur Angsthasen und wahren Fachleuten passieren 
keine kritischen Fehler.

Niklas M. schrieb:
> Beim Pro steckt man direkt einen FTDI TTL-232R-3V3 (für die 3.3V
> Variante bzw einen FTDI TTL-232R-5V an.

Das ist schön für Dich.

Niklas M. schrieb:
> Auf dem Board ist kein überflüssiger (und oft fragwürdiger / nicht 100%
> kompatibler) USB Chip und er ist kleiner als der NANO. Mehr Beschaltung
> wie im Anhang braucht es zum programmieren in der Schaltung nicht.

Ich könnte auch einen CH340 direkt anschließen, an dem nichts fragwürdig 
ist. So ziemlich alle China-Arduinos haben den CH340 und funktionieren, 
außer bei den Leuten, die zu dusselig sind, den Treiber zu installieren.

> Zusätzliches Problem beim Nano: das USB Kabel war mir oft im Weg, wenn
> die Schaltung in einem (etwas tieferen) Gehäuse eingebaut war.

Nur, wenn man beim Aufbau nicht nachdenkt. In einem Gerät habe ich 
intern ein Kabel Mini-USB nach USB-B verbaut und den Zugang an der 
Gehäuserückwand. Eine andere Variante ist ein Loch mit Blindkappe.

von Gerald B. (gerald_b)


Lesenswert?

Es wurde schon angekündigt, (Link dazu gabs hier im Forum) das aus dem 
GCC Compiler etliche Atmegas rausfliegen werden. Da der gcc Comiler von 
der Arduino IDE genutzt wird, ist es nur eine Frage der Zeit, wann die 
Atmega basierten Arduinos nicht mehr ohne Handstände verwendbar sind.
Mark Twain sagte einmal: "Prognosen sind schwierug, besonders, wenn sie 
die Zukunft betreffen.

von Axel S. (a-za-z0-9)


Lesenswert?

Gerald B. schrieb:
> Es wurde schon angekündigt, (Link dazu gabs hier im Forum) das aus dem
> GCC Compiler etliche Atmegas rausfliegen werden.

Pointer?

Ich glaub das nämlich nicht. Support für eine (selbst abgekündigte, aber 
da sind wir noch lange nicht) Architektur ohne Not aus einem Compiler 
zu entfernen, ist das dümmste was mir einfällt.

von Rene K. (xdraconix)


Lesenswert?

Axel S. schrieb:
> Ich glaub das nämlich nicht.

Ich habe es auch noch nie erlebt das überhaupt mal eine Architktur aus 
irgendeinem Compiler entfernt wurde. Warum sollte also gerade der GCC 
dies überhaupt tun? Das wäre nicht nur völlig sinnlos, sondern auch noch 
extrem dumm. Ohne direkte Quelle kann man das einfach garnicht glauben.

von Harald K. (kirnbichler)


Lesenswert?

Axel S. schrieb:
> Pointer?

Hier klingt das an:
Beitrag "AVR removed in GCC 16 ?"

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Soweit ich weiß, dümpelt Arduino noch mit der AVR-GCC Version 7.3 rum.
Mit C++11

Bei mir, meiner Arduino IDE, ist mittlerweile eine AVR-GCC Ver. 15.x im 
Einsatz. Mit C++20

Also selbst wenn es keine 16er GCC Version für AVR geben wird, wird die 
AVR Unterstützung in der Arduino IDE nicht sterben, sondern nur (noch 
mehr) Staub ansetzen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Niklas M. schrieb:
> Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel.

Der ATmega328PB ist sehr wohl 100% abwärtskompatibel. Die zusätzlichen 
IO-Register muß man nicht benutzen.
Nur die Signatur ist eine andere.

von Peter D. (peda)


Lesenswert?

Gerald B. schrieb:
> Da der gcc Comiler von
> der Arduino IDE genutzt wird, ist es nur eine Frage der Zeit, wann die
> Atmega basierten Arduinos nicht mehr ohne Handstände verwendbar sind.

Nur weil es eine neue Version gibt, zerstören sich nicht alle 
Vorgängerversion von selbst. Man darf sie weiterhin benutzen.
Bestimmt verwenden viele auch noch den alten WINAVR-2010.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Peter D. schrieb:
> Niklas M. schrieb:
>> Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel.
>
> Der ATmega328PB ist sehr wohl 100% abwärtskompatibel. Die zusätzlichen
> IO-Register muß man nicht benutzen.
> Nur die Signatur ist eine andere.

Und der Oszillator.
Was die 100% deutlich schrumpfen lässt.
Die PB Variante ist das Nachfolgemodell, sicherlich noch über 10 Jahre 
erhältlich, aber kein 100%iger DropIn Ersatzstoff.

von Niklas M. (nik23)


Lesenswert?

Irgendwo habe ich von einem Bootloader für den ATMEGA328PB gelesen, der 
der Arduino IDE einen ATMEGA328P vorgaukelt, finde den aber leider nicht 
mehr. Hat da wer Erfahrungen damit? Funktioniert es damit tatsächlich 
problemlos? Die nicht funktionierenden 2 zusätzlichen IOs wären durchaus 
verkraftbar.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Niklas M. schrieb:
> Irgendwo habe ich von einem Bootloader für den ATMEGA328PB
> gelesen, der
> der Arduino IDE einen ATMEGA328P vorgaukelt,

Das riecht nach einem dirty hack.
Es gibt durchaus funktionierende 328PB Arduino Cores, die ohne sowas 
auskommen.

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


Lesenswert?

Gerald B. schrieb:
> Da der gcc Comiler von
> der Arduino IDE genutzt wird, ist es nur eine Frage der Zeit, wann die
> Atmega basierten Arduinos nicht mehr ohne Handstände verwendbar sind.

Die Arduino IDE ist darauf vorbereitet, unterschiedliche Versionen des 
Compiler parallel zu installieren. Für alte Mikrocontroller nimmt dann 
halt eine alte Version (why not?). Und für die neuen wird Microchip 
sicher einen geeigneten Compiler bereitstellen.

von Georg S. (randy)


Lesenswert?

Peter D. schrieb:
> Bestimmt verwenden viele auch noch den alten WINAVR-2010.

Hand heb...

von Veit D. (devil-elec)


Lesenswert?

Peter D. schrieb:
> Niklas M. schrieb:
>> Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel.
>
> Der ATmega328PB ist sehr wohl 100% abwärtskompatibel. Die zusätzlichen
> IO-Register muß man nicht benutzen.
> Nur die Signatur ist eine andere.

Hallo,

hier muss ich Euch leider widersprechen. Die einzigste Garantie ist die 
es gibt, dass der PB zum P binärkompatibel ist. Also man kann das hex 
File vom P auf den PB flashen und den PB in die Schaltung einsetzen, als 
Reparaturersatz o.ä. solange die Taktquelle passt. Der Quellcode ist 
nicht kompatibel! Weil der PB paar Hardwareinheiten doppelt hat im 
Vergleich zum P, sind paar Registernamen anders. Das heißt ohne 
Anpassung vom P Quellcode kann man für den PB nicht kompilieren. 
Vergleicht bitte die Headerfiles beider Controller.

Wahllos verglichen, paar Bsp.
1
P:  #define SPCR   _SFR_IO8(0x2C)
2
PB: #define SPCR0  _SFR_IO8(0x2C)
3
4
P:  #define PRR   _SFR_MEM8(0x64)
5
PB: #define PRR0  _SFR_MEM8(0x64)
6
7
P:  #define TWCR   _SFR_MEM8(0xBC)
8
PB: #define TWCR0  _SFR_MEM8(0xBC)
9
10
P:  #define SPI_STC_vect   _VECTOR(17) 
11
PB: #define SPI0_STC_vect  _VECTOR(17)

: Bearbeitet durch User
von Helmut H. (helmuth)


Lesenswert?

Veit D. schrieb:
> Das heißt ohne
> Anpassung vom P Quellcode kann man für den PB nicht kompilieren.

Mit Board MiniCore sind auch die "P" Namen definiert, es waren keine 
Änderungen im Sourcecode erforderlich, weil in pins_arduino.h
1
// Make sure the ATmega328PB is backwards compatible with the 328 and 328P
2
#if defined(__AVR_ATmega328PB__)
3
// SPI
4
  #define SPCR SPCR0
5
  #define SPSR SPSR0
6
  #define SPDR SPDR0
7
  #define SPI_STC_vect SPI0_STC_vect
8
  #define SPI_STC_vect_num SPI0_STC_vect_num
9
// I2C
10
  #define TWBR TWBR0
11
  #define TWSR TWSR0
12
  #define TWAR TWAR0
13
  #define TWDR TWDR0
14
  #define TWCR TWCR0
15
  #define TWAMR TWAMR0
16
  #define TWI_vect TWI0_vect
17
  #define TWI_vect_num TWI0_vect_num
18
// UART
19
  #define USART_RX_vect USART0_RX_vect
20
  #define USART_RX_vect_num USART0_RX_vect_num
21
  #define USART_UDRE_vect USART0_UDRE_vect
22
  #define USART_UDRE_vect_num USART0_UDRE_vect_num
23
  #define USART_TX_vect USART0_TX_vect
24
  #define USART_TX_vect_num USART0_TX_vect_num
25
#endif // 328PB defs

: Bearbeitet durch User
von Björn W. (bwieck)


Lesenswert?

Niklas M. schrieb:
> Irgendwo habe ich von einem Bootloader für den ATMEGA328PB gelesen, der
> der Arduino IDE einen ATMEGA328P vorgaukelt, finde den aber leider nicht
> mehr. Hat da wer Erfahrungen damit?

Wenn man den "Optiboot 328P" per ISP auf einen 328PB spielt gibt er sich 
als 328P aus, weil es so im Bootloadercode fest drinsteht.

von Veit D. (devil-elec)


Lesenswert?

Helmut H. schrieb:
> Veit D. schrieb:
>> Das heißt ohne
>> Anpassung vom P Quellcode kann man für den PB nicht kompilieren.
>
> Mit Board MiniCore sind auch die "P" Namen definiert, es waren keine
> Änderungen im Sourcecode erforderlich, weil in pins_arduino.h

Hallo,

wenn man sich die pins_arduino.h genauer anschaut, wurden doppelte 
Einträge gemacht, also 2 Namen für das gleiche Register usw. damit man 
Quellcode kompatibel wird. Dafür hat MCUdude extra nachgeholfen. 
Funktioniert nur mit der Arduino IDE und diesem MiniCore Package. Das 
sollte man nicht verallgemeinern. Für die nicht Arduino Programmierer 
gilt gesagtes. Ich will mich da auch gar nicht streiten, wollte nur auf 
den Umstand hinweisen und eine allgemein nicht richtige Aussage 
korrigieren. Mehr wollte ich nicht.

von Peter D. (peda)


Lesenswert?

Veit D. schrieb:
> Die einzigste Garantie ist die
> es gibt, dass der PB zum P binärkompatibel ist. Also man kann das hex
> File vom P auf den PB flashen und den PB in die Schaltung einsetzen, als
> Reparaturersatz o.ä. solange die Taktquelle passt.

Mehr will man doch auch nicht im Nano. Es ging doch nur um die Angst, 
daß es den 328P irgendwann nicht mehr gibt.
Als PB compilieren muß man erst, wenn man die erweiterten Ressourcen 
nutzen will, z.B. mehr IO-Pins, mehrere SPI. Und dann muß man eh eine 
eigene Platine entwerfen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

das ist ja in sofern korrekt, Peter. Nur wie gesagt, ohne dem 
angepassten MiniCore Package kann man P Quellcode nicht für einen PB 
kompilieren. Also wenn jemand den PB Nano im Microchip Studio 
programmiert, dann muss er das Headerfile anpassen oder seinen 
Quellcode. Eins von beiden muss er machen. Selbst wenn er nur die P 
Hardwareeinheiten vom PB nutzen möchte. Mehr wollte ich nicht sagen, 
weil es hieß der PB wäre zum P Softwarekompatibel. Was eben ohne 
"eigene" Anpassung nicht stimmt. Irgendwo muss eine Anpassung erfolgen. 
Das wollte ich nicht unkommentiert im Raum stehen lassen. ;-)

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Veit D. schrieb:
> Nur wie gesagt, ohne dem
> angepassten MiniCore Package kann man P Quellcode nicht für einen PB
> kompilieren. Also wenn jemand den PB Nano im Microchip Studio
> programmiert, dann muss er das Headerfile anpassen oder seinen
> Quellcode. Eins von beiden muss er machen.

Nein!

Er kann es auch stumpf für einen 328P übersetzen und den resultierenden 
Binärcode auf den 328PB aufspielen. Das ist die Definition von 
kompatibel.

Daß er 328P Quellcode nicht mit der Angabe "und jetzt bitte für einen 
328PB" übersetzen kann, liegt auf der Hand. Denn in den 328PB 
Headerfiles gibt es andere Namen für einige SFRs. Und wenn er diese 
Headerfiles nutzt (was der Compiler automatisch bei der Angabe 
-mmcu=m328pb macht) dann muß er auch den Quellcode anpassen.

Aber diese Anpassungen hat die Arduino IDE für Bibliotheken schon 
gemacht (spätestens wenn er ein Board-Package für ein Board mit 328PB 
installiert). So lange er die Arduino-Abstraktionsschichten benutzt, 
sieht sein Sketch für 328P und 328PB genau gleich aus. Das ist der 
Grund, warum man das Arduino-Framework benutzt (genauer gesagt der 
einzige Grund warum man das benutzen wollen würde). Wenn er händisch 
(also unter Umgehung der Arduino Libs) auf diese Register zugreifen 
will, dann ist das seine Sache. Das war aber schon immer so.

von Michael B. (laberkopp)


Lesenswert?

Niklas M. schrieb:
> Arduino-IDE

Welche ?

Die IDE 1.x von neulich oder die IDE 2.x von heute ?

Oder alle die in den nächsten 10 Jahren auf dasselbe Boot aufsatteln 
wollen, Eclipse ist doch jetzt schon tot.

Schon mit dem Original Arduino Uno hat man das Problem, dass es welche 
mit altem und welche mit neuem Bootloader gibt und man die passend 
einstellen muss in der IDE sonst funktioniert es nicht.

Und dann gibt es welche mit FTDI232R und ATmega16U2 und CH340 und ohne 
die passenden Treiber geht wieder nix.

Arduino ist durch den Wildwuchs alles andere als einfach, und hat sich 
überlebt, so wie die AVR.

Setz auf STM32. Geht zwar auch mit ArduinoIDE aber CubeIDE ist die 
richtigere.

von Rainer W. (rawi)


Lesenswert?

Niklas M. schrieb:
> Ob die weiter gepflegt werden? Keine Ahnung,
> verlassen möchte ich mich nicht darauf.

Dann pflege sie selber für deine Anwendung.
Bei allem Externen kann die Firma morgen Pleite gehen.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael B. schrieb:
> Schon mit dem Original Arduino Uno hat man das Problem,
> dass es welche mit altem und welche mit neuem Bootloader gibt
Völliger Unsinn!
Du machst deinem Namen alle Ehre.

von Bauform B. (bauformb)


Lesenswert?

Michael B. schrieb:
> Setz auf STM32. Geht zwar auch mit ArduinoIDE aber CubeIDE ist die
> richtigere.

Naja, in diesem speziellen Fall eben nicht CubeIDE:

Niklas M. schrieb:
> Der unbedingte Wunsch war aber, dass die Platine direkt mit einem FTDI
> Kabel (TTL-232Rx) aus der Arduino-IDE heraus und ohne Zusatzpakete zu
> installieren verwendbar ist

Das wäre nahezu perfekt. Das FTDI-Kabel (DELOCK 83785) passt mit einer 
6-poligen Stiftleiste 1:1 an einen STM32, man muss nicht einmal einen 
Booloader flashen. Die ArduinoIDE müsste nur das Protokoll vom STM 
UART-Bootloader verstehen...

von Soul E. (soul_eye)


Lesenswert?

Veit D. schrieb:
> (...) Also wenn jemand den PB Nano im Microchip Studio
> programmiert, dann muss er das Headerfile anpassen oder seinen
> Quellcode. Eins von beiden muss er machen.

Nein, er muss beides machen. Entweder Du nutzt die Header vom 328P und 
verwendest in Deinem Code die alten Registenamen, oder Du nutzt die 
neuen Header vom 328PB und verwendest die neuen Registernamen. Das muss 
zusammenpassen.

Du kannst aber komplett in der alten Welt bleiben, Code für den 328P 
schreiben und übersetzen und den dann in einen 328PB flashen.


Der PB ist ein die shrink, um die Produktion billiger zu machen. 
Microchip verkauft derzeit so viele ATmega328P(B) und davon abgeleitete 
Typen, dass da sicherlich für die nächsten Jahre keine Abkündigung zu 
erwarten ist.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Bauform B. schrieb:
> Die ArduinoIDE müsste nur das Protokoll vom STM
> UART-Bootloader verstehen...

Ist das ein Problem?

Der Arduino IDE wird über die programmers.txt boards.txt und 
platform.txt mitgeteilt wie sie das abhandeln kann.

Und wenn sich das "Interface" dort noch nicht findet, sollte es mit 
wenigen Zeilen nachzurüsten sein.

von Chris V. (nagut)


Lesenswert?

Arduino F. schrieb:
> Michael B. schrieb:
>> Schon mit dem Original Arduino Uno hat man das Problem,
>> dass es welche mit altem und welche mit neuem Bootloader gibt
> Völliger Unsinn!

Ganz so unsinnig ist es nicht. Ich habe selbst schon erlebt, wie 
Anfänger an der Auswahl des richtigen Bootloaders bei einem 
Arduino-Nano-Klon gescheitert sind. Da kommt man als unbedarfter 
Anfänger erstmal nicht drauf.

Aber das ist für den TO  Niklas M. (nik23) tatsächlich relativ 
unerheblich. Er will ja offenbar den nackten Controller für ein eigenes 
miniaturisiertes Board benutzen, welches dann möglichst lange und 
möglichst mit der dann jeweils aktuellsten Arduino-IDE programmierbar 
sein soll.

Auf seine (ggf. auch in Zukunft) produzierten Boards muss er den 
Bootloader draufbekommen, was komplizierter ist als "einfach" ein 
fertiges Board zu kaufen. Aber an der Stelle ist (hoffentlich) die 
"möglichst einfach und nur mit der Arduino-IDE und seriellem 
Adapter"-Anforderung noch nicht relevant.

Falls er die Idee verfolgt, den 328PB zu bestücken, und ihn dann wie 
einen 328P zu programmieren, sollte sich aber sein modifizierter 
Bootloader so verhalten, wie die Standardeinstellung für alten/neuen 
Bootloader in der Arduino-IDE gesetzt ist, damit hier nicht noch extra 
umgeschaltet werden muss.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Chris V. schrieb:
> Ganz so unsinnig ist es nicht. Ich habe selbst schon erlebt, wie
> Anfänger an der Auswahl des richtigen Bootloaders bei einem
> Arduino-Nano-Klon gescheitert sind. Da kommt man als unbedarfter
> Anfänger erstmal nicht drauf.
Wenn ihm Nano meint, dann soll ihm nicht UNO sagen.

Dann alle UNO bis R4 haben den gleichen Bootloader.
Und der R4 ist eine ganz andere Welt(ARM).

von Georg S. (randy)


Lesenswert?

Peter D. schrieb:
> Niklas M. schrieb:
>> Und nein, der ATMEGA328PB ist nicht Pin- und direkt SW-kompatibel.
>
> Der ATmega328PB ist sehr wohl 100% abwärtskompatibel. Die zusätzlichen
> IO-Register muß man nicht benutzen.
> Nur die Signatur ist eine andere.

Es gibt Nano-Boards mit 2 UARTs? Ab jetzt bestelle ich die Arduino-Nano 
Boards nur noch mit dem 328PB...
Auf der Microchip Seite heißt es "Recommended for Automotive Design" was 
hoffentlich heißt dass es den Chip noch viele Jahre gibt...

von Veit D. (devil-elec)


Lesenswert?

Axel S. schrieb:
> Veit D. schrieb:
>> Nur wie gesagt, ohne dem
>> angepassten MiniCore Package kann man P Quellcode nicht für einen PB
>> kompilieren. Also wenn jemand den PB Nano im Microchip Studio
>> programmiert, dann muss er das Headerfile anpassen oder seinen
>> Quellcode. Eins von beiden muss er machen.
>
> Nein!
> ...

Ich bin erstaunt. Du antwortest mit Nein und wiederholst genau das was 
ich schon längst geschrieben habe. Lies meine vorherigen Antworten. Ist 
genau das.

von Jobst M. (jobstens-de)


Lesenswert?

Soul E. schrieb:
> Der PB ist ein die shrink, um die Produktion billiger zu machen.
> Microchip verkauft derzeit so viele ATmega328P(B) und davon abgeleitete
> Typen, dass da sicherlich für die nächsten Jahre keine Abkündigung zu
> erwarten ist.

Wenn ich mir so ansehe, was für olle Controller bei Microchip noch 
verfügbar sind (im Gegensatz zu vielen anderen Herstellern), so ist 
nicht davon auszugehen, dass ausgerechnet der recht populäre ATm328 hier 
den Anfang macht. Vielleicht streicht man irgendwann die kleineren 48, 
88 und 168, da diese durch den 328 ersetzt werden können.

Allerdings ist der ATm328PB nicht nur ein einfacher die-shrink. Er 
bietet auch etwas mehr Funktionalität als die ATm328P(A).

Ansonsten, wenn man etwas haben möchte, was schon ewig da ist und 
vermutlich in diversen Formen noch einige Zeit und von diversen 
Herstellern geben wird, dann sollte man nach 8052 Derivaten Ausschau 
halten. Die gibt es auch als 100MHz Single-Cycle Variante, wenn es etwas 
flotter sein soll. Oder auch mit UART-Bootloader fest im Chip 
integriert.

Gruß
Jobst

von Veit D. (devil-elec)


Lesenswert?

Hallo,

der ATmega328 und 328P haben den offiziellen Status:
Not Recommended for new designs

Das Thema wurde schon x mal durchgekaut. Ganz ehrlich.

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Niklas M. schrieb:
> Der unbedingte Wunsch war aber, dass die Platine direkt mit einem FTDI
> Kabel (TTL-232Rx) aus der Arduino-IDE heraus und ohne Zusatzpakete zu
> installieren verwendbar ist

Mein Favorit ist der ATmega32U4. Der hat USB eingebaut und benötigt 
keinen extra FTDI oder CH340 chip. Die ACM Treiber sind im 
Betriebssystem drin und Probleme mit seriellen Baudraten gibt es 
prinzipbedingt nicht.

Er hat einen freien Hardware UART der nicht bereits durch die PC 
Verbindung belegt ist.

https://www.microchip.com/en-us/product/atmega32u4
https://store.arduino.cc/products/arduino-micro

  Michael

von Veit D. (devil-elec)


Lesenswert?

Hallo,

damit sie dann vor dem Problem stehen im laufenden Programm keine 
serielle Ausgabe im Terminal zu erhalten. Man muss sich im setup() 
vorher entscheiden was
man benötigt. Das mit dem USB vom ATmega32U4 hat auch so seine Eier. 
Jeder Neuling mit Arduino Micro stolpert über das Problem. Ein Arduino 
Nano ESP32 krankt an einem ähnlichen Symptom. Dann wird wieder ein extra 
USB-Serial Adapter benötigt welcher separat an der USART hängt und ist 
man wieder beim FTDI/CH34x.

Ich kann auch das Problem vom TO nicht so richtig nachvollziehen. Jeder 
alte Standard Arduino (Uno, Nano, Mega) ist out of the box verwendbar. 
Neuere Modelle für die ein extra Board Package benötigt wird sind auch 
kein Problem. Die Arduino IDE 2.x erkennt das, fragt nach, ob das Board 
Package installiert werden soll.

von Peter D. (peda)


Lesenswert?

Jobst M. schrieb:
> Wenn ich mir so ansehe, was für olle Controller bei Microchip noch
> verfügbar sind (im Gegensatz zu vielen anderen Herstellern), so ist
> nicht davon auszugehen, dass ausgerechnet der recht populäre ATm328 hier
> den Anfang macht. Vielleicht streicht man irgendwann die kleineren 48,
> 88 und 168, da diese durch den 328 ersetzt werden können.

Microchip ist da wirklich sehr ausdauernd.
Z.B. gab es früher gefühlt 100 Firmen, die den 22V10 im Programm hatten. 
Heute ist nur noch der ATF22V10 von Microchip in Produktion.

von Georg S. (randy)


Lesenswert?

> nicht davon auszugehen, dass ausgerechnet der recht populäre ATm328 hier
> den Anfang macht.

Und es ist auch noch so dass es den fast 100% kompatiblen 328PB gibt, 
bei dem nichts von "Not Recommended for new designs" auf der Webseite 
steht.

von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

F. schrieb:
> Das ist nicht zielführend. Das explizite Ziel war, eine Möglichkeit zu
> finden, das Board heute an einen Rechner mit gerade eben installierter
> Arduino-IDE stecken und ohne weitere Konfiguration losprogrammieren zu
> können

Eben noch mal getestet. Jungfreudiges Arduino IDE installieren, Board 
auswählen, auf "Yes" klicken. Findet auch den "RP2040" Suchbegriff.

von Sherlock 🕵🏽‍♂️ (Gast)


Lesenswert?

Ich glaube, ein frisch installierte Arduino IDE (2.x) kann überhaupt 
keinen Mikrocontroller programmieren, ohne den dazu nötigen Core 
herunter zu laden. Die alte Arduino IDE (1.8) enthielt hingegen 
Unterstützung für die klassischen Modelle (Uno, Nano, Mega, ...).

von Svensson (svensson)


Lesenswert?

Georg S. schrieb:
>> nicht davon auszugehen, dass ausgerechnet der recht populäre ATm328 hier
>> den Anfang macht.
>
> Und es ist auch noch so dass es den fast 100% kompatiblen 328PB gibt,
> bei dem nichts von "Not Recommended for new designs" auf der Webseite
> steht.

Sehe ich auch so. Deshalb verwende ich ohne Bedenken immer noch den 
328P. Und wenn es den in 10 Jahren tatsächlich nicht mehr geben sollte, 
dann wäre es vielleicht auch zumutbar die Headerfiles für den 328PB zu 
ändern und den Quelltext einmal neu zu kompilieren.

Und wenn in 20 Jahren dann auch der 328PB ausläuft, dann kaufe ich mir 
bei Pollin noch so viele Exemplare, daß ich die wichtigen Dinge 
reparieren kann.

von Veit D. (devil-elec)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Ich glaube, ein frisch installierte Arduino IDE (2.x) kann überhaupt
> keinen Mikrocontroller programmieren, ohne den dazu nötigen Core
> herunter zu laden. Die alte Arduino IDE (1.8) enthielt hingegen
> Unterstützung für die klassischen Modelle (Uno, Nano, Mega, ...).

Wie man zu so einer Aussage kommen kann, ich weiß es nicht. Tut mir 
leid. Bei der Vorlage muss man sagen, du hast keine Ahnung.

Beitrag #7883470 wurde vom Autor gelöscht.
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Veit D. schrieb:
> Wie man zu so einer Aussage kommen kann, ich weiß es nicht. Tut mir
> leid. Bei der Vorlage muss man sagen, du hast keine Ahnung.

Probiere es aus und entschuldige dich danach!

Beitrag #7883479 wurde vom Autor gelöscht.
von Veit D. (devil-elec)


Lesenswert?

Hallo,

a) verwende ich die Arduino IDE 1.x und 2.x schon sehr lange, ich weiß 
was ich dazu schreibe
b) habe ich es mit dem .zip File jetzt nochmal gegen getestet, falls 
sich etwas unerwartet geändert haben sollte, kann ja sein
c) steht es in der Beschreibung 
https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager/ 
unter AVR

Also. Wer von euch hat es
1
[  ] ausprobiert
2
[  ] nicht ausprobiert

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ich muss dem Stefan leider recht geben, auch wenn mir das prinzipiell 
gar nicht schmeckt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Veit D. schrieb:
> b) habe ich es mit dem .zip File jetzt nochmal gegen getestet,
Hast du auch den Arduino15 Ordner gelöscht?
Denn da finden sich die Reste einer vorherigen Installation.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

nein, habe ich nicht gelöscht. Ich werde es sichern und den Test nachher 
wiederholen. Würde im Falle auch der Beschreibung widersprechen. Ich bin 
gespannt ...

von Alexander (alecxs)


Lesenswert?


von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

Arduino15 Ordner gesichert und umbenannt. .zip File nochmal frisch 
entpackt.

So eine Scheiße. :-) :-) :-) Das Standard AVR Board Package ist wirklich 
in der IDE 2.x nicht dabei. Es wird sogar entgegen der Beschreibung 
frisch runtergeladen. Okay.

Nachdem ich paar Leute zu unrecht angegangen bin und die große Fresse 
gehabt habe, entschuldige ich mich in aller Form dafür. Man oh man. Was 
für ein Tag.  ;-)

Entschuldigung!

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich muss euch sagen, es kommt noch besser, es verhält sich anders wie 
wir alle dachten. Wenn die "Simulation" Umgebung falsch ist, kommt man 
zu falschen Ergebnissen. Um eine frische IDE "Installation" zu 
simulieren, was für die eigentliche Frage entscheidend ist, muss man 
zusätzlich den Ordner
1
C:\Users\xyz\AppData\Roaming\arduino-ide
löschen. Also
1
C:\Users\xyz\AppData\Local\Arduino15
und
1
C:\Users\xyz\AppData\Roaming\arduino-ide
Im letzteren wird in einer Konfigurationsdatei ein Flag gespeichert, was 
besagt, dass das AVR Board Package schon installiert wurde.
Macht man das, wird nach Start der IDE automatisch das AVR Board Package 
runtergeladen und installiert.

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.