Ich würde ein Arduino Board nehmen, dafür brauchst du keinen Programmer
und hast eine serielle Schnittstelle zu deinem Rechner, du bist ja nicht
verpflichtet die Arduino IDE zu verwenden.
René F. schrieb:> Ich würde ein Arduino Board nehmen, dafür brauchst du keinen Programmer> und hast eine serielle Schnittstelle zu deinem Rechner, du bist ja nicht> verpflichtet die Arduino IDE zu verwenden.
Einmal das, und die Arduino Boards in allen Varianten sind viiiieeel
günstiger.
Ich habe mir schon überlegt, ob für mich nicht ein auf Breadboard
steckbare Dev Board mit ZIF-Sockel reicht.
@Stefan:
Welche ATmega und ATtiny Modell sind denn aktuell? Ich finde das nicht
heraus. Habe schon viel gegoogelt aber finde zu dieser Frage schlicht
nichts.
Den von Dir genannten Nano und Cortex habe ich hier da. Aber das sind
Arduinos. Ich wollte was, was ich mit ISP oder JTAG programmieren kann.
Oder werden die Arduinos mit dem USB-Port irgendwie "anders" verwendet,
um sie direkt zu programmieren, wie einen ATmega? Ich wollte den Arduino
Bootloader und en Arduino Overhead nicht haben, sondern direkt auf
ATtiny und ATmega arbeiten.
@Matthias:
Hat der STK500 einen JTAG Anschluß, oder wird da über RS232
programmiert? Ich habe nämlich keine serielle Schnittstelle mehr am PC
und auch keine Slots mehr frei für eine PCI(e) Karte.
Schade dass das Ding keine ZIF Sockel hat.
Ihr schreibt, dass ich die Arduino Boards nehmen sollte.
Ich möchte den ATmel mit C oder Assembler direkt programmieren. Ohne
Bootloader. Funktioniert das über die USB Schnittstelle eines Arduino?
Ich dachte dass ich für dieses Vorhaben zwingend einen Programmer
benötige und den ATmega nur über ISP oder JTAG programmieren kann. Weil
ja dann der Arduino Bootloader fehlt.
Hi
>Ich habe nämlich keine serielle Schnittstelle mehr am PC>und auch keine Slots mehr frei für eine PCI(e) Karte.
Dann sieh mal den Unterlagen von deinem Motherboard nach, ob das Teil
nicht doch eine RS232-Schnittstelle hat. Ich habe schon mehrere PCs für
ein paar € nach gerüstet. Ansonsten kannst du auch einen
USB-RS232-Wandler benutzen. Achte aber bitte darauf, das er einen
FTDI-Chip besitzt.
MfG Spess
> Welche ATmega und ATtiny Modell sind denn aktuell?
ATtiny 13A ist der kleinste für Steckbrett
ATtiny 25 45 85
ATtiny 441 841
ATtiny 261 461 861
ATmega 48 88 168 328
ATmega 164 324 644 1284
ATmega 640 1281 2561
> Aber das sind Arduinos. Ich wollte was, was ich mit> ISP oder JTAG programmieren kann.
Alle Arduino Module haben einen ISP Anschluss und bei vielen sind auch
die JTAG Pins herausgeführt.
> Oder werden die Arduinos mit dem USB-Port irgendwie "anders" verwendet
Die haben einen Bootloader vorinstalliert. Am USB Port hängt je nach
Modell entweder ein USB-UART Chip oder der AVR selbst hat direkt USB.
> ich wollte den Arduino> Bootloader und en Arduino Overhead nicht haben,
Dann lösche ihn einfach mit deinem ISP Programmieradapter.
Ich weiß gar nicht, warum du so in diese ZIF Sockel vernarrt bist. Was
denkst du, wie viele hundert male du den Chip rein/raus stecken wirst,
um ihn kennen zu lernen? Hast du vergessen, dass man ihn normalerweise
in der Zielschaltung programmiert? Das ist ein Eprom! Abgesehen davon
kann man ZIF Sockel in die DIP Fassungen stecken.
Peter King schrieb:> René:>> Kann man das Arduino Board auch mit dem Atmel Studio entwickeln und es> über den USB-Anschluß des Boards programmieren?
Ja aber der Bootloader muss auf dem Arduino Board bleiben um ihn über
USB zu programmieren, andernfalls bräuchtest du wie bei den von dir
gezeigten Boards einen AVR USBISP oder ähnlich.
Schau dir auch die Xplained Boards von Atmel an - so teuer sind die
nunwieder auch nicht, haben oft auch einen Debugger an Bord. Ich benutze
einen XMEGAA1U XLAINED und bin sehr zufrieden und es läuft
selbstverständlich unter Studio.
Ich weiß, mir fehlt da irgend eine kleine Grundlage (ein stück vom
Puzzle). Das ist der Grund, warum ich es nicht kapiere. Nur weiß ich
blöderweise nicht, welche Grundlage mir da fehlt.
Vielleicht ist es so verständlicher:
Ich möchte den ATmega oder ATtiny so programmieren, wie man das vor der
Arduino Zeit tat. Damit meine ich die Befehle und die Bibliotheken. Ich
möchte die Arduino Libs nicht nutzen und das ganze programmierbare
Arduino-geraffel nicht.
Ob ich dafür allerdings die Hardware dazu nutzen muss, wie einen
Programmer, etc., das ist mir egal. Eigentlich ist mir das nicht egal,
eigentlich gehen mir die externen Programmer, etc. auf die Nerven, weil
sie Geld kosten und umständlich sind.
Mir wäre es am liebsten, wenn ich so ein Arduino Board nehmen könnte und
es mit dem Atmel Studio, wie einen normalen nackten ATmega programmieren
könnte ohne die ganzen Arduino-LIBs und ohne das Arduino-Geraffel, aber
über USB und ohne extra Programmer.
Geht das so überhaupt?
Wenn ich das richtig verstanden habe, ist das Einzige, was einen ATmega
von einem Arduino unterscheidet, der Bootloader und entweder ein direkt
angeschlossener USB Anschluß bei den ATmegas, die USB können, oder ein
FTDI Chip (der Umsetzer nach USB) mit eben dem USB-Anschluß. Ist das so
richtig?
Warum montiert man nicht an jeden ATmega einen USB Port dran und macht
den Bootloader drauf? Würde doch in jedem Fall die extra Programmer
ersparen, oder sehe ich das falsch?
Die Firma Atmel hat das so vorgesehen:
Alle AVR Mikrocontroller werden über ISP programmiert. Manche können
zusätzlich auch JTAG. Ende.
Arduino macht die Programmierung über USB oder seriellem Port mit Hilfe
eines Bootloaders möglich.
Du kannst diese Chips nicht direkt über USB programmieren, solange du
die Verwendung des Bootloaders verweigerst. Dann musst du halt einen ISP
Programmieradapter benutzen, so wie Atmel das vorgesehen hat.
Der Bootloader schließt übrigens nicht die Verwendung des Atmels Studios
aus. Du kannst deine Programme einfach ganz normal mit dem Atmel Studio
schreiben. Nur für die Übertragung mittels Bootloader müsstest du eine
fremde Software (z.B. avrdude) benutzen, weil das Atmel Studio wie
gesagt ausschließlich ISP und JTAG Programmieradapter unterstützt.
Du wirst im Netz Anleitungen finden, die erklären, wie man avrdude und
andere Fremd-Programme in das Atmel Studio integriert.
Also: kaufe Dir ruhig diese Arduino Nano kompatiblen Module aus China.
Du kannst sie mit dem Atmel Studio programmieren und zum Flashen
wahlweise einen ISP Programmieradapter oder den USB Bootloader benutzen.
Falls du einen nicht-originalen ISP Programmieradapter kaufst, bedenke
dass viele nicht vom Atmel Studio unterstützt werden, wohl aber von
avrdude.
Bevor du lange herum fackelst und damit haderst, welche Entscheidung
wohl die beste sein mag, solltest du einfach mal auf zwei Kaffee
verzichten und dafür einen Arduino Nano clone und einen billigen ISP
Programmer kaufen. Experimentiere damit herum, dann wirst du schnell
merken, was die gut können und was nicht so gut ist. Danach entscheidest
du dann über größeres Budget.
Peter King schrieb:> Warum montiert man nicht an jeden ATmega einen USB Port dran und macht> den Bootloader drauf?
Das macht man so bei den AVRs, die USB haben.
Verstehe jetzt besser. Danke Euch.
Der STM32, ist ein Cortex M3 von ARM.
Der kann aber nicht mit dem Atmel Studio entwickelt und programmiert
werden, richtig?
Am liebsten wären mir Plugins für Ms Visual Studio, damit ich alles dort
drin entwickeln und programmieren kann.
> Der STM32, ist ein Cortex M3 von ARM.> Der kann aber nicht mit dem Atmel Studio entwickelt> und programmiert werden, richtig?
Richtig, für den nimmst du zum Beispiel die "System Workbench for STM32"
und einen ST-Link Adapter. Abgesehen von der wesentlich höheren Leistung
und mehr I/O Funktionen hast du dort den Vorteil, dass man selbst mit
den billigsten 3€ ST-Link clones debuggen kann. Bei Atmel musst du für
einen Debugger mindestens 50 Euro ausgeben.
> Am liebsten wären mir Plugins für Ms Visual Studio
Soweit ich mitbekommen habe, basiert das Atmel Studio auf Visual Studio.
Damit müsstest du sofort zurecht kommen. Aber die anderen
Entwicklungsumgebungen sind ähnlich, damit kommst du sicher auch nach
wenigen Stunden Einarbeitung klar. Du bist ja noch keine 90 Jahre alt,
oder?
Peter King schrieb:> Warum montiert man nicht an jeden ATmega einen USB Port dran und macht> den Bootloader drauf? Würde doch in jedem Fall die extra Programmer> ersparen, oder sehe ich das falsch?
Du kannst auch einen Arduino für 2€ als ISP-Programmer programmieren,
auf deine ATmegas einmal einen Bootloader deiner Wahl aufspielen und sie
fortan, ganz ohne irgendeinen externen Programmer, über die serielle
UART-Schnittstelle programmieren. JTAG geht damit natürlich dann nicht.
Peter King schrieb:> Verstehe jetzt besser. Danke Euch.>> Der STM32, ist ein Cortex M3 von ARM.
Falsch.
Das ist eine ganze MCU-Familie von Cortex-M0, M0+, M3, M4,
M7-Controllern, deren Kern von ARM ist.
Peter King schrieb:> Was ist Eure Meinung dazu?
Die erscheinen mir alle zu teuer. Ein Arduino nano mit ATMega328 kostet
um die €2,- und ist preiswerter, kleiner und hat USB-Konnektivität an
Bord. Die ganze Peripherie von den (noch teureren) Boards kannst du
genausogut auf einem Steckbrett verdrahten.
> Natürlich würde ich noch welche mit dem ZIF-Sockel kaufen. Aber die oben> genannten eignen sich doch gut für den Anfang und sind vom Preis auch> akzeptabel.
ZIF Sockel? Warum das denn? DIP-IC passen direkt auf ein Steckbrett. Da
würde man gar kein Board drum herum haben wollen.
Peter King schrieb:> Ich möchte den ATmel mit C oder Assembler direkt programmieren. Ohne> Bootloader. Funktioniert das über die USB Schnittstelle eines Arduino?
Die Programmierung über USB geht nur mit Bootloader. Allerdings merkst
du davon nicht viel. Du hast dann halt nur 30 von 32KB Flash zur
Verfügung. Ob du dann C oder ASM oder was auch immer verwendest, ist
dein Bier. Und wenn du sicher bist, den Bootloader nicht verwenden zu
wollen, kannst du den Chip ja immer noch über ISP programmieren.
> Ich dachte dass ich für dieses Vorhaben zwingend einen Programmer> benötige und den ATmega nur über ISP oder JTAG programmieren kann.
Für das reine Programmieren reicht ISP. Da kostet der "Programmer" auch
nur wenige EYPO (z.B. in Form eines USBASP aus China). JTAG ist eher
interessant, wenn du debuggen willst. IMHO ein Luxuxproblem. Aber YMMV.
Peter King schrieb:> Mir wäre es am liebsten, wenn ich so ein Arduino Board nehmen könnte und> es mit dem Atmel Studio, wie einen normalen nackten ATmega programmieren> könnte ohne die ganzen Arduino-LIBs und ohne das Arduino-Geraffel, aber> über USB und ohne extra Programmer.>> Geht das so überhaupt?
Jein. Direkt programmieren ohne "Arduino-Geraffel" - definitiv Ja. Über
USB programmieren - nur mit Bootloader. Ohne Bootloader - nur mit einem
ISP-Adapter. Der aber nicht die Welt kostet. Und den du früher oder
später ohnehin haben wollen wirst.
Peter King schrieb:> Warum montiert man nicht an jeden ATmega einen USB Port dran und macht> den Bootloader drauf? Würde doch in jedem Fall die extra Programmer> ersparen, oder sehe ich das falsch?
Einen integrierten USB-Port haben die ATMega nicht. Und der zusätzliche
USB-zu-serial Chip kostet nahezu so viel wie der ATMega selber. Der
Bootloader frißt 2KB Flash. Außerdem fallen diese Kosten bei jedem
Board an. Den ISP-Programmer brauchst du hingegen nur einmal.
Hinreichend große ARM Controller haben das aber so. Einen USB-Port auf
dem Chip und einen USB-Bootloader im ROM (verbraucht also nicht mal
Flash). Die preiswerten "Bluepill" ARM Boards fallen leider nicht in
diese Kategorie. Die haben nur einen ROM-Bootloader für den UART. Für
einen USB-Bootloader mußt du dann 4 bis 8KB Flash investieren. OK, bei
64KB Flash tut das nicht ganz so weh ...
Peter King schrieb:> Am liebsten wären mir Plugins für Ms Visual Studio, damit ich alles dort> drin entwickeln und programmieren kann.
Ernsthaft? Ich habe Wuschelstudio nur als einen resourcenfressenden,
unübersichtlichen Moloch in Erinnerung. Außerdem kann (konnte?) es nur
Windows und x86.
Im Zweifelsfall nimm Eclipse. Das ist zwar auch fett, kann aber
wahlweise als Entwicklungsungebung für den x86 Host, für AVR und für ARM
verwendet werden.
Peter King schrieb:> Warum montiert man nicht an jeden ATmega einen USB Port dran und macht> den Bootloader drauf? Würde doch in jedem Fall die extra Programmer> ersparen, oder sehe ich das falsch?
Das siehst Du richtig. Aus unerfindlichen Gründen machen einige
Hersteller ab Werk einen Bootloader drauf (EFM, LPC, STM) und andere
nicht (AVR, PIC) Warum das so ist bleibt rätselhaft. Wem der Bootloader
nicht passt, kann ihn ja löschen. Aber ohne Programmer bekommt man
keinen drauf. Vielleicht zur Absatzsteigerung der Atmel ICE und PICkit.
Am Speicher liegt es übrigens nicht, der EFM Bootloader z.B. braucht
weniger als 256 Byte Flash.
Für AVR gibt es einen V-USB Bootloader, braucht aber schon 2K Flash:
https://learn.sparkfun.com/tutorials/how-to-install-an-attiny-bootloader-with-virtual-usb/install-micronucleus
Wie sind denn so die Debugging-Funktionen der ATmega328P Xplained Mini?
Gleich als wenn mit JTAG debuggt wird oder gibt es da irgendwelche
Einschränkungen?
Theoretisch gedacht, könnte man auf so einem ATmega328P Xplained Mini
erst mal entwickeln und debuggen. Das geht mit dem Atmel Studio.
Dann, wenn das Programm fertig ist, kann man das Programm mit einem
günstigen (Clone) ISP Programmer auf einen ATtiny oder (anderen) ATmega
draufspielen und fertig.
Oder! man benutzt einen Arduino und spielt das fertige Programm ohne ISP
eben über die vorhandene USB Schnittstelle drauf.
Die Entwicklung läuft jedoch auf dem Explained-Platinchen, da dort
debugging mit Atmel Studio möglich ist. Sonst könnte man es auf einem
Arduino Board machen. ABER: Dort ist kein debugging möglich, was ich
schon als sehr wichtig und notwendig erachte.
Ist der Gedankengang von mir so gangbar oder gibt es Gründe, warum man
es anders machen sollte?
Mir fällt gerade ein: Ich habe immer noch keine Möglichkeit mit dem
obigen Equipment, verfuste ATmegas / ATtinys zu "retten". Gibt es dafür
eine gangbare einfach Möglichkeit? Vielleicht in solchem Fall etwas
temporär auf dem Steckbrett aufbauen?
Lothar schrieb:> Aus unerfindlichen Gründen machen einige Hersteller ab Werk einen> Bootloader drauf (EFM, LPC, STM) und andere nicht (AVR, PIC) Warum das> so ist bleibt rätselhaft.
Weil das ein weiterer Schritt in der Fertigung ist und die
Produktionskosten deutlich erhöht, solche Programmierautomaten sind
teuer und zudem teilweise sehr wartungsintensiv, wir haben das einige
Jahre lang als Dienstleistung angeboten (auch im Auftrag von
verschiedenen Chipherstellern) und mussten mehrere Techniker und
Produktionshelfer 24/7 beschäftigen, alleine das umrüsten einer solchen
Maschine kann mehrere Stunden dauern und das Kalibrieren der
Kamerasysteme ist aufwändig, schön ist es auch wenn die Maschine dann
Bauteile aussortiert weil es der Meinung ist die Beinchen wären verbogen
nur weil die Beschichtung der Beinchen nicht perfekt gleichmäßig ist...
Zudem ist das in-circuit flashen heutzutage überhaupt kein Problem mehr
und kann gleich in der Fertigung neben diversen Tests auf dem
Nadelprüfadapter geschehen.
Peter King schrieb:> Mir fällt gerade ein: Ich habe immer noch keine Möglichkeit mit dem> obigen Equipment, verfuste ATmegas / ATtinys zu "retten". Gibt es dafür> eine gangbare einfach Möglichkeit? Vielleicht in solchem Fall etwas> temporär auf dem Steckbrett aufbauen?
Nein, dafür brauchst du einen HV Programmer, diese sind aber inzwischen
auch nicht mehr sooo teuer, häufig stehen aber Programmieralgorithmen
unter einer NDA weshalb es in solchen Spezialfällen oft nur Tools des
Chipherstellers gibt.
@Mark:
Wenn man die Controller nicht all zu oft verfust, dürften neu gekaufte
Controller oder Arduino-Boards billiger kommen, als ein HW Programmer.
Mit vorherigem nachdenken, was man da tut, dürfte das ja theoretisch
niemals passieren. Aber der Mensch ist nicht perfekt.
Einen verfusten Controller, der schon im System eingbaut ist, kann man
dann ja auslöten, um ihn einer HV Programmierung zu unterziehen,
richtig?
Trotzdem: Was ist zur Zeit der günstigste verfügbare HW Programmer?
Der einzige, den ich kenne, ist der DRAGON.
Marc schrieb:> Weil das ein weiterer Schritt in der Fertigung ist und die> Produktionskosten deutlich erhöht
Warum sind dann die EFM8 8051 - alle mit werksseitigem Bootloader -
deutlich billiger als die direkte ATtiny / ATmega Konkurrenz? Brauchst
bloss mal bei Mauser nachzusehen.
Was wurde eigentlich aus "Probieren geht über Studieren!"?
Manchmal bekomme ich den Eindruck, daß zu viele von uns permanent in der
"Analyse Paralyse" Schleife verloren gehen.
Es wurden ja schon viele vernünftige Vorschläge gemacht. Mit den
billigen Arduino Modulen kann man Vieles ausprobieren. Und wenn der
Appettit mit dem Essen kommt, kann man ja immer noch den Zoom zurück
drehen und über den Tellerrand gucken.
Das Investment ist ja lächerlich niedrig. Was kann man also verlieren
außer etwas Zeit?
Also, macht!!!
Gerhard O. schrieb:> Was wurde eigentlich aus "Probieren geht über Studieren!"?
Das kommt schon noch. Aber erst mal vernünftig einkaufen und sich vorher
genau informieren.
Alleine ohne diesen Thread wäre ich sicher knapp 500 EUR los geworden,
für Programmer, Dev Boards, AVRs und hätte damit veraltete Hardware
gekauft, die aber in einigen Büchern belobt wurde.
Nichts vermiest den Spaß und Erfolg so sehr, wie die Feststellung, dass
man auf Grund von ungenügendem Wissen viel Geld (mehrere Hundert EUR)
ausgegeben hat und das Zeug nun kaum oder gar nicht brauchen tut.
Durch die Antworten hier, bin ich auf viele tolle Produkte und
Möglichkeiten aufmerksam gemacht worden, auf die ich selbst nicht so
schnell gekommen wäre.
Axel S. schrieb:> Einen integrierten USB-Port haben die ATMega nicht.
AT90USBxxx sind ATmegas mit integriertem USB Port und einem bei der
Auslieferung vorprogrammierten Bootloader. XMEGAs haben ebenfalls
vorprogrammierte Bootloader.
Atmel Apliacation Note: USB DFU Bootloader Datasheet
The 8bits mega AVR with USB interface devices are factory configured
with a
USB bootloader located in the on-chip flash boot section of the
controller.
This USB bootloader allows to perform In-System Programming from an USB
host controller without removing the part from the system or without a
pre-programmed application, and without any external programming
interface.
AT90USB128x
AT90USB64x
AT90USB162
AT90USB82
ATmega32U4
ATmega16U4
> Gleich als wenn mit JTAG debuggt wird
Du hängst zu sehr am JTAG. Diese Schnittstelle ist schon fast wieder
veraltet. Bei ATmega Controllern ist der Debug Wire angesagt. Der Debug
Wire ist physikalisch übrigens der Reset Pin. Die meisten ATtinies kann
man nicht debuggen. Bei STM32 heisst die Schnittstelle SWJ, welche die
Protokolle JTAG und SWD kann, wobei SWD der neuere Standard ist.
> Sonst könnte man es auf einem> Arduino Board machen. ABER: Dort ist kein debugging möglich
Das ist nicht richtig. Du kannst den Debugger (Atmel ICE oder gerne auch
das STK500) an die ISP Schnittstelle jedes Arduino Moduls stecken und
damit debuggen.
> Ich habe immer noch keine Möglichkeit mit dem> obigen Equipment, verfuste ATmegas / ATtinys zu "retten".
Dafür brauchst du einen sogenannten "High Voltage programmer". Der 50
Euro teure Atmel Dragon ist ein bekannter, der kann auch bis zu 32kB
debuggen.
Unter dem namen "Fuse Doctor" kursiert eine günstigere Schaltung im
Netz, zum selber bauen.
Ich glaube nicht, dass du so etwas brauchst. Spätestens nach dem 2.
verfusen solltest du es drauf haben. Mir ist es nur einmal passiert,
seit dem gehe ich sehr sorgfältig vor, wenn ich Fuses ändere. Ich
speichere die konkreten Werte auch immer in einem Script ab, so dass ich
sie ohne Fehler später erneut anwenden kann.
Da man die Taktfrequenz bei den meisten aktuellen AVR's auch per
Software ändern kann, muss man die Fuses zum Glück nur sehr selten
ändern.
> ohne diesen Thread wäre ich sicher knapp 500 EUR los geworden
Das glaube ich Dir. Jetzt sollte klar sein, daß ein 5er Pack Arduino
Nanos + ein ISP Programmer Stick für zusammen 20 Euro erst einmal
reichen sollten. Damit kommst du schon weit, ganz sicher.
Wieso nicht einfach einen Cortex-M wo du mittels stlink/segger jlink
einen guten Bugger fast geschenkt bekommst nehmen? Jetzt noch in AVR
einzusteigen, ich weiß nicht, insbesondere nach dem Kauf durch
Microchip, da wäre es langfristig noch sinnvoller auf PIC zu setzen...
> Welchen ISP Programmer Stick würdest du empfehlen?
Wenn er billig sein soll, dann einen USBASP Stick. (ab 2 Euro)
Wenn er gut sein soll: Einen Atmel ICE (ab 50 Euro)
Die billigen sind weniger flexibel, was die Versorgungsspannung angeht.
Fast alle USBASP haben einen Jumper zum Umschalten zwischen 3,3 und 5V.
Ihre Signale haben aber trotzdem immer 5V!
Die Signal-Spannung darf maximal 0,5V von der Versorgungsspannung des µC
abweichen. Der oben genannte Programmer von Atmel passt sich automatisch
an. Die USBASP Produkte können das nicht.
Außerdem kann der Programmer von Atmel noch andere Protokolle, nicht nur
ISP. Und er kann debuggen, das kann der USBASP gar nicht.
Für den Anfang reicht sicher ein USBASP.
Bei STM32 kannst du wie bereits gesagt schon mit den billigen 3 Euro
St-Link Sticks debuggen.
> Jetzt noch in AVR einzusteigen, ich weiß nicht
Für kleine Sachen halte ich das noch für Sinnvoll. ATtinies und PIC sind
auf Steckbrett und Lochraster ganz angenehm. Dann gibt es da noch
diverse Arduino Module mit ATmega328P, die wegen ihrem niedrigen Preis
attraktiv sind.
Alle größeren AVR's interessieren mich aber nicht mehr. Da nehme ich
dann auch lieber ARM Controller. Die können mehr für weniger Geld und
das Debuggen ist auch viel billiger.
Man muss sich ja nicht unbedingt für eine Serie entscheiden. Vielfalt
ist erlaubt. Und da man sowohl AVR als auch ARM mit dem gcc
programmieren kann, sind die Unterschiede nicht so gravierend, wie man
vielleicht denkt, wenn man an 8 versus 32bit denkt. Der Unterschied ist
für den C Programmierer nicht viel mehr als eine kleine Randnotiz denn
mit beiden Serien kann man 8bit bis 64 bit Berechnungen durchführen.
Stefan U. schrieb:> Für kleine Sachen halte ich das noch für Sinnvoll. ATtinies sind auf> Steckbrett und Lochraster ganz angenehm, aber die meisten können gar> nicht debuggt werden. Das ist auch der Grund, warum ich nicht mehr viel> Geld in einen AVR Debugger stecken würde. Dann gibt es da noch diverse> Arduino Module mit ATmega328P, die wegen ihrem niedrigen Preis attraktiv> sind.https://blog.adafruit.com/2012/03/13/32-bit-meet-dip-arm-cortex-m0-in-dip-packages/
Von Infineon oder so meine ich da auch etwas gesehen zu haben.
Da kommt man halt mit einem Segger J-LINK Edu für 50€ preislich sehr gut
weg, da ist quasi alles dabei und man kann "kleine" und "große" mit der
selben Toolchain debuggen.
Für Quick und Dirty nehm ich auch gerne die Arduinos, da würde ich mit
einzelnen Controllern nicht mehr anfangen. Manche nehmen für Quick und
Dirty auch diese kleinen STM32 Boards vom Chinesen, die sehen ganz
interessant aus, aber imho finde ich hier den ESP8266/ESP32 sehr nett,
WLAN ist immer eine nette Sache, vor allem zu dem Preis.
Das Debuggen wird meiner Meinung nach von vielen Leuten überbewertet.
Zum Einen haben es die Menschen mehrere Jahrzehnte geschafft,
Mikrocontroller ohne Debugger zu programmieren.
Das Arduino System ist trotz Verzicht auf Debugger erfolgreich, ebenso
der ESP8266.
Viele Anwendungen kann man nicht einfach so anhalten um nachzuschauen,
was die CPU gerade macht. Die Waschmaschine würde überlaufen, das
Modellauto gegen die Wand krachen, die LED-Matrix durchbrennen, die
Netzwerk-Kommunikation abbrechen. Da muss man dann auch noch die
Hardware anpassen/simulieren, um überhaupt debuggen zu können. Und dann
kommt noch dazu, dass der Debugger das Timing Verhalten ganz erheblich
ändert, so dass die ganze Schaltung versagt.
Als Alternative bieten sich (wie in dern 80er Jahren) Log-meldungen auf
einer seriellen Schnittstelle an. Zur not auch per Bit-Banging, falls
kein serieller Port frei ist:
http://stefanfrings.de/avr_hello_world/index.html
Kleine Korrektur:
> aber die meisten (ATtinies) können gar nicht debuggt werden
Ich habe weiter oben diesen falschen Satz gelöscht, aber leider zu spät.
Egon hat ihn bereits zittiert.
Das stimmt jedenfalls nicht. Man kann die aktuellen ATtinies alle
debuggen, soweit ich weiß. Ich hatte da irgendwie an die fehlende JTAG
Schnittstelle gedacht, aber die haben ja stattdessen DebugWire.
Für den Anfang bist du sicher mit folgender Ausstattung gut bedient:
5x ATtiny45
5x Arduino Nano clone
5x Blue-Pill Board (STM32F103C8T6)
5x ESP-12F Modul
1x USB-UART Adapter oder Kabel mit 3,3V Pegeln und 5V tolerant (der
CP2102 Chip kann das)
1x ISP Programmieradapter (basierend auf USBASP)
1x ST-Link v2 clone
Das alles zusammen kostet etwa 50 Euro. Damit bist du ganz sicher viele
Monate lang beschäftigt. Danach hast du genug Erfahrung, um teurere
Produkte vernünftig zu wählen.
Egon N. schrieb:> Würde einfach mal 1-2 von diesen ESP32 Boards kaufen und die dann erst> mal mit der Arduino IDE benutzen, dafür gibt es viele fertige Libs und> die Einrichtung geht leicht von Hand.
Ich dachte er will gerade nicht die Arduino Bibliotheken verwenden ;)
Aber ja die Anzahl der Systeme ist hoch, ich würde vorerst bei 2
bleiben, zum Beispiel AVR + ESP (im AT Mode) und wenn ich mich mit STM32
beschäftigen möchte würde ich mir für den Anfang halt ein Nucleo oder
Discovery Board holen, dann hast du schon mal ein komplettes Board mit
Programmer und Debugger und die kleineren (F0/F1) kosten ja auch nicht
die Welt.
alles andere als ein 3€-arduino-m328-board und ein 5€-usb/isp-Programmer
ist oversized.
Dazu winAVR als komfortable Programmierumgebung mit unschlagbarer
Performance.
Tja ich verstehe auch nicht, was man immer mit RS232 + USB + BT + WiFi +
LED + 7-Seg-LED + Char-LCD + 5V + 3.3V etc. auf einem Board will. Am
Ende muß man ohnehin Module verbinden können, die man braucht.
> Wieso so viele verschiedene Systeme? Das verwirrt doch nur.
ATtiny13 und Arduino Nano, weil er AVR lernen möchte. So hat er einen
kleinen und einen mittleren.
Das Blue-Pill Board, weil es nach oben hin die nächste Wahl in dieser
Preisklasse ist und wie gesagt die Programmierung in C ähnlich ist.
Das ESP-Modul, ebenfalls weil es billig ist WLAN kann.
Aber klar, man kann auch eins nach dem anderen Kaufen. Ich hatte
allerdings den Eindruck, dass der TO sich einen möglichst vollständigen
Baukasten schon jetzt zulegen möchte.
Peter King schrieb:> Welche ATmega und ATtiny Modell sind denn aktuell? Ich finde das nicht> heraus.
Aktuell (im Sinne von lieferbar) sind sehr viele AVR8. Technisch aktuell
ist eine deutlich kleinere, aber immer noch recht große Zahl. Es gibt
allerdings durchaus einige technische Hinweise, aus denen man auf die
Aktualität schließen kann. Z.B.: PINx Register können toggeln, PCINT für
alle GPIO-Pins, UART ist SPI-Master-fähig, alle Timer haben mindestens
zwei OC-Kanäle, bei den kleineren auch noch: es gibt Pin-Remapping.
In Falle (weitgehend) abwärtskomptibler Nachfolger historischer AVR8
kann man sich auch oft an einem angehängten "A" orientieren, z.B.
Tiny2313A oder Mega8A. Wenn allerdings keine Abwärtskompatibilität
erforderlich ist, kann man statt dessen auch die noch besser
ausgestatteten Nachfolger wählen, also z.B. den Tiny4313 oder den
Mega88. Das ist etwas fließend.
Für den Einstieg würde ich einen Mega1284P empfehlen. Damit kann man
(außer USI) praktisch alle auf den modernen AVR8 verbreitetet
eingesetzte Peripherie programmieren und muss sich erstmal kaum um die
Knappheit irgendwelcher Resourcen sorgen. Das Ergebnis dann auf einen
kleineren AVR8 mit gerade ausreichenden Resourcen runterzubrechen ist
meist sehr einfach und erschöpft sich im Umbennen von ein paar Symbolen
(oder man macht's gleich richtig und zieht einen Kompatibilitäts-Layer
für dieses Zeug ein).
> Den von Dir genannten Nano und Cortex habe ich hier da. Aber das sind> Arduinos. Ich wollte was, was ich mit ISP oder JTAG programmieren kann.
Die AVR8-basierten Arduinos kannst du allesamt auch per ISP
programmieren, notfalls durch Abtrennen eventuell störender Teile der
auf den Boards eingebauten Peripheriebeschaltung.
Die ESP8266 und ESP32 habe ich schon programmiert und auch einige
nützliche Dinge damit umgesetzt, wie z.B. einen Briefkastensensor, etc.
Damit bin ich in die Mikrocontroller-Welt eingestiegen.
Ich bin ein Microsoft .NET programmierer mit C# und früher Visual C++
mit der MFC.
Angefangen habe ich im Alter von 14 Jahren, als ich auf einem C64 mit
Assembler seine parallele Schnittstelle programmierte, um damit per
Kabel Daten von einer C64 Datei auf 5 1/4" Diskette auf einen x86 PC
übertrug und ebenfalls in eine Datei auf Festplatte speicherte. Das
Programm auf dem PC habe ich mit Visual Basic 3 (glaube ich) und einem
Zusatzmodul, welches die Parallelschnittstelle des PCs ansprechen konnte
(denn VB3 konnte das nicht) programmiert. Das war mein allererstes
Projekt was Programmierung anbelangt.
Aber die fressen mir zu viel Strom. Das ist schlecht bei
Batterieversorgung. Da hat mir mal vor ca. 1 Jahr einer hier im Forum zu
den Atmel AVRs geraten, weil manche von denen wirklich extrem wenig
Strom verbrauchen. Daran ein ESP8266 angehangen und nur aufgeweckt, um
eine Meldung übers WLan abzusetzen, ist wohl die Stromsparendere
Methode.
Der Atmel läuft ständig und verbraucht kaum Strom oder reagiert nur auf
einen Interrupt.
Der ESP8266 wird nur selten aus dem Tiefschlaf geweckt, wenn er eine
Meldung über das Funklan versenden soll.
Daher mein Gang zu Atmel.
Die Cortex sind auch interessant. Aber sie werden vermutlich deutlich
mehr Strom verbrauchen als ein ESP8266 oder ESP32. Und die Espressif
Chips sind für meine Anwendungen schon zu stromfressend.
Das ist das Problem.
Ob Microchip die Atmel AVRs begraben will? Ich weiß nicht. Sind die
Atmel AVRs nicht zu sehr verbreitet, um sie zu beerdigen? Außerdem hat
Microchip doch einige Evaluation Boards rausgebracht, um Neulingen den
Umgang mit den Atmal AVRs beizubringen. Wozu neue User für die Atmel
Dinger gewinnen, wenn man sie in Wirklichkeit beerdigen will? Das passt
doch nicht zusammen. Ist aber nur meine Denke. Vielelicht irre ich mich
da.
> ... Daher mein Gang zu Atmel.
Dann bist du ja schon längst kein Anfänger mehr. Was willst du dann mit
dem STK500?
> Die Cortex sind auch interessant. Aber sie werden vermutlich deutlich> mehr Strom verbrauchen als ein ESP8266 oder ESP32.
Nee, eher weniger. Bei 8Mhz ist ihre Stromaufnahme sogar ungefähr auf
gleichem Niveau, wie die AVR's. Allerdings ist die Ruhestromaufnahme der
STM32F1 Serie höher als bei AVR. Für Langzeit-Betrieb eignen sich die
STM32L Serien besser. Und natürlich sind STM32 nocht der Weisheit
letzter Schluss, es gibt noch viele andere Cortex M Controller.
Für einen LED Blinker würde ich jedenfalls einen AVR vorziehen. Für
einen Staubsauger-Roboter würde ich zu einem STM32 greifen.
Ein STK500 wollte ich nie. Das hat mir hier Jemand im Thread
vorgeschlagen.
Wie gesagt, ich hatte Mikrocontrollermäßig nur mit den ESPs zu tun,
sonst mit nichts.
Daher der Gedanke, ein Dev-Board für einen Atmel AVR wäre nicht
schlecht, wenn ich nun damit anfange.
Stefan U. schrieb:> Das Debuggen wird meiner Meinung nach von vielen Leuten überbewertet.> Zum Einen haben es die Menschen mehrere Jahrzehnte geschafft,> Mikrocontroller ohne Debugger zu programmieren.
Ist das so?
Selbst auf einem 6502 habe ich den Einzelschrittbetrieb schon geschätzt.
Und zu sehen, was so im Status-Register steht, war auch recht erhellend.
> Viele Anwendungen kann man nicht einfach so anhalten um nachzuschauen,> was die CPU gerade macht. Die Waschmaschine würde überlaufen, das> Modellauto gegen die Wand krachen, die LED-Matrix durchbrennen, die> Netzwerk-Kommunikation abbrechen. Da muss man dann auch noch die> Hardware anpassen/simulieren, um überhaupt debuggen zu können. Und dann> kommt noch dazu, dass der Debugger das Timing Verhalten ganz erheblich> ändert, so dass die ganze Schaltung versagt.
Wir haben das Jahr 2018 (neudeutsch: zwei achtzehn) und da muß ein
laufendes System nicht mehr angehalten werden, um interne Daten
auszulesen ...
Stefan U. schrieb:> die wegen ihrem niedrigen Preis> attraktiv sind.>> Alle größeren AVR's interessieren
Als sich vielpreisender Buchautor solltest Du Dich mal um den Genitiv
und den Plural kümmern.
Peter King schrieb:> Ich bin ein Microsoft .NET programmierer mit C# und früher Visual C++> mit der MFC.>> Angefangen habe ich im Alter von 14 Jahren, als ich auf einem C64 mit
Wenn Dir die Bits und Bytes schon vertraut sind und die Programmierung
aktueller Sprachen bekannt ist, würde ich Dir vorschlagen, die AVRs zu
überspringen und die Cortex-M3/M4 anzutesten.
Da gibt es einfache Entwicklungsboards im Preisrahmen < 20 € (zum
Beispiel STM Nucleo), die Programmier- und Debuggerschnittstelle mit auf
dem Board haben. 'Verfusselt' werden kann da garnichts.
IDEs für die Entwicklung gibt es von vielen Anbietern, ganz nach Deinem
Geschmack. Selbst, wenn Du mal auf AVR wechseln möchtest, diese
"Investition" wirst Du Deinem Alter nach zukünftig brauchen und nicht
bereuen, egal, was Du auch immer machen möchtest.
m.n. schrieb:> Wenn Dir die Bits und Bytes schon vertraut sind und die Programmierung> aktueller Sprachen bekannt ist, würde ich Dir vorschlagen, die AVRs zu> überspringen und die Cortex-M3/M4 anzutesten.
Ich benötige die AVRs genau so, wie ich später auch die Cortex benötigen
werde.
Einen simplen Briefkastensensor zu realisieren, macht ur mit einem
ATtiny Sinn. Einen Cortex zu nehmen, wäre totaler overkill.
Die ARMs werde ich aber sicher noch mitnehmen.
Mir stellt sich eher dir Frage, worauf ich eine Steuerung für ein
Meerwasseraquarium realisieren soll. Das soll ein Touch-TFT Interface
haben, Webserver, Sensoren, sowie Relays, etc. Das schreit irgenwie
schon fast nach einem SOC.
Peter King schrieb:> Einen simplen Briefkastensensor zu realisieren, macht ur mit einem> ATtiny Sinn.
Da reicht doch schon ein Schalter oder eine Lichtschranke.
> Einen Cortex zu nehmen, wäre totaler overkill.
Um welche Produktionsstückzahlen geht es denn?
Ich will Dir den AVR nicht ausreden, nur einfache und komfortable
Entwicklungsumgebungen suchst Du für ATtinys wohl vergeblich.
Nutze doch den Vorteil, daß Du schon programmieren kannst. Normalerweise
haben Anfänger mehrere Baustellen: die Hardware, die Software und den µC
im Speziellen. Meiner Einschätzung nach kannst Du Dich gleich auf den µC
konzentrieren, da die Fehlerquellen bei Hard- und Software bei Dir
geringer sein sollten.
Peter King schrieb:> Mir stellt sich eher dir Frage, worauf ich eine Steuerung für ein> Meerwasseraquarium realisieren soll. Das soll ein Touch-TFT Interface> haben, Webserver, Sensoren, sowie Relays, etc.
Damit wäre das Thema AVR doch schon gestorben.
Peter King schrieb:> Aber die fressen mir zu viel Strom. Das ist schlecht bei> Batterieversorgung. Da hat mir mal vor ca. 1 Jahr einer hier im Forum zu> den Atmel AVRs geraten, weil manche von denen wirklich extrem wenig> Strom verbrauchen. Daran ein ESP8266 angehangen und nur aufgeweckt, um> eine Meldung übers WLan abzusetzen, ist wohl die Stromsparendere> Methode.>> Der Atmel läuft ständig und verbraucht kaum Strom oder reagiert nur auf> einen Interrupt.>> Der ESP8266 wird nur selten aus dem Tiefschlaf geweckt, wenn er eine> Meldung über das Funklan versenden soll.
Das war wohl ein AVR Jünger.
Der ESP8266 beherrscht den Deep Sleep (ESP32 kann hier noch wesentlich
mehr), dabei verbraucht er nur wenige µA, er lässt sich dabei einfach
mittels Interrupt wecken. Sprich der AVR ist vollkommen überflüssig und
verbraucht nur unnötig Strom, macht zudem das Arbeiten komplizierter
(man hat 2 verschiedene Umgebungen, die Softwareentwicklung muss auf
beiden passend erfolgen, das ist immer nervig).
Was den Deep Sleep oft ruiniert: irgendwelche USB<->UART Brücken, die
kann man jedoch auftrennen, dann ist neben der obligatorischen LED auch
noch der Linearregler ein Problem, oft wird hier leider einer mit einem
hohen Querstrom verbaut, aber auch den kann man ersetzen.
Bei dem Kenntnisstand würde ich zu einer Cortex-M Toolchain basierend
dauf Eclipse greifen (kp ob sich da etwas mit Visual Studio finden
würde), denn als Entwickler bist du sicherlich schon in den Genuss eines
guten Debuggers usw. gekommen, das möchte man auf dem µC eigentlich
nicht missen.
Nachdem dir der Energieverbrauch anscheinend relativ wichtig ist würde
ich dir persönlich zu einem Gecko Board von Silicon Labs raten, hier
bekommst du neben einem (eingeschränkten, glaub maximal 5-6
Hardwarebreakpoints, in der Realität kommt man damit aber eigentlich in
den meisten Fällen aus, es ist sogar ein Pfostenstecker auf dem Board,
sprich entsprechende Flachbandleitung ran und du kannst ihn wie einen
j-Link nutzen) Segger j-Link auch gleich einen Profiler für den
Energieverbrauch in der bereits fertig eingerichteten Toolchain vom
Hersteller (ist ein angepasstes Eclipse).
Wenn ich es richtig in Erinnerung hatte konnte man damit sogar Code
neben gemessenem Stromverbrauch darstellen was doch recht sehr schick
ist. So ein grober Power Analyzer ist immer ein nettes Werkzeug...
Kleine Korrektur:
> Der ESP8266 beherrscht den Deep Sleep ...> er lässt sich dabei einfach mittels Interrupt wecken.
Er lässt sich nur mittels Reset wecken. Wenn man ihn per Interrupt
weckt, hängt er sich auf (ich halte das für einen Designfehler,
allerdings steht das mit dem Reset auch in der Doku des Herstellers).
Peter King schrieb:> Einen simplen Briefkastensensor zu realisieren, macht ur mit einem> ATtiny Sinn. Einen Cortex zu nehmen, wäre totaler overkill.
Nein, absolut nicht. Das Schöne an den Cortex-M Familien ist das die
eine sehr grosse Bandbreite haben, von den kleinen M0 bis zu fetten M7.
Mit einem M0 (LPC812) habe ich auch Funkmodule mit RFM69 (868MHz)
gebaut. Ein Temperatur/Feuchtigkeitssensor braucht da in Ruhe 1,2 µA,
beim Senden für ein paar ms ca. 45 mA, deutlich weniger als ein ESP.
Davon geht 1 µA für den Timer zum selber wecken drauf, für einen
Briefkastensensor kann man einen mechanischen oder magnetischen Kontakt
nehmen und man braucht nur noch ca. 0,3 µA in Ruhe.
Das geht natürlich auch mit einem Tiny, aber zum Einarbeiten in die neue
Welt fängt besser mit kleinen Projekten an und kann dann alles bis zu
den grossen M4/7 alles nutzen.
Peter King schrieb:> Mir stellt sich eher dir Frage, worauf ich eine Steuerung für ein> Meerwasseraquarium realisieren soll. Das soll ein Touch-TFT Interface> haben, Webserver, Sensoren, sowie Relays, etc. Das schreit irgenwie> schon fast nach einem SOC.
Da hatte ich mal drüber nachgedacht, das Becken aber jetzt doch
stillgelegt. Wenn du noch ein 5000 Liter Becken gebrauchen kannst, ich
hätte da was...
Für eine Steuerung mit kleinen abgesetzten Sensoren oder Steuerteilen
ist ein Raspberry oder kleiner Server vielleicht bequemer was grafische
Oberfläche und Datenlogging angeht. Die Cortex-M4 haben hierfür aber
auch schon genug Resourcen, mein Favorit ist hier z.Zt. das Acelex Board
STM32F407VET6 + passendes TFT Modul, diese Kombi gibts bei Ali für ca.
20 €. Das Board hat genug Speicher und EAs für eine komfortable
Steuerung.
https://de.aliexpress.com/store/product/Free-shipping-STM32F407VET6-development-board-Cortex-M4-STM32-minimum-system-learning-board-ARM-core-board/1817254_32618222721.html
Stefan U. schrieb:> Kleine Korrektur:>> Der ESP8266 beherrscht den Deep Sleep ...>> er lässt sich dabei einfach mittels Interrupt wecken.>> Er lässt sich nur mittels Reset wecken. Wenn man ihn per Interrupt> weckt, hängt er sich auf (ich halte das für einen Designfehler,> allerdings steht das mit dem Reset auch in der Doku des Herstellers).
Ja, das hat micht auch immer irritiert.
Ist es beim ESP32 wenigstens richtig gemacht, so dass das wecken per IRQ
geht?
Das habe ich bisher nicht getestet.
Johannes S. schrieb:> Nein, absolut nicht. Das Schöne an den Cortex-M Familien ist das die> eine sehr grosse Bandbreite haben, von den kleinen M0 bis zu fetten M7.> Mit einem M0 (LPC812) habe ich auch Funkmodule mit RFM69 (868MHz)> gebaut. Ein Temperatur/Feuchtigkeitssensor braucht da in Ruhe 1,2 µA,> beim Senden für ein paar ms ca. 45 mA, deutlich weniger als ein ESP.
Ich mache solche Sachen immer über Wlan. 868 MHz hat für mich das
Problem, dass ich keine Rückmeldung bekomme, ob das Signal beim
Empfänger angekommen ist. Gibt es dafür überhaupt eine Lösung? Ich kenne
keine, ausser über WLan zu übermitteln.
Welches WLan-Modul würdest Du nehmen, um mit einem Cortex per WLan zu
kommunizieren?
Wäre die Kombi: Wlan-Modul + Cortex dann stromsparender, als ein ATmega
/ ATtiny + Wlan-Modul?
Johannes S. schrieb:> Wenn du noch ein 5000 Liter Becken gebrauchen kannst, ich> hätte da was...
Ich hatte mal ein 3000 Liter, aber dank Energiewende wurde es auf 1000
Liter reduziert. Wenn der Strom irgendwann 1 EUR pro kWh kostet, gebe
ich das Hobby auf :-((
naja, 2€ ist jetzt nicht wirklich teuer. Die 868 MHz haben eine bessere
Reichweite und gerade die billigen nRF24 (die nicht immer von Nordic
kommen) haben da keinen guten Ruf. Mit den RFM69 habe ich jedenfalls für
die Sensoren gute Erfahrungen gemacht.
Die Rückmeldung muss man per Software machen, ich benutze eine
(modifizierte) LowPower Labs Version, die hat das Senden mit Retry und
ACK auch implementiert, damit ist das einfach. Beim Temperatursensor
verzichte ich darauf, da ist es egal wenn mal ein Wert nicht ankommt.
Wenn der Strom aus der Steckdose kommt ist ein ESP sicher standalone
ausreichend, der hat ja selber genug Rechenpower und IOs. Oder wenn
grössere Datenmengen übertragen werden sollen, in der c't war zB ein
ePaper Display mit ESP32 Ansteuerung, das werde ich auch mal nachbauen.
Peter King schrieb:> Wenn der Strom irgendwann 1 EUR pro kWh kostet,
ja, die Stromkosten, das Salz und 800L Wasser pro Wechsel waren hier
auch der Grund den Stecker zu ziehen.
Peter King schrieb:> Beide Frequenzbereiche dürften doch in DE erlaubt sein.
Bessere Reichweite und man hat auch mal die Chance senden zu dürfen.
In meiner Stadtwohnung ist das WLAN im 2,4GHz Band unbrauchbar nachdem
jeder Kasper seinen Router auf 100% in der 30-80m² Wohnung stellt obwohl
5-10% der maximal möglichen Sendeleistung ausreichen würden. Dann kommen
ein paar Kasper noch auf die Idee von der Standardbelegung von 1,6,11
abzuweichen was dazu führt dass die Kollisionserkennung Probleme
bekommt. Und irgendwelche Kasper machen hier das Band mit Störsendern
auch noch dicht, hab hier teils Probleme mit der Funktastatur, teils
eine Reichweite unter einem Meter, manchmal kommt nichts durch, selbige
Tastatur läuft in einer anderen Wohnung problemlos bei gut 10m
Entfernung...
Ich sollte da echt mal die Bundesnetzagentur verständigen, die sind erst
letztens in der Parallelstraße rum gekurvt, hätte ich gleich mal fragen
sollen ob die sich das mal grob anschauen könnten.
Zudem braucht WLAN relativ lang für einen Handshake, das kann z.B. bei
einem Briefkastenmelder zu lang dauern, bis dahin ist die Metallklappe
vorne wieder zu und es ist Essig mit Benachrichtigung.
Die RFM69 bieten zudem einen Rückkanal.
Egon N. schrieb:> das kann z.B. bei> einem Briefkastenmelder zu lang dauern, bis dahin ist die Metallklappe> vorne wieder zu
warum das? Der µC müsste beim Posteinwurf und -abholen geweckt werden.
Über einen Mikroschalter an der Tür kann ich unterscheiden ob Post
eingeworfen oder abgeholt wurde. Das löst jeweils nur das Senden der
Message 'Post ist da' oder 'Post wurde abgeholt' aus und macht beim
Empfänger die Lampe an oder aus.
Der einzige 'Nachteil' ist das man noch einen Empfänger braucht, fürs
WLAN hat man ja seinen Router. Ich habe so einen Empfänger auf einem
Raspberry, das ist eine einfache passive Adpaterplatine mit dem RFM69
und der Pi bedient das RFM, das funktioniert wunderbar. Die Messages
werden dann in einen MQTT Broker geschoben, damit kombiniere ich meine
RFM und ESP Nodes.
Johannes S. schrieb:> warum das? Der µC müsste beim Posteinwurf und -abholen geweckt werden.> Über einen Mikroschalter an der Tür kann ich unterscheiden ob Post> eingeworfen oder abgeholt wurde. Das löst jeweils nur das Senden der> Message 'Post ist da' oder 'Post wurde abgeholt' aus und macht beim> Empfänger die Lampe an oder aus.
Der Briefkasten besteht hier vollständig aus Metall.
Wenn der Schlitz zuh ist, dann ist da nichts mehr los mit RF.
Johannes S. schrieb:> und ein 8 cm langes Schwänzchen unten rausgucken lassen? Oder ist der in> einem grossen MFH?
Du scheinst auf SEK Hausbesuche zu stehen.
Jeder Trottel denkt inzwischen dass ein Kabel sofort Bombe bedeutet...
Johannes S. schrieb:> ct 02/2018, https://github.com/jamct/DoorsignEPD
Danke.
Solche E-Ink Displays habe ich oft auf Aliexpress gesehen. Aber allesamt
mit Folienflachkabel.
Wüsste auch nicht, welches nehmen.
Mit den TFT Displays mit und ohne Touch und ihren Treiberchips sowie der
Programmierung kenne ich mich aus. Aber für die E-Ink Displays fehlt mir
noch eine Übersicht über die Treiberchips und Anschlußmöglichkeiten.
Vielleicht hilft der Artikel etwas. Muss die CT noch raussuchen.
Stefan U. schrieb:> Sicher nicht, läuft ungefähr aufs Gleiche hinaus.
Dann ist dem ATtiny oder kleinem ATmega vorzug zu geben, weil man keinen
Quadratischen Cortext in SMD Technik auflöten muss. Ich kann so ein Teil
nicht sauber auflöten.
Stefan, oben schrieb Jemand, dass Du Bücher schreibst?
Kannst Du mir sagen welche? Ich finde, Du kannst ziemlich gut erklären.
> Mir ist aufgefallen, dass bei dem USBASP USBIPS Programmer> der ATmega328 nicht mit aufgelistet ist
Das ist ja komisch. Fakt ist aber, dass USBASP Programmer überhaupt
keine bestimmten Controller unterstütze, sondern das ISP Protokoll
generisch. Die Controller spezifischen Unterschiede werden von der
Software (avrdude) geregelt.
Ich kann Dir aus eigener Erfahrung bestätigen, dass USBASP basierte ISP
Programmieradapter den ATmega328, ATmega328P und ATmega328PB
unterstützen. Das ist sicher nur ein Dokumentationsfehler.
Bei Aliexpress ist es auch üblich, dass die Händler alle voneinander
kopieren - auch die Fehler. Sie stellen auch jahrelang Boards mit den
selben Fehlern her, obwohl sie längst gemeldet wurden.
Ich kenne deine Anforderungen nicht, was hast du denn mit dem Board vor?
Programmieren lernen oder was konkreten bauen?
Für mich ist es immer ein Graus, wenn gefühlt hunderte Kabel alle auf
einen Punkt zusammen laufen. Ich benutze liebe mehrere kleine
Mikrocontroller oder verkettete Schieberegister, wenn ich viel I/O Pin
brauche. Das ergibt eine wesentlich übersichtliche Verkabelung.
Für viele Anwendungen wird das Board zu groß sein. Die Ethernet
Schnittstelle wird Dir nicht viel nützen, wenn du keine passende
Software hast. Suche erst einmal danach, denn ich garantiere Dir, dass
du nicht selbst deinen eigenen Ethernet Treiber samt TCP/IP Stack
programmieren wirst.
Für Sachen mit Netzwerk ist der ESP8266 oder ein Raspberry Pi 100x
einfacher, eben weil da die Software fix und fertig verfügbar ist.
Stefan U. schrieb:> Ich kenne deine Anforderungen nicht, was hast du denn mit dem Board vor?> Programmieren lernen oder was konkreten bauen?
Ich wollte mich damit einarbeiten, benötige den Zugriff über Ethernet
und auf den CAN-Bus. Beides soll das Board können.
Erst Mal wollte ich damit entwickeln. Wenn ich die Entwicklung fertig
habe, kommt wie immer eine geätzte Platine und darauf der µC mit einer
Ethernet und CAN Schnittstelle, zusätzlich ein Touch Display, und ggf.
paar Taster und LEDs.
Wenn ich was entwickele, nehme ich immer ein Dev-Board, schließe das
dran an, was ich brauche. Programmiere die Software drauf und dann wird
das Ganze auf einer extra dafür geätzten Platine realisiert und kommt in
ein Gehäuse.
Das habe ich mit dem ESP8266 und ESP32 auch immer so gemacht. Ein
fertiges Projekt hatte den ESP über ein Adapterboard aufgelötet und die
Teile, die sonst gebraucht wurden. Ich habe niemals die ESP
Developmentboards in fertige Geräte eingebaut.
Der STM32F107 hat doch die Ethernet Schnittstelle, sowie die CAN
Schnittstelle integriert. Müsste es vom Hersteller des Mikrocontrollers
nicht eine Ethernet Library geben? Genauso eine für den CAN?
Ich habe es über Deine Webseite http://stefanfrings.de/stm32/index.html
rausgefunden, dass der STM32F105 und der STM32F107 Ethernet und CAN
können. Darum habe ich sie gewählt.
Es gibt ein noch kleineres Dev Board mit dem STM32F107, nämlich dieses
hier:
https://www.aliexpress.com/item/Core107V-STM32F107VCT6-STM32F107-STM32-ARM-Cortex-M3-Evaluation-Development-Core-Board-with-Full-IO-Expanders/633110010.html?spm=a2g0s.8937460.0.0.wcQz67
Ich konnte aber bisher nicht sehen, ob auf dem kleinen Board das
Ethernet und CAN rausgeführt sind.
Ist meine Denkweise falsch, den STM32F107 zu nehmen, wenn ich Ethernet
und CAN möchte?
Ich ging fest davon aus, dass wenn ein Chip mit diesen Schnittstellen
schon gebaut wird und diese Schnittstellen rausgeführt werden, vom
Hersteller entsprechende Libraries veröffentlicht werden müssten, um auf
Ethernet und CAN zuzugreifen.
Oder ist das nicht so?
Ich denke, dass du das Board zum üben verwenden kannst. Aber suche wie
gesagt vor dem Kauf zuerst nach Software. Davon ausgehen, dass der
Hersteller Software bereit stellt ist in Asien keine gute Idee. Dort
bekommst du meistens nicht einmal einen Schalplan!
Bei den CAN Schnittstellen würde prüfen, ob die CAN Treiber mit auf dem
Board drauf sind.
Die Software von ST (Cube Hal) läuft in erster Linie nur auf Boards von
ST. Die Kompatibilität mit anderen Board ist dort keinesfalls
selbstverständlich.
Was mich jetzt überrascht ist, dass wir auf einmal wieder bei STM32
sind, Ich dachte du wolltest dich auf AVR Spezialisieren.
Schau Dir mal an, was ST selbst an Entwicklungs-Boards anbietet. Die
haben allgemein einen guten Ruf und dafür bekommst du ganz sicher
Software und technische Unterlagen. Sie sind auch ziemlich preisgünstig.
Zum Beispiel:
http://www.st.com/en/evaluation-tools/nucleo-f429zi.html
Peter King schrieb:> Danke, das habe ich mir gedacht.>> Was hälst Du von dem Dev-Board für später?>> Hat sogar Ethernet dabei. Für mich sehr wichtig.>> https://www.aliexpress.com/item/Open107V-Standard-...
Nimm lieber ein Nucleo von ST. Dieses hier hat auch Ethernet, einen
deutlich performanteren Prozessor, dazu die modernere Peripherie (TCM,
Dual mode Quad-SPI, DMA-Controller z.B.).
Peter King schrieb:> vom> Hersteller entsprechende Libraries veröffentlicht werden müssten, um auf> Ethernet und CAN zuzugreifen.>> Oder ist das nicht so?
Müssen? Das kann jeder Hersteller machen wie er lustig ist. "Müssen" tut
er gar nichts.
Es gibt zum Beispiel Hersteller die werfen komplette SoCs im
Raspberry-Format auf den Markt ohne einen einzigen Treiber oder auch nur
Dokumentation zu liefern und warten darauf daß die Community in
mühevoller Kleinarbeit und Reverse-Engineering nach nem halben Jahr
endlich wenigstens die Hälfte der blumigen Werbeversprechen von z.B. 4k
Video Wirklichkeit werden lässt und die ansonsten leblose Hardware in
ein halbwegs nützliches Etwas verwandelt, also das was eigentlich der
Hersteller hätte mitliefern "müssen". Aber müssen tut der gar nichts
außer ausreichend Hardware verkaufen damit es sich lohnt und scheinbar
lohnt es sich auch so.
Ahja, Bingo, steht auch gleich oben im Feedback, ein PROGISP. Laß dir am
besten noch von irgendwo einen richtigen USBASP hinterherschicken. Kann
man beide gebrauchen. Der treiberlose HID Programmer hat auch seine
Vorteile.
batman schrieb:> Ich würde auch nicht allzuviel darauf wetten, daß das ein (Fischl)> USBASP ist. Den halbchinesischen Wortsalat findet man eher bei den> China-Versionen, das ist eine proprietäre HID-Firmware
Ich hab auch schon mal nen echten Fischl-(kompatiblen) beim Chinamann
bekommen. Da war tatsächlich eine steinalte oder modifizierte
Fischl-Firmware drauf (avrdude hat im Prinzip funktioniert aber
angemeckert daß er den Takt nicht einstellen kann), hab dann kurzerhand
die echte Fischl-Firmware draufgeflasht und er funktionierte tadellos.
Ich glaube ich hebe in dem Fall einen Denkfehler oder wir reden
aneinander vorbei:
Ich ging davon aus, dass im STM32F107 das Ethernet und CAN als
Schnittstelle im Controller integriert sind. Ist das richtig?
Folglich ging ich davon aus, dass der Hersteller des Chips STM32F107,
der ja ST ist, wie das ein guter Hersteller von µCs so macht, für seinen
Chip auch Libs für die auf dem Chip von ihm bereitgestellten
Schnittstellen anbietet. Oder macht er das nicht?
Einen µC mit integrierten Schnittstellen ohne Libs auf den Markt zu
schmeißen wäre doch Irrsinn. Wer soll die denn entwickeln, wenn man
nicht mal weiß wie die Schnittstellen in den µC intern integriert und
realisiert sind?
Die Chinesen nehmen doch nur den µC und Löten ihn auf eine Platine
drauf, machen evtl. paar Taster und LEDs dazu und nennen das Ganze:
"Dev-Board". Manchmal führen sie nur die Anschlüsse des µC auf
Stiftleisten heraus und sorgen lediglich für eine Versorgungsspannung
des µC auf dem Board und legen die Programmierschnittstelle in einen
Stecker bereit.
Was sollen die Chinesen da für Software bereitsstellen? Das verstehe ich
nicht. Die wollen vermutlich mit den Boards nur Geld machen.
Programmieren werden die dafür nix.
Wie soll das funktionieren, wenn ich mit einem solchen STM32 einen
Ethernet und CAN Anschluß realisieren soll? Ich werde doch wohl nicht
die Schnittstellen von Grund auf selbst programmieren müssen, mit
funktionierendem Timing, Handshakes, etc.???
Verstehe ich da irgendwas falsch?
@Stefan:
Ich habe festgestellt, dass für die meisten meiner Aufgaben ein Atmel
AVR reichen müsste. Aber die STM32 haben mein Interesse geweckt, wegen
den größeren Möglichkeiten, die sie bieten. Daher möchte ich mich erst
mal mit den AVRs und dann mit den STMs auseinandersetzen.
Im STM32 ist nur der MAC drin, der PHY ist als externer Chip auf dem
Board. Zu dem muss die Software auch passen.
Du gehst einfach davon aus, dass die Software von ST zu den weitgehend
undokumentierten Boards aus Asien kompatibel ist. Das kann auch schief
gehen. Bedenke, dass auf diesen Boards weit mehr drauf ist, als nur der
nackte Mikrocontroller.
Abgesehen davon: Deine Annahme, dass Chip Hersteller passende Software
bereit stellen ist nicht richtig. Meistens ist das nicht der Fall. Die
meisten Chip Hersteller stellen wirklich nur Chips her.
ST bietet in dieser Hinsicht außergewöhnlich viele Programmierbeispiele
und außergewöhnlich preisgünstig an. Allerdings hat die Software von ST
einen gemischten Ruf, falls ich das mal vorsichtig formulieren darf.
Aber das wirst noch früh genug selbst merken, wenn du sie benutzt.
Für AVR kann ich Dir noch zwei Dinge empfehlen:
Das CrumbX1 Board, mit einem AVR Xmega Controller und einem Silabs
CP2201 Ethernet Controller. Die Firmware dazu kommt von Adam Dunkels und
von mir.
Achtung: Für AVR Xmega Controller brauchst du einen Programmieradapter,
der das PDI Protokoll (statt ISP) unterstützt.
Und dann gibt es da noch die Ethernet Module von Wiznet, die den TCP/IP
Stack bereits enthalten und seriell mit dem AVR oder STM32 verbunden
werden. Also ganz grob betrachtet ähnlich den ESP8266 Modulen, aber mit
Kabel. Da hast du für rund 10 Euro schon mindestens 90% der
Software-Komplexität ausgelagert und fertig.
Ein ist jedenfalls sicher: Netzwerkprogrammierung ist auch mit diesen
Hilfen auf µC um ein vielfaches Aufwändiger, als auf einem Raspberry Pi.
Wenn es um mehr geht, als ein paar I/O Pin ein/aus zu schalten, würde
ich eher einen Raspberry Pi (oder ähnlich) verwenden und den ggf. durch
einen kleinen Mikrocontroller erweitern (z.B um PWM oder andere
zeitkritische Signale zu erzeugen).
Es ist schon ein himmelweiter Unterschied, ob man ein bewährtes
Betriebssystem mit gängigen Netzwerk-Tools verwendet, oder einen mehr
oder weniger nackten Mikrocontroller.
> Das ist natürlich dann megamäßiger Mist - zumindest mit meinen> Augen aus der Bequemen x86 Welt betrachtet
Nun ja, auch Intel ist nicht gerade als talentierte Softwareschmiede
bekannt. Wenn ich einen neuen Computer kaufe, lösche ich als erstes
immer alle Programme von Intel, damit sie stabil laufen.
Es freut mich zu sehen, dass du nun die Komplexität der Ethernet
Schnittstelle erkannt hast.
> Könnte ich Dich darum bitten, mir bei den Positionen meiner Bestellung> um Hilfe bei der Entscheidung zu bitten, was bestellt werden sollte und> worauf ich verzichten sollte?
Du musst dich selbst entscheiden. Nur du kennst alle deine
Anforderungen. Denn geschrieben hast du hier ja nur sehr wenige.
generell kann man diese billigen Produkte von Aliexpress nur
schmerzfreien Leuten empfehlen. Denn die haben fast alle irgendwo einen
Mangel, das sind Restposten!
Ich nenne Dir mal die Mängel, die ich kenne:
Bei beiden ST-Link Adaptern fehlt der SWO Anschluss und der Reset
Ausgang funktioniert nur mit STM8. Trotzdem kann man ihn benutzen.
Bei dem ST-Link mit Alu Gehäuse fehlt häufig eine Isolation zwischen
Platine und Gehäuse. Wenn du dann das Gehäuse von Unten hoch drückst
bekommst du einen Kurzschluss.
Andererseits beschützt ein korrekt montiertes Gehäuse deinen Computer
davor, dass versehentlich ein Draht drauf fällt oder so. Achte mal auf
Sicherungen. Die Produkte von ST enthalten eine Polyfuse in der 5V
Leitung.
Das dritte Gerät würde ich nicht kaufen, denn es ist eindeutig ein
Plagiat. Viel Spaß beim Zoll, falls sie nachgucken.
Beim STM32F103C8T6 (Blue-Pill) Board muss man die Pins, die mit dem
Uhrenquarz verbunden sind entfernen, sonst schwingt dieser nicht
richtig. Der USB port funktioniert erst zusätzlich, wenn man den
falschen Pull-Up Widerstand an D+ korrigiert. Am SWD Anschluss fehlt der
Reset Pin. Trotzdem kann man das Board korrigieren und benutzen.
Die größeren Boards kenne ich nicht.
Glaube mir: Irgendwo ist bei den China Produkten immer ein Haken. Wenn
du geduldig bist, diese selbst zu finden und zu korrigieren, dann kaufe
sie. Ansonsten kaufen original Tools von ST. Die sind im Vergleich zu
anderen Chip-Herstellern auch besonders preisgünstig.
Stefan U. schrieb:> Glaube mir: Irgendwo ist bei den China Produkten immer ein Haken. Wenn> du geduldig bist, diese selbst zu finden und zu korrigieren, dann kaufe> sie. Ansonsten kaufen original Tools von ST. Die sind im Vergleich zu> anderen Chip-Herstellern auch besonders preisgünstig.
Amen!
Hole dir halt einen NUCLEO-F446RE kostet auch nicht wirklich mehr als
ein paar deiner China Boards, es hat einen ST-Link mit drauf und du
kannst es sogar beim Conrad kaufen, was will man mehr?
> oder mighty mini 1284p in groß
Der sieht auch gut aus. Scheint Abmessungen zu haben, die man auch noch
in Handarbeit bestücken kann, wenn es denn sein muss.
Peter King schrieb:> In DE würde ich das Nucleo Board ordern. Da das schnell geliefert wird,> könnte ich damit sofort anfangen.
Beim Vergleich Kosten:Nutzen kann man die kleineren Nucleo-Boards außer
Acht lassen. Mein Vorschlag wäre ein Nucleo-F411RE (100 MHz schnell,
viel RAM, viel freie IO-Leitungen), oder ein Nucleo-F446RE und/oder ein
'high-end' Nucleo-F746ZG (sehr schnell, sehr viel RAM, fix+fertiges
Ethernet auf dem Board).
Einen ST-Link braucht man bei beiden nicht zusätzlich.
> für die #7 gibt es ein TFT mit Touch> das direkt aufgesteckt werden kann
Gibt es für die Nucleo-64 Boards auch, und zwar kostengünstig aus dem
Arduino Umfeld.
> ein SD Karten Slot
Was bei vielen Display Modulen, die auf das Nucleo64 Board passen, auch
gleich mit dabei ist.
> Es gibt auch eine Version die noch besser geeignet ist
Wofür besser geeignet? Für deine Anwendung - Ok. Aber die Anforderungen
des TO sind ja immer noch unbekannt.
Das Wichtigste hast du aber ganz übersehen: Dein empfohlenes Board hat
einen Ethernet Anschluss. Das ist aber eins der wenigen Kriterien, die
der TO ausdrücklich genannt hat und mehrfach wiederholt hat.
Stefan U. schrieb:> Gibt es für die Nucleo-64 Boards auch, und zwar kostengünstig aus dem> Arduino Umfeld.
aber nicht so das sie direkt mit dem FSMC betrieben werden können. Die
Arduino Displays sind oft für das Mega2560 Board, die haben eine andere
Belegung und sind für 5V ausgelegt. Und die 'Shield' Versionen sind noch
schlechter mit den Bits die auf verschiedene Ports verteilt sind.
Wenn man für das Board fertige Libs sucht wird man bei STM32duino
fündig, wenn es sein muss kann man das in der Arduino Umgebung
programmieren. Oder die wie finde besser Alternative mbed, aber das ist
hier ja weniger bekannt/beliebt.
Stefan U. schrieb:> Wofür besser geeignet? Für deine Anwendung - Ok. Aber die Anforderungen> des TO sind ja immer noch unbekannt.
Als Beispiel hat er eine Steuerung fürs Aquarium genannt. Die wird man
auch in ein Gehäuse bauen wollen und da sind die Stecker in Display
Richtung suboptimal. Die Version kostet auch nicht mehr und wenn man den
Lötkolben richtig rum halten kann sollte es kein Problem sein die so
einzulöten wie man es haben möchte.
Stefan U. schrieb:> Dein empfohlenes Board hat> einen Ethernet Anschluss.
??? es hat (leider) keinen Ethernet Anschluss. Der µC hat den MAC aber
der PHY fehlt.
> Oder die wie finde besser Alternative mbed, aber das ist> hier ja weniger bekannt/beliebt.
Du scheinst dich damit auszukennen. Ich hatte mir vor ein paar Jahren
mal mbed angeschaut und mit gefiel der damalige Online-Zwang nicht. Kann
man damit mittlerweile ordentlich entwickeln, ohne seine Programme
hochladen zu müssen? Und darf man sie in kommerziellen Projekten
einsetzen?
Stefan U. schrieb:> Mein Nucleo Board hatte ich bei Amazon bestellt.> Und das für knapp unter 20 Euro.
Das weiß man doch gleich, was gemeint ist :-(
Ich versteh auch nicht, warum immer die Händler mit den miesesten
Arbeitsbedingungen genannt und Steuerhinterzieher bevorzugt werden.
Wenn ich die Nucleo-Boards empfehle, dann doch nicht, um gleich wieder
Arduino-Handschellen anzulegen.
Meiner Meinung nach sind viele frei verfügbare Leitungen angesagt.
>> Dein empfohlenes Board hat>> einen Ethernet Anschluss.> ???
Ganz Recht, da hat das "k" geklemmt. Dem TO war wohl auch ein Ethernet
Anschluss wichtig.
Da würde ich ich wie gesagt aber erst einmal nach brauchbarer Software
suchen. Wenn ich keine finde, dann vielleicht doch lieber einen ESP8266
oder ein Wiznet Modul dran hängen. Ist einfacher.
Stefan U. schrieb:> Ich hatte mir vor ein paar Jahren> mal mbed angeschaut und mit gefiel der damalige Online-Zwang nicht.
Ich beschäftige mich schon lange damit, mal mehr mal weniger.
Einen 'Online Zwang' gibt es aber schon ewig nicht mehr, die Quellen
sind schon seit vielen Jahren offen. Der Online Compiler + das einfache
flashen per USB Massenspeicher waren zwei Kernideen um das als System
Schülern einfach zugänglich zu machen ohne Compiler kaufen und
installieren zu müssen.
Heute wird das sehr in Richtung IoT weiterentwickelt, aber die Basis ist
ja einfach eine Lib die eine einheitliche API für die µC Hardware
bereitstellt.
In den letzten zwei Jahren hat ARM da richtig Gas gegeben und das
kräftig weiterentwickelt. Für die offline Nutzung installiert man das
mbed-cli, das enthält die gcc Toolchain und Kommandozeilentools um
Programme per git/Mercurial zu holen, zu kompilieren und zu flashen.
Weiterhin kann man die Programme in seine Lieblings IDE exportieren,
SW4STM32 ist zB auch dabei.
Mit 'besser' meine ich die ganze Softwarestruktur und die Organisierung.
Das API ist C++ und für alle Cortex-M gleich, die Tools sorgen beim
Buildvorgang dafür das die CPU spezifische Implemtierung dazugebaut wird
(da gibt es auch keinen Codegenerator wie manchmal fälschlich
geschrieben wird). Dieser ganze Softwarebrocken wird von ARM verwaltet.
Die betreiben exzessive Tests um das Ganze konsistent zu halten, die
Anzahl der unterstützen Kombinationen aus MCU Toolchains HostOS ist
riesig. Bei Arduino gibt es dagegeben den 'core' den verschiedene
Gruppen anbieten und eine zentrale Qualitätskontrolle gibt es daher
nicht. Vorteil ist hier natürlich das dies komplett verschiedene
Architekturen unterstützt, angefangen mit AVR 8 Bittern aber
mittlerweile läufts ja auch auf 32 Bittern, ESP und was weiss ich noch.
Allerdings müssen die 'Libs' dann auch zum core passen. mbed ist von ARM
und die haben genug damit zu tun ihre Flöhe zu hüten und da wird man
sicher keine ESP Unterstützung finden.
Sorry, so viel offtopic, aber schon mein Lieblingsthema :-)
Stefan U. schrieb:> Ganz Recht, da hat das "k" geklemmt. Dem TO war wohl auch ein Ethernet> Anschluss wichtig.
ok, in dem Fall sind die Nucleos oder andere, z.b. hier die mbed Liste
mit Filter=Ethernet, brauchbar:
https://os.mbed.com/platforms/?connectivity=2
Für viele gibt es in mbed auch Ethernet Unterstützung.
Johannes, du scheinst ja von mbed positiv beeindruckt zu sein.
Ich sehe es als Alternative zu Arduino. Bei Arduino merkt man allerdings
deutlich, dass dort der Fokus (noch) bei AVR liegt. Die Unterstützung
für ARM ist dort lückenhaft umgesetzt und längst nicht so einheitlich,
wie man das gerne hätte.
Von ST gibt es dann ja noch die Cube HAL von deren Nutzen ich aber gar
nicht überzeugt bin. Die vorhering Standard Peripheral Lib hatten sie
schon nach weniger als 10 Jahren abgekündigt und man sollte nicht
vergessen, dass Cube HAL nur auf STM32 läuft.
Da finde ich den offeneren Ansatz von Arduino und mbed doch besser.
Wenngleich ich beide nicht im professionellem Umfeld sehe, kann man
dennoch nicht ignorieren, dass Arduino (vielleicht auch mbed) vielen
Menschen Zugang zur Mikrocontroller-Welt eröffnet haben, die sonst einen
großen Bogen drumherum gemacht haben.
Kann man den ESP8266 mit mbed ähnlich einfach programmieren, wie mit
Arduino?
Stefan U. schrieb:> Kann man den ESP8266 mit mbed ähnlich einfach programmieren, wie mit> Arduino?
vergiss den ESP8266 und nimm gleich den ESP32, integriere den in die
Arduino IDE und du hast was du wünschst.
Ich habe es vor einem Monat gemacht, RTC und OLED laufen auf dem
Breadboard in der Arduino IDE wie am nano oder mighty mini1284p
> vergiss den ESP8266 und nimm gleich den ESP32
Damit tue ich mich schwer. Beim ESP8266 hat es mehrere Jahre gedauert,
bis die Firmware stabil lief. Jetzt, wo es gerade so weit ist und ich
meine Module (von denen ich reichlich Vorrat habe) ernsthaft einsetzen
kann, möchte ich nicht ins nächste ungewisse Land vorstoßen.
Eigentlich hatte ich sogar beschlossen, mir nie wieder andere Chips von
Espressif zu kaufen, nach der schlechten Erfahrung. Ich habe damit viele
hundert Stunden meiner wertvollen Lebenszeit vergeudet.
Aber wenigstens die 20 Module, die ich mir als Vorrat angelegt habe,
würde ich dann doch noch gerne sinnvoll einsetzen. Immerhin habe ich
eine AT Firmware und eine Arduino Version vorliegen, die beide endlich
sehr stabil laufen. Meine Testkandidaten sind beide seit 11 Monaten im
Dauerbetrieb ohne einen einzigen Ausfall bemerkt zu haben.
Stefan U. schrieb:> Johannes, du scheinst ja von mbed positiv beeindruckt zu sein.
ja, weil es mittlerweile richtig gut zu gebrauchen ist. Für erste Tests
ist der Online Compiler ok (da steckt der Keil Compiler hinter der sehr
gut optimiert), ich wollte die Quellen zum Debugger aber auch immer
lokal in meiner IDE haben. Das wurde da lange vernachlässigt aber
funktioniert mittlerweile recht gut.
Arduino funktioniert auch gut, aber die IDE ist mir zu spartanisch, da
wurde eben nur das Nötigste eingebaut um Einsteiger glücklich zu machen.
Es ist weiter verbreitet, aber bei den vielen Libs und Projekt-Blogs ist
auch viel Müll dabei. Aber wenn man etwas brauchbares gefunden hat lässt
es sich meist auch mit überschaubarem Aufwand nach mbed portieren.
Cube ist auch so ein Thema, da muss ich schon wieder soviel schreiben...
Das habe ich mir auch angesehen und finde einige Sachen darin schön,
z.B. die Darstellung der Clocks die ja sehr Umfangreich ausfallen kann.
Und das man eine schöne Dokumentation der verwendenten Resourcen
bekommt.
Nur den Workflow finde ich nicht gut (korrigiert mich wenn ich was
falsches schreibe, ich habe es schon länger nicht mehr gestartet). Cube
ist der Master des Projekts: ich starte z.B. mit einer Led an einem Pin,
konfiguriere den mit wenigen Klicks und bekomme ein Projektfile das für
meine IDE. Jezte möchte ich einen Pin belegen, dazu muss ich wieder Cube
würfeln lassen und mischt meinen Code mit den neuen Änderungen. Dazu
muss man aufpassen das man seinen Code nur dahin schreibt wo Cube nix
überschreibt, schön sieht so ein Quelltext nicht aus. Einen Port selber
zu initialisieren sollte man vermeiden, dann weiß der Würfel da nix von.
Cube muss immer schön der Master bleiben.
Mit meiner Classlib sieht das anders aus, ich lege die IO Objekte selber
an und die mbed Lib sorgt für die nötige Initialisierung. Wenn ich die
Led an einen anderen Port anschliesse ändere ich eben nur den Pinnamen,
bei Cube muss man wieder neu würfeln.
Aber da mbed für die STM Targets auch die HAL und LL verwendet kann ich
für die Hardwareteile die nicht in der mbed Basis sind Code von Cube
generieren lassen und diesen in mein mbed Programm übernehmen. Die HAL
Header sind vorhanden und ich kann die Vorteile des Codegenerators
nutzen. Der Code ist dann natürlich Targetabhängig, aber irgendwann
entscheide ich mich ja mit welcher Plattform ich ein Projekt realisieren
möchte.
Stefan U. schrieb:> Kann man den ESP8266 mit mbed ähnlich einfach programmieren, wie mit> Arduino?
nein, leider nicht weil mbed = ARM und da sind 'nur' die Cortex-M drin.
Im Prinzip könnte man das erweitern, aber im Detail ist das viel Arbeit.
Soweit reicht die Liebe dann doch nicht, mit der Arduino Umgebung habe
ich einen ESP8266 + SHT15 + MQTT auch schnell zusammengeklickt bekommen
und das Ding funkt auch seit Wochen brav die Klimawerte aus dem Keller.
Ich bin da kein Arduino 'Hater', komplexere Sachen mache ich eben lieber
selber in mbed. Habe aber auch einen 3D-Drucker mit Marlin Firmware
obwohl es das Smoothieboard mit mbed Basis gibt.
Johannes, du hast genau die Nachteile beschrieben, die mir bei Cube HAL
auch aufgefallen sind. Wo Cube einen völlig alleine lässt ist, wenn man
einen I/O Pin zur Laufzeit wechselweise für unterschiedliche Sachen
verwendet. Oder die Taktfrequenz zur Luftzeit ändern will.
Das geht schon irgendwie aber man merkt, dass es nicht wirklich
vorgesehen ist.
Werden die Nucleo Boards alle gleichmäßig von ST mit Libs versorgt oder
gibt es da auch vernachlässigte Kandidaten?
Hier im Thread wurden diese empfohlen:
NUCLEO-F446RE
Nucleo-F411RE
Nucleo-F103RB
Nucleo-F746ZG
Stefan U. schrieb:> Ich nenne Dir mal die Mängel, die ich kenne:> [...]
Das waren aber ganz schön viele Mängel...
Für einen Anfänger sicher katastrophal, wenn man erst dafür Sorge tragen
muss, dass die Hardware das tut, was sie soll.
Johannes S. schrieb:> Als Vorteil gegenüber den Nucleos: für die #7 gibt es ein TFT mit Touch> das direkt aufgesteckt werden kann, hatte ich ja schonmal geschrieben.> Dabei wird das mit schneller paralleler Ansteuerung betrieben.> Zusätzlich ist eine Batterie für die RTC mit drauf und ein SD Karten> Slot, das ist auch praktisch für einen kleinen Steuerrechner. Es gibt> auch eine Version die noch besser geeignet ist weil man die beiden> langen Headerreihen dann nach hinten rausgehend einlöten kann:> https://de.aliexpress.com/store/product/Freies-verschiffen-STM32F4-bord-STM32F407VET6-STM32-Cortex-M4-development-board-DIY-pin-header/1817254_32843484907.html
Das von Dir verlinkte Board habe ich auf der Bestellliste. Aber den
Pinkompagiblen parallelen TFT finde ich nicht bei AliExpress. Hast Du
mir ggf. einen Link zu dem Teil?
Die 240x320 Pixel Touch TFTs von AliExpress mit SPI Anschluss (seriell)
habe ich zu Hauf zu Hause, aber kein einziges Paralleles.
Stefan U. schrieb:> Warum hast du dich so auf AliExpress versteift?
Ich habe dort die ESPs gekauft und auch die Boards mit Sensoren, etc.
drauf. Ist halt ein umfangreiches Angebot da, das man so in DE weder auf
Ebay noch Amazon findet - zumindest nicht mehr.
Ausserdem war ich mal Online-Händler und habe aus China viel importiert
und ebenfalls dort produzieren lassen. Daher vielleicht die Affinität.
Es ist nicht alles Schrott was aus China kommt. Es kommt darauf an,
welche Vorgaben man dem Hersteller macht. Heutzutage ist es dort möglich
Produkte zu gleicher Qualität wie in der EU herstellen zu lassen, sofern
es sich dabei nicht um hochkomplexe Dinge, wie z.B. Weltraumraketen
handelt.
Johannes S. schrieb:> Jepp.
Perfekt. Das Display wäre TOP für meine Aqua-Steuerung für das
Bedienteil und das Haupt-Steuerungsteil. Dafür der STM32 auch gut
geeignet.
Die Sensorik, wie PH-, Salinitäts-, Redox-Messung würde ich dann mit
einzelnen AVRs realisieren und diese mit dem Hauptteil z.B. über I2C
oder einen anderen Bus kommunizieren lassen.
Noch mal zu den AVRs:
Ich habe mir die folgenden ATtinys angeschaut:
ATtiny 13A, 25, 45 und 85
Die Unterschiede zwischen dem 13A und den anderen drei habe ich raus.
Aber die Unterschiede zwischen den 25, 45 und 85 finde ich nicht raus.
Ist doch alles gleich. Gleicher Speed, gleich großer ROM, RAM und EEPROM
bei allen drei. Ebenso die gleichen Timer und PWM Ansteuerung, auch der
gleiche 10-bit ADC, sowie der Stromverbrauch von 0,1µA im Sleep und von
300µA bei 1 MHz. Alles bei den dreien ist gleich.
Übersehe ich was?
Ich weiß nicht, wie die neuen Datenblätter aussehen, ich füge hier mal
die erste Seite eines alten an, da sind die Unterschiede bei den
Speichergrößen auf einen Blick ersichtlich.
S. Landolt schrieb:> ich füge hier mal> die erste Seite eines alten an, da sind die Unterschiede bei den> Speichergrößen auf einen Blick ersichtlich.
Danke, ich habe den Wald vor lauter Bäumen nicht gesehen. Jetzt sind die
Unterschiede klar. Sind die Speichergrößen.
Das sind keine alten AVR Modelle.
Alle werden noch produziert und haben einen JTAG, was den Chip teurer
macht.
Der ATmega328 ist der billigste, da er nur einen UART hat und debugWire
anstelle des JTAG. Wenn jemand schon mal mit dem debugWire gearbeitet
hat, der weis, wie schnell man den unbrauchbar machen kann. Zudem hat
dieser auch weniger Pins und IO als die ATmega64/ATmega32A ...
Bei keinem Arduino mit AVR ist ein JTAG Anschluss, da der ATmega328
keinen JTAG hat.
Ich würde die einen von denen empfehlen, welcher einen JTAG bereits
onboard hat (3. Link ...) mit dem 10-Poliger Stecker
Du brauchst aber für das Debuggen einen JTAG ICE oder JTAG ICE mk2.
Da kannst bis zu 3 HW-Breakpoints setzen (auch RAM) und software
Breakpoints im Flash. Ist viel schneller und sicherer als das mit
debugWire.
Für das Programmieren mit dem 6-poligen ISP reicht ein günstiger
Programmer, die gibt es schon ab EUR 40, oder du besorgst dir einen JTAG
ICE mkII die gibt es mitlerweile auch als Nachbau, hab ich aber noch
nicht getestet.
Mit dem kannst du die Ports viel effizienter gestalten - Beispielsweise
ein Display auf einen PORT verkabeln und den Port direkt schreiben,
anstelle dieses Arduino gefrimels mit jedem einzelnen Port Pin, das
spart eine Menge Code und ist noch dazu schneller, 8 Relais an einem
Port kannst du mit einem einzelnen Byte auf den PORT setzen und löschen.
Axel S. schrieb:> Einen integrierten USB-Port haben die ATMega nicht. Und der zusätzliche> USB-zu-serial Chip kostet nahezu so viel wie der ATMega selber. Der> Bootloader frißt 2KB Flash. Außerdem fallen diese Kosten bei *jedem*> Board an. Den ISP-Programmer brauchst du hingegen nur einmal.
Es gibt ATmegas mit integrierten USB, die sind im Arduino Leonardo und
haben ein U am ende, wie der ATmega32U4, hier kann man einen Bootloader
mit USB machen und vieles mehr.
Dieser kann auch für alle anderen USB Geräte verwendet werden, wie zum
Beispiel eine HID wie Tastatur, Joystick, .. oder Speichercontroller
oder auch USB-to-Serial usw. Aber das muss alles mit Hand programmiert
werden oder mit Libs, die es schon gibt.
Lothar schrieb:> Peter King schrieb:>> Warum montiert man nicht an jeden ATmega einen USB Port dran und macht>> den Bootloader drauf? Würde doch in jedem Fall die extra Programmer>> ersparen, oder sehe ich das falsch?>> Das siehst Du richtig. Aus unerfindlichen Gründen machen einige> Hersteller ab Werk einen Bootloader drauf (EFM, LPC, STM) und andere> nicht (AVR, PIC) Warum das so ist bleibt rätselhaft. Wem der Bootloader> nicht passt, kann ihn ja löschen. Aber ohne Programmer bekommt man> keinen drauf. Vielleicht zur Absatzsteigerung der Atmel ICE und PICkit.> Am Speicher liegt es übrigens nicht, der EFM Bootloader z.B. braucht> weniger als 256 Byte Flash.
Man hat mehr Möglichkeiten, wie zum Beispiel Bootloader über USB,
Seriell, Paralell, I²C, SPI, RS422, Serial Master Mode, SD-Karte,
Flash-Speicher, NVRAM, ...
Zu der Zeit, wo die AVR entstanden sind, war Flash-Speicher gerade erst
am Anfang und noch sehr teuer, aber billiger als EEPROM. Der erste
ATmega103 mit 128kB Flash kostete damals so um die 20-30 EUR. Vor 10-15
Jahren kosteten die auch noch so ca. 8 EUR ab 128kB Flash. Jetzt bekommt
man die ab 2-5 EUR.
Die Arduino Boards sind aber nicht billiger geworden, ein Arduino mega
2560 kostete 2013 EUR 50 und kostet jetzt EUR 40, ein Nachbau kostet EUR
10. Der Controller kostet nackig 8-10 EUR
Zu der Zeit war es eben einfacher, wenn man den Bootloader selber
schrieb, da mit Serial es ziemlich viele Unterschiede mit Protokollen
gab, auch für die Baudrate gab es keinen Standard. Auch ein Branding war
möglich, beispielsweise Versionsnummer abfragen und ob das Update für
dieses Gerät ist. Mit mehreren Arduinos habt ihr schon bestimmt schon
mal den falschen Sketch auf das Board geladen, was mit einem selbst
gebauten Bootloader geprüft werden könnte. Im besten Fall funktioniert
dann nichts, im schlimmsten Fall zerschießt man die zusätzliche Hardware
oder den ATmega.
Bei den EFM, LPC, STM usw. muss man auch mit Lötbrücken festlegen,
welchen Bootloader man möchte (Flash, USB, RAM usw.) was bei den
Evaluation Boards fix über den J-Link oder Debugger vorprogrammiert
wurde. Möchte man ein eigens entwickeltes Board bauen, kommt man hier
auch nicht um den Bootloader herum. Man muss zuerst auch über einen
Programmer das Programm mit Bootloader laden und einen eigenen
USB-Treiber entwickeln, wenn es später noch über USB updatefähig sein
soll.
Bei den Fahrzeugen wird auch mit einem speziellen Programmiergerät die
Steuersoftware upgedated.
Stefan ⛄ F. schrieb:>> Sonst könnte man es auf einem>> Arduino Board machen. ABER: Dort ist kein debugging möglich>> Das ist nicht richtig. Du kannst den Debugger (Atmel ICE oder gerne auch> das STK500) an die ISP Schnittstelle jedes Arduino Moduls stecken und> damit debuggen.
Vorher aber den Kondensator und den Pull-Up am RESET auslöten, da sonst
das Debuggen nicht mehr möglich ist und du den auch nicht mehr per ISP
programmieren kannst.
Es gibt dann nur noch die Möglichkeit, die beiden Bauteile auszulöten,
das Debuggen starten und debuggen beenden mit deaktivieren des
Debugmodus.
Damit kannst du aber nicht alles debuggen, da in diesem Modus der Sleep
nicht mehr richtig funktioniert und noch andere kleinere Einschränkungen
wie sehr langsames debuggen mit software Break-Points, was weit
langsamer ist als mit JTAG.
Peter King schrieb:> Ob Microchip die Atmel AVRs begraben will? Ich weiß nicht. Sind die> Atmel AVRs nicht zu sehr verbreitet, um sie zu beerdigen? Außerdem hat> Microchip doch einige Evaluation Boards rausgebracht, um Neulingen den> Umgang mit den Atmal AVRs beizubringen. Wozu neue User für die Atmel> Dinger gewinnen, wenn man sie in Wirklichkeit beerdigen will? Das passt> doch nicht zusammen. Ist aber nur meine Denke. Vielelicht irre ich mich> da.
Nein, werden sie nicht. Es sind neuere Tiny herausgekommen mit
Funktionen der Xmega reihe, wie Event-Kanäle, SleepWalking, usw. wurden
da verbaut.
https://www.microchip.com/wwwproducts/en/ATTINY404
Sogar die 8051 sterben noch nicht aus, vor ein paar jahren hat FTDI den
kleinsten vorgestellt mit gerade mal 2 mm² und in china gibt es etliche
Hersteller die diese on Mass herstellen. Hab vor kurzem ein DMX-Gerät
gekauft mit einem 8051er und in den heutigen Tastaturen sind diese auch
noch haufenweise verbaut.
S. R. schrieb:> Du bist immernoch 2 Jahre zu spät.
Ja, aber vielleicht gibt es ja noch andere, die mit ATmega anfangen
möchten und nicht gleich einen Uber 32-Bit ARM verwenden möchten,
welcher in der Komplexität schon beim hinsehen überfordert.
AVR ~ 120 Seiten Handbuch
Cortex-M4F Handbücher mit über 1000 Seiten.
Zudem ist ein Cortex-M4F nicht das selbe, da es von verschiedenen
Herstellern zwar angeboten werden, aber jeder Chiphersteller seine
eigene Peripherie hat und somit jeder anders zu programmieren ist. Hast
du schon mal so etwas einfaches wie einen I²C oder UART auf einem ST,
Atmel, NXP, TI, Maxim, Infineon, Renesas, Cypress, Freescale, ...
programmiert? Dann ist noch zu entscheiden, möchte ich den FPU oder doch
lieber den DSP verwenden, ... Oder genügt auch ein M0, M1 oder M3 oder
steige ich schon auf die nächste Generation um, den M23 oder M33. Oder
doch lieber schon einen ARM X mit Linux, Microsoft IoT, ...
Für einfache Sachen ist der AVR meist ausreichend, da er Analogeingänge
hat, was die meisten 32-Bit ARM nicht haben und zusätzliche Hardware
erfordern, EEPROM hat keiner der 32-Bitter, was über externe Bausteine
oder EEPROM-Emulationssoftware gelöst werden muss, wenn man dies
benötigt, usw.
Bin ja auch beim überlegen ob ich noch mit PIC oder/und 8051 anfange, da
es diese auch in sehr großer Stückzahl gibt und einen 8051 bekommt man
schon für ein paar Cent. Aber zu Assembler zurück wäre mir zu aufwendig,
aber es gibt ja auch noch C-Compiler für diese.