welches Board mit vielen Ios und 3,3V & 5V?

hallo,

ich beschäftige mich beruflich u.A. mit der Validierung von ICs. Hierfür würde ich gerne von einer „hausgemachten“ Lösung auf Arduino umsteigen. Gründe sind die Verfügbarkeit verschiedenster Shields und die große Community. Allerdings bin ich bei der Boardauswahl schnell auf Probleme gestoßen. Konkret finde ich kein Arduino Board, welches ich sowohl mit 5V und 3,3V versorgen kann, und welches >20 freie (=nicht-shield) Digital-IOs zur Ansteuerung diverser Peripherie bietet.

Arduino Due und Mega2560 scheinen den 2. Punkt gut zu erfüllen, unterstützen aber scheinbar nur 3,3V bzw. 5V Pegel…? Und die kleineren Boards haben nicht genügend Pins für die benötigten Zusatzschaltungen. Habe ich vielleicht was übersehen oder kennt jemand einen Arduino-Ableger, der obige Eigenschaften hat, dabei aber vernünftig unterstützt wird?

Ach ja, und gleich noch eine Frage: bei der Validierung benötige ich manchmal harte Echtzeitfähigkeit, sprich 100% Reproduzierbarkeit im ns-Bereich. Bisher konnte ich das bei Bedarf durch Sperren aller Interrupts erreichen. Ich gehe davon aus, das geht auch beim Arduino…?

Für Eure Hilfe vielen Dank im Voraus!

Gruß, Georg

sprich 100% Reproduzierbarkeit im ns-Bereich. Bisher konnte ich das bei Bedarf durch Sperren aller Interrupts erreichen. Ich gehe davon aus, das geht auch beim Arduino…?

Was ist ein Arduino für dich?

Die auf 8 bit atmega IC basierenden laufen mit 16 MHz, haben also eine Taktzeit von 62,5 ns. Scheiden also schonmal aus. Bleibt also höchstens der 84 MHz Due, wobei die Community schonmal deutlich kleiner wird.

Wenn noch interessant:
Klar kannst du alle Interrupte sperren, aber das ist dann eher kein "Arduino" mehr und du solltest dich eher um Assembler-Programmierung der passenden Hardware (?) bemühen.

Bei Digital-Ausgängen musst du dich für entweder 3.3 oder 5V entscheiden. (Due nur 3.3V) Und Pegelwandler einsetzen.

(=nicht-shield)

Wenn ich dich richtig verstehe: Stimmt! Shields zum aufstecken sind Spielkram, wie die ganze Arduino Hardware übrigens.

Mit allen deinen Maximalforderungen zusammen bist du hier jedenfalls falsch.

Worum geht es dir genau bei den Pegeln?

Die Atmega ARMs (Zero/Due) haben soweit bekannt nur 3V3 Ein und Ausgänge. Diese sind nicht gegenüber 5V Tolerant. Wenn es dir drum geht, die Arduino Software einzusetzen, schau dir mal die neuen Teensys an. Eingänge sind 5V kompatibel.

Wie sieht das Eigengewächs aus? Was für einen Controllertyp ist verbaut etc.

Nur der Vollständigkeit halber: wenn der DUE für Dich interessant ist, lohnt auch mal ein Blick auf den DigiX von Digistump (http://digistump.com/products/50). Der ist 100% pin-kompatibel zum DUE, besitzt aber zusätzlich noch eine Pin-Reihe mehr und kommt so auf 99 IO's. Zusätzlich hat er WiFi bereits an Bord. Es gibt auch einen Distributor in Deutschland für die Dinger und die Verfügbarkeit ist besser als bei den DUE's.

hi,

wenn dich wirklich die community interessiert, sind eigentlich die 8-bit-arduinos für dich passend, aber die laufen eben nur mit 16MHz.
sollte die geschwindigkeit doch nicht so wichtig sein, könnte man ja einen MEGA mit 3,3V und 8MHz betreiben.

gruß stefan

hallo,

erst mal vielen Dank für die ausführlichen Kommentare! Ich versuche sie mal sinnvoll zu beantworten:

michael_x:
Was ist ein Arduino für dich?

Arduino bedeutet für mich, dass es HW & SW für sehr viele Funktionen bereits gibt. Und bei Fragen gibt es eine Community die hilft (siehe diesen Thread ;)). Im Gegensatz dazu ist unser aktuelles System eine One-Man Show :-\

michael_x:
Die auf 8 bit atmega IC basierenden laufen mit 16 MHz, haben also eine Taktzeit von 62,5 ns. Scheiden also schonmal aus. Bleibt also höchstens der 84 MHz Due, wobei die Community schonmal deutlich kleiner wird.

sorry, da habe ich mich unklar ausgedrückt :frowning: Geschwindigkeit ist immer gut, aber 8-bit/16MHz sind OK (heute benutzen wir STM8@16MHz --> selbe Liga). Mit "echtzeitfähig" meinte ich 100% Reproduzierbarkeit auf Level Systemtakt. Und das erreiche ich (hoffentlich) durch Sperren aller ISRs. Dies aber nur kurz und bei Bedarf, ansonsten läuft die normale Arduino-SW

michael_x:
Klar kannst du alle Interrupte sperren, aber das ist dann eher kein "Arduino" mehr und du solltest dich eher um Assembler-Programmierung der passenden Hardware (?) bemühen.

siehe oben. Meistens läuft die normale SW und alle Interrupts. Aber wenn ich z.B. eine Sequenz mit exaktem Timing (auf Basis 62.5ns) brauche, muss ich halt für die paar Millisekunden alle ISRs sperren - genau wie im heutigen System. Ich nehme an, das geht auch hier...?

michael_x:
Bei Digital-Ausgängen musst du dich für entweder 3.3 oder 5V entscheiden. (Due nur 3.3V) Und Pegelwandler einsetzen.

das wäre schlecht, denn die 3,3V und 5V GPIOs brauche ich wegen ICs mit unterschiedlichen Logikpegeln. Und außerdem müssen sie als Input und Output umschaltbar sein --> umschaltbare Vcc ist ideal (wie heute), Pegelwandler vermutlich zu kompliziert. Daher...

Eisebaer:
...könnte man ja einen MEGA mit 3,3V und 8MHz betreiben.

ich dachte, der Mega läuft nur mit 5V (siehe http://arduino.cc/en/Main/ArduinoBoardMega2560)...? Falls das Board auch mit 3,3V tut, ist meine Suche vermutlich vorüber :grin:

michael_x:
Wenn ich dich richtig verstehe: Stimmt! Shields zum aufstecken sind Spielkram, wie die ganze Arduino Hardware übrigens.
Mit allen deinen Maximalforderungen zusammen bist du hier jedenfalls falsch.

die zusätzlichen GPIOs brauche ich für die Ansteuerung z.B. von Spannungs- und Strom-DACs. Wenn ich hierfür die Shields-Stecker nehme, blockiere ich die Pins und verliere die schöne Erweiterbarkeit der Arduino Plattform. Wie gesagt, wenn Eisebaer recht hat, ist der Mega2560 vermutlich mein uC der Wahl :smiley:

mgcss:
...lohnt auch mal ein Blick auf den DigiX...

sschultewolter:
...schau dir mal die neuen Teensys an. Eingänge sind 5V kompatibel...

beides schöne Teile, aber mir geht es weniger um Geschwindigkeit als um guten Support und Vcc=3,3V/5V Option. Daher würde ich lieber bei den guten, alten 8/16-Bit Arduinos bleiben.

Wow, das ist mal eine lange Antwort geworden :wink: Euch nochmal vielen Dank für den Support, der mich darin bekräftigt von unserem Eigengewicht auf Arduino umzuschwenken!

Meine Hauptfrage ist nun ob man den Mega256 sowohl mit 5V als auch 3,3V betreiben kann...?

Gruß, Georg

Hallo Georg,

die Ausgangspegel der Atmegas richten sich nach der Speisung des Mikrocontrollers. Du kannst ein bestehendes Board mit einem festen Quarz nicht einfach zwischen 3V3 und 5V umschalten. Denn wie im Datenblatt ersichtlich ist, schafft der Atmega bei 3V3 nicht, einen 16MHz Quarz zu betreiben.

Bei 3V3 ist etwas über 8MHz Schluss. Alles andere ist ausserhalb der Spezifikation und nicht reproduzierbar. Es hatte mal jemand versucht, den maximalen Takt des Quarzes bei 3V3 rauszufinden. Dieser lag meines Wissens irgendwo zwischen 10 und 12MHz.

Mein Ansatz wäre es, einen ARM zu suchen, der von der IDE unterstützt wird und 5V-tolerante Eingänge hat (Siehe Teensy).
Schau dir deine ICs mal genauer an. (Datenblätter). In der Regel sollten 3V3 Pegel vom Mikrocontroller ausreichen, um an einem IC, der 5V erwartet, einen HighPegel zu erzeugen.

Ansonsten sind Pegelwandler nicht so schwer nachzubauen mit ein paar Widerständen und Transistoren. Alternativ auch als fertiges IC erhältlich, jedoch sind die Schaltfrequenzen deiner ICs hier sehr wichtig, denn das Signal kann bei hohen Frequenzen sehr stark in mitleidenschaft gezogen werden.

hi,

es sollte doch möglich sein, einen mega mit einem 8MHz-bootloader zu flashen und ihn dann mit 3.3V zu betreiben.
was mir allerdings einfällt, ist, daß der mega dann, glaube ich, keine 5V an den eingängen aushält. da war doch mal was mit den grenzen von höchstens Vcc plus irgendwas. wo sind die spezialisten?

gruß stefan

Eingangspegel max. Vcc+0,5V

hallo ihrs,

wie gesagt, unser heutiges System basiert auf einem STM8, den ich mit Vcc=3,3V und 5V betreiben kann. Anbei ein Foto. Die IO Ausgangspegel sind Vcc, die max. erlaubte Spannung am IO ist Vcc+0,5V. Ganz normal halt.

sschultewolter:
...schafft der Atmega bei 3V3 nicht, einen 16MHz Quarz zu betreiben.

hmmm, das ist schade. Aber wie genau ist denn die interne Clock und kann ich die per SW zwischen 8MHz und 16MHz umschalten ohne dass es Probleme z.B. mit dem Bootloader gibt. M.E. sollte das gehen, da der Bootloader ja vermutlich auf "seine" Frequenz umschaltet...?

sschultewolter:
Bei 3V3 ist etwas über 8MHz Schluss. Alles andere ist ausserhalb der Spezifikation und nicht reproduzierbar. Es hatte mal jemand versucht, den maximalen Takt des Quarzes bei 3V3 rauszufinden. Dieser lag meines Wissens irgendwo zwischen 10 und 12MHz.

ok, aber wie sieht es mit der internen Clock aus? Die externe Clock brauche ich doch vermutlich nur für CAN (wenn überhaupt), solange ich das Board nur bei Raumtemperatur betreibe...?

sschultewolter:
Mein Ansatz wäre es, einen ARM zu suchen, der von der IDE unterstützt wird und 5V-tolerante Eingänge hat (Siehe Teensy).
Schau dir deine ICs mal genauer an. (Datenblätter). In der Regel sollten 3V3 Pegel vom Mikrocontroller ausreichen, um an einem IC, der 5V erwartet, einen HighPegel zu erzeugen.

der STM32 hat ebenfalls Vcc=3,3V und 5V tolerante Pins (z.B. Olimexino). Was mich dabei etwas abschreckt ist die kleine Community. Ich glaube nicht, dass in den entsprechenden Foren innerhalb von 2 Stunden ebenfalls 3 fachkundige Kommentare bekommen hätte :wink:

sschultewolter:
Ansonsten sind Pegelwandler nicht so schwer nachzubauen mit ein paar Widerständen und Transistoren.

Verstanden, aber damit brauche ich verschiedene Board-Pins für Eingangs- (direkt an 5V-toleranten IO oder via Spannungsteiler) bzw. Ausgangssignale (über Transistor bzw. Pegelwandler). Kann man machen, ist aber im Vgl. zu umschaltbarer Vcc unschön und fehleranfällig in der Bedienung :-\

Daher komme ich nochmal zurück auf Mega256: könnte ich den mit 3,3V laufen lassen, wenn ich die interne Clock benutze? Und kollidiert das mit der Arduino Basis-SW...?

Nochmal vielen Dank für die schnelle und gute Diskussion!

Gruß, Georg