- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: STM32 als Arduino

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3

    STM32 als Arduino

    Anzeige

    Praxistest und DIY Projekte
    Da die STM32 Controller relativ günstig sind ( ein BluePill gibt es schon ab ca.3€ beim Chinesen ) und außerdem wesentlich leistungsfähiger als die AVR-Controller sind, ist es vielleicht nützlich, diese für Roboter zu verwenden.

    Hier habe ich ein Video gefunden, indem gezeigt wird, wie man ein BluePill mit der Arduino-IDE programmiert:

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Naaaajaa...

    Ich habe unlängst für ein Projekt an meiner Hochschule den STM32 vorgeschlagen (Arduino war in einigen Aspekten nicht mehr ausreichend). Irgendjemand hat dann zur Programmierung die mbed-IDE vorgeschlagen (Online-Compiler, mbed.org mein ich).

    Da waren erstmal alle begeistert weil ja so unfassbar einfach, genauso wie bei der Arduino-IDE. Ich hab von Arduinokram keine Ahnung-AVRs programmiere ich in ASM oder C.

    Blöd geschaut hab ich dann. als ich mich dann an das Programmdesign gemacht habe. Einem ADC-Messwert sowas wie einen Zeitstempel zuordnen? Ich hatte nichtmal die Möglichkeit, wenigstens festzustellen ob ich einen neuen oder den alten ADC-Wert nocheinmal auslese. Alle drei ADCs synchron laufen lassen? Wenigstens die Sample-Frequenz ändern/rausfinden? Alles Mist...

    Das Testprogramm war zwar nur ein Dreizeiler, aber was hilfts? Letztenendes sind wir wieder zu Werkzeugen wie Embedded Studio zurück. Man kann in die Komplexität moderner Controller zwar etwas Übersicht und Struktur reinbringen (siehe CubeMX), aber den Nutzer vollständig von ihr fernzuhalten geht halt einfach nicht, ohne die Möglichkeiten dickerer Hardware ad absurdum zu führen.

  3. #3
    HaWe
    Gast
    das schöne an "Arduinokram" ist, dass es für die meisten Probleme Libs mit einfachen APIs gibt, um auf sie zuzugreifen, und das ohne den nervtötenden make oder makefile oder Bootloader Kram.
    Insbesondere auch Multithreading- und Timer-Libs, sowohl für AVR als auch ARM - über STM habe ich dazu allerdings keine Info.
    Gerade der Arduino Due (84MHz, 92kB RAM, >70 GPIOs) mit Due Scheduler und Due Timer ist daher meine Lieblingsplattform. Da Arduino noch immer einen STM in Planung hat (Star otto), wird das hoffentlich auch bald für dieses Board verfügbar sein - es sei denn, der Star Otto wird ein Rohrkrepierer wie früher schon der Tre.

    Dennoch schön zu sehen, dass es auch geht wie im Video beschrieben (laufen dann auch Scheduler etc.?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Insbesondere auch Multithreading- und Timer-Libs, sowohl für AVR als auch ARM - über STM habe ich dazu allerdings keine Info.
    Dazu gibt es im Arduino-Repository von Roger Clark FreeRTos:
    https://github.com/rogerclarkmelbour...es/FreeRTOS900

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Zitat Zitat von White_Fox Beitrag anzeigen
    Naaaajaa...

    Ich habe unlängst für ein Projekt an meiner Hochschule den STM32 vorgeschlagen (Arduino war in einigen Aspekten nicht mehr ausreichend). Irgendjemand hat dann zur Programmierung die mbed-IDE vorgeschlagen (Online-Compiler, mbed.org mein ich).

    Da waren erstmal alle begeistert weil ja so unfassbar einfach, genauso wie bei der Arduino-IDE. Ich hab von Arduinokram keine Ahnung-AVRs programmiere ich in ASM oder C.
    Da sprichst Du einen wichtigen Punkt an. Wenn man eine neues Werkzeug oder System benutzen will, muss man sich darauf einlassen um die Stärken und Schwächen kennenlernen. Dabei ist es oft so, dass man mit den aus alten Projekten gemachten Erfahrungen an die neue Sache herangeht. Das kann aber dazu führen, dass man auf Probleme stößt, die man mit dem alten Werkzeug nicht hatte.

    Das folgende kleine Geschichte:

    Ein Mann hatte jahrelang mit einem Schraubenzieher gearbeitet und nun etwas von einem Akkuschrauber gehört. Nachdem er sich einen angeschafft hatte, machte er folgende Aussage:
    "Akkuschrauber sind totaler Mist. Früher hatte ich immer den Schraubenzieher auf die Schraube gesetzt und erst mal mit dem Hammer ein wenig darauf geklopft, damit die Schraube fasst. Mit dem tollen neuen Gerät kann ich nicht mal mehr die Schraube anklopfen."
    Außerdem würde er Schraubenzieher seit Jahren benutzen und es gäbe nichts, was man mit einem Akkuschrauber mehr machen könne als mit einem Schraubenzieher. So könne man z.B. mit einem Schraubenzieher auch hartnäckige Farbreste abkratzen, was mit einem Akkuschrauber nicht möglich sei. Ebenso müsse man beim Akkuschrauber hin und wieder die Batterien laden. Ein Zeitaufwand, der beim Schraubenzieher entfällt.
    Überhaupt schiene es ihm, als wenn der Akkuschrauber nur für schwächliche Menschen entwickelt worden wäre , die von Schrauben keine Ahnung hätten.
    Deshalb erschiene ihm die Entwicklung des Akkuschraubers völlig unnötig und er bleibe beim bewähren Althergebrachten.



    Zitat Zitat von White_Fox Beitrag anzeigen
    Naaaajaa...

    Blöd geschaut hab ich dann. als ich mich dann an das Programmdesign gemacht habe. Einem ADC-Messwert sowas wie einen Zeitstempel zuordnen? Ich hatte nichtmal die Möglichkeit, wenigstens festzustellen ob ich einen neuen oder den alten ADC-Wert nocheinmal auslese. Alle drei ADCs synchron laufen lassen? Wenigstens die Sample-Frequenz ändern/rausfinden? Alles Mist...
    Für die Systemzeit gibt es bei Arduino die Funktionen "millis()" und "micros()"

    Den Zeitstempel würde man dann in etwas so erhalten

    Code:
    void loop()
    {
    value=analogRead(A0);
    time=millis();
    ..
    }
    Die Abstraktion der Funktionen ( HAL Hardware-Abstraktion-Layer ) ist dabei der Tatsache geschuldet, dass die Software auf vielen verschiedenen MCUs vom 8 bit AVR bis zum ARM oder Intel laufen soll.
    ( Für den RasPi gibt es dazu, Wiring ist die Pin-Zugriffs-API von Arduino "the undold historiy of Arduino )

    Dass mit solchen Abstraktionen nicht die selbe Performance wie für "native" geschriebene Software erreicht wird ist klar.
    Dazu gibt es aber Lösungen: So beinhalten viele Arduino Libraries direkte Registerzugriffe für die AVRs, was die volle Geschwindigkeit ermöglicht.
    Beim Arduino Framework STM32GENERIC gibt es dazu die Möglichkeit, direkt die HAL-API zu rufen. Beispiele sind dort enthalten.
    Damit lassen sich dann auch spezielle Wünsche bezüglich der Hardware wie z.B. den AD-Wandler realisieren.

    Links:

    - The untold history of Arduino
    - STM32GENERIC
    - WiingPi
    Geändert von stochri (20.08.2017 um 10:00 Uhr) Grund: Rechschreibfehler + Erweiterung der Geschichte

  6. #6
    HaWe
    Gast
    zu deinen Links:
    the "untold history" kannte ich bereits - sollte jeder lesen, der sich mit Arduino beschäftigt, insb. um ein wenig zu Banzi's Geschäftspraktiken zu erfahren.

    WiringPi indes hat nichts mit Wiring zu tun, es ist weder in C++ geschrieben (sondern in ANSI C) noch besitzt es die Wiring-spezifischen Java Wrapper zum Verlinken der Board-specs, -cores und -libs, wie sie ursprünglich sogar noch teilweise auf Processing zurückgehen. Stattdessen werden nur ein paar C-typische Linux-Befehle mit C-Wrappern versehen, um die file/devtree Zugriffe zu vereinfachen, und das Ergebnis sieht dann tatsächlich ein wenig - aber längst nicht ganz - Arduino-Wiring-ähnlich aus: http://www.mindstormsforum.de/viewto...tart=15#p67924

    Nichtsdestoweniger aber gibt es das "echte" Arduino-IDE/API-Wiring für den Pi auch als Framework, um ihn wie Arduinos (oder STM32 oder Teensys oder nodeMCU) aus der Arduino IDE heraus zu programmieren, und zwar hier:
    https://github.com/me-no-dev/RasPiArduino
    Features

    The familiar Arduino API
    pinMode/digitalRead/digitalWrite/analogWrite
    Full SPI, Wire and Serial compatibility
    Access to STDIN/STDOUT through the Console class
    Access to system tty through the TTY library
    Process, FileIO, Client, Server and UDP implementations through the Bridge library
    ...
    Restart Arduino IDE and select the RaspberryPI from the list of boards
    Compile a sketch
    Geändert von HaWe (20.08.2017 um 11:30 Uhr)

Ähnliche Themen

  1. STM32 - Interrupts
    Von White_Fox im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 7
    Letzter Beitrag: 05.11.2016, 21:43
  2. STM32 + Kamera
    Von Wsk8 im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 15
    Letzter Beitrag: 11.03.2014, 21:26
  3. stm32 discovery mit openocd
    Von drew im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 01.12.2012, 20:09
  4. stm32 discovery
    Von drew im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 17
    Letzter Beitrag: 07.04.2011, 17:55
  5. STM32 + blinkende LED
    Von Mountainking im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 41
    Letzter Beitrag: 11.11.2009, 15:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen