Forum: Mikrocontroller und Digitale Elektronik Getting started Stm32F4 + WS2812


von Anfaenger (Gast)


Lesenswert?

Hallo,

ich weiß das ist der 1000 post den es hier in der Richtung gibt, aber 
trotzdem bin ich am Rande meiner Verzweiflung :/.
Ich habe jahrelang Analogtechnik gemacht und möchte nun in meiner 
privaten Zeit in die digitale Welt einsteigen. Hierfür habe ich mir den 
Arm Mikrocontroller-EVM von STM (Stm32F401 und Stm32F11) geholt. Ich 
habe desöfteren schon an Mikrocontrollern gearbeitet - PICS , AVRs etc 
sind mir nicht ganz so fremd nur das Problem war, dass ich die 
Entwicklungsumgebung + Hardware schon fertig auf dem Arbeitstich 
bekommen habe.

Da ich bei mir auf dem Computer Eclipse und das Nucleo board nicht am 
laufen bekomme (trotz diverser Tutorials), habe ich mich für die Online 
Variante MBED entschieden. Soweit so gut. Ich kann Leds zum Leuchten 
bringen PINs High und Low Schalten etc.

Im Nächsten Schritt würde ich gerne mit dem Mikrocontroller ein paar 
WS2812 LEDS ansteuern. Da ich das schon öfters gelesen habe, das man 
über die SPI schnitstelle die LEDS am besten ansteuern kann habe ich den 
MOSI PIn / D11 direkt mit der Datenleitung  der LEDS angeschlossen. Nur 
leider weiß ich so gar nicht wie ich jetzt bei meinem Problem, das 
einstellen des richtigen Timings, heranzugehen. Ich habe schon 
verschiedene Librarys aus der MBED welt ausprobiert nur leider 
funktionieren diese nicht bzw. müssen für meinen Mikrocontroller 
umgeschrieben werden und da hakt es schon. Wie?!?!

Am liebsten würde ich ja gerne folgende Library einbinden:

http://mikrocontroller.bplaced.net/wordpress/?p=3676

nur weiß ich nicht wie ich diese in Mbed lauffähig bekomme und dort die 
funktionen aufrufen kann...
Hat jemand von euch ein anderes Tutorial oder eine Lib mit der man 
einfach LED "n" einschalten kann und den RGB wert bestimmen kann.

von aSma>> (Gast)


Lesenswert?

Anfaenger schrieb:
> Am liebsten würde ich ja gerne folgende Library einbinden:
>
> http://mikrocontroller.bplaced.net/wordpress/?p=3676
>
> nur weiß ich nicht wie ich diese in Mbed lauffähig bekomme und dort die
> funktionen aufrufen kann...
> Hat jemand von euch ein anderes Tutorial oder eine Lib mit der man
> einfach LED "n" einschalten kann und den RGB wert bestimmen kann.

Wieviel einfacher willst du es haben?

von JohnDoe (Gast)


Lesenswert?

Anfaenger schrieb:
> Hallo,
>
> ich weiß das ist der 1000 post den es hier in der Richtung gibt,


Warum lässt Du das dann nicht?


> Ich habe jahrelang Analogtechnik gemacht und möchte nun in meiner
> privaten Zeit in die digitale Welt einsteigen. Hierfür habe ich mir den
> Arm Mikrocontroller-EVM von STM (Stm32F401 und Stm32F11) geholt. Ich
> habe desöfteren schon an Mikrocontrollern gearbeitet - PICS , AVRs etc
> sind mir nicht ganz so fremd nur das Problem war, dass ich die
> Entwicklungsumgebung + Hardware schon fertig auf dem Arbeitstich
> bekommen habe.


Was denn nun: "einsteigen" oder nicht? Du widersprichst Dir...


> Da ich bei mir auf dem Computer Eclipse und das Nucleo board nicht am
> laufen bekomme (trotz diverser Tutorials), habe ich mich für die Online
> Variante MBED entschieden. Soweit so gut. Ich kann Leds zum Leuchten
> bringen PINs High und Low Schalten etc.
>
> Im Nächsten Schritt würde ich gerne mit dem Mikrocontroller ein paar
> WS2812 LEDS ansteuern. Da ich das schon öfters gelesen habe, das man
> über die SPI schnitstelle die LEDS am besten ansteuern kann habe ich den
> MOSI PIn / D11 direkt mit der Datenleitung  der LEDS angeschlossen. Nur
> leider weiß ich so gar nicht wie ich jetzt bei meinem Problem, das
> einstellen des richtigen Timings, heranzugehen. Ich habe schon
> verschiedene Librarys aus der MBED welt ausprobiert nur leider
> funktionieren diese nicht bzw. müssen für meinen Mikrocontroller
> umgeschrieben werden und da hakt es schon. Wie?!?!
>
> Am liebsten würde ich ja gerne folgende Library einbinden:
>
> http://mikrocontroller.bplaced.net/wordpress/?p=3676
>
> nur weiß ich nicht wie ich diese in Mbed lauffähig bekomme und dort die
> funktionen aufrufen kann...
> Hat jemand von euch ein anderes Tutorial oder eine Lib mit der man
> einfach LED "n" einschalten kann und den RGB wert bestimmen kann.


Also entweder Du beschäftigst Dich erstmal mit den Grundlagen der 
Cortex-Controller oder aber Du steuerst die LEDs mit einem AVR oder PIC 
an, damit hast Du ja angeblich schon Erfahrung.
Alles andere wäre verschwendete Zeit.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

JohnDoe schrieb:
> Alles andere wäre verschwendete Zeit.

 Stimme ich zu, nur:

 Jeweils 20 Zeilen zitieren, um eine Zeile Antwort zu schreiben ist
 auch nicht sehr hilfreich.
 Die letzten paar Zeilen hätten es auch getan.

von W.S. (Gast)


Lesenswert?

Anfaenger schrieb:
> Da ich bei mir auf dem Computer Eclipse und das Nucleo board nicht am
> laufen bekomme (trotz diverser Tutorials)
...
> Ich habe schon
> verschiedene Librarys aus der MBED welt ausprobiert nur leider
> funktionieren diese nicht

Also Pleite auf der ganzen Linie.

Kannst du dir eigentlich vorstellen, daß man seine Quelle auch mit einem 
popligen Texteditor (Notepad o.ä.) schreiben kann? Oder daß man seinen 
Compiler auch von der Kommandozeile (oder per Batchdatei) aufrufen kann?

Kannst du dir weiters vorstellen, daß man vielleicht das Datenblatt UND 
das Referenzmanual zu seinem Chip wenigstens auszugsweise lesen sollte, 
bevor man sich an das Schreiben von Anwendungen macht?

Du weißt offensichtlich noch garnichts (was zwar keine Schande ist, 
aber..), aber anstatt dich systematisch heranzuarbeiten, versuchst du es 
mal hier und mal da, wenn dir Eclipse nicht gleich funktioniert, dann 
eben mal MBED, dann verschiedene Bibliotheken ausprobieren, mal sehen ob 
da was wackelt oder nicht.

Also: Fange am Anfang an und nicht irgendwo. Lade dir die Freewarevesion 
vom Keil herunter oder sowas wie Yagarto - je nach deinem persönlichen 
Gusto. Aber lerne zu allererst mal, die eigentlichen Tools selber 
richtig aufzurufen. Lerne auch, wie ein Startupcode in Assembler für 
einen Cortex aussehen sollte und wie du den Assembler dafür aufrufst.

Alles Andere, also mit den Füßen in der Luft zu hängen und trotz 
Luftstrampeln nicht zu Potte zu kommen, ist der falsche Weg.

Ich geb dir nen Rat: Lade dir von hier die Lernbetty herunter, passe den 
Pfad zu deiner Toolchain an und versuche, die BettyBase komplett zu 
übersetzen. Nee, nicht weil du selbige brauchst, sondern um zu sehen, ob 
du deine Toolchain richtig aufgesetzt hast. Wenn alles durchläuft, dann 
guck dir die zugehörige .bat an und lerne daraus, wie man sowas für 
einen Cortex macht. Das übt.

W.S.

von Johannes S. (Gast)


Lesenswert?

Anfaenger schrieb:
> Hallo,

es geht auch ohne erstmal die Lernbetty durchzunehmen, ich weiss nicht 
warum da jeder rüber soll...

Ich benutze die die wsLib, die schiebt die Bits per SPI raus. Für meine 
targets mit LPC µC funktioniert das ganz gut, beim STM32 hatte ich da 
auch Probleme. Habe das jetzt mal an den F4 angepasst und mit einer 
300er Kette läuft das ordentlich. Das Timing ist etwas ausserhalb der 
Spec aber meine LED verzeihen es mir (0,38 µs / 1,14 µs, 0,76 µs / 0,76 
µs).

Importiere dir mal das hier:
https://developer.mbed.org/users/JojoS/code/cylon/
Getestet mit einem STM32F429 Disco Board.
Wenn deine LED Kette kürzer ist müssen das define für chainLen geändert 
werden und die Längen lines[x].length = 30; kürzer gemacht werden.

Anfaenger schrieb:
> Am liebsten würde ich ja gerne folgende Library einbinden:

diese Lib nutzt DMA, das ist zwar technisch eleganter aber aufwändiger 
anzupassen. mbed nutzt die neuere STM HAL und man muss prüfen ob das 
Programm von ub nicht mit den mbed Resourcen kollidiert.

von W.S. (Gast)


Lesenswert?

Johannes S. schrieb:
> es geht auch ohne erstmal die Lernbetty durchzunehmen, ich weiss nicht
> warum da jeder rüber soll...

Es heißt "1000 Wege führen nach Rom" - insofern geht alles auch ohne die 
Lernbetty.

Aber guck dir den Eröffnungspost an. Der TO hat noch keinerlei 
Erfahrungen, wie man seine Tolchain selbst aufruft und mit Eclipse oder 
anderen IDE's ebenso seine Schwierigkeiten.

..und warum da jeder mal drüber soll?
Meine inzwischen tibetanisch anmutende Gebetsmühle beabsichtigt, daß die 
Anfänger erstmal lernen, wie man sein Geschreibsel sinnvoll ordnet, also 
die Teile nach Level auseinandernimmt, so daß man ordentliche Treiber 
bekommt, in main nicht mehr mit irgendwelchen Pins herumfummelt und so 
weiter.
Also 1. Lernziel: Systematik lernen, tatsächliche HW-Abstraktion lernen.

Als nächste Absicht steckt drin, daß die Anfänger es lernen, ihre Tools 
selber in die Hand nehmel zu können. Betonung auf KÖNNEN. Wer das 
beherrscht, kann später immer noch irgend eine IDE seiner Wahl benutzen, 
er weiß dann jedenfalls, was selbige tun muß, um ans Ziel zu kommen.
Also 2. Lernziel: Handwerkszeug beherrschen zu lernen.

Abgesehen davon steckt noch ne Menge anderes drin: wie man mit 
grafischen Displays umgehen kann, wie man Sound auch ohne CODEC nur per 
Timer+PWM erzeugen kann ("Willkommen an BBBord!"), wie man ein API mit 
SVC's einrichten kann und wie man Daten konvertiert, Tasten abfragt und 
entprellt, ne Kommandozeile und deren Auswertung organisiert und mehr.
Also 3. Lernziel: Lernen, wie man Teilprobleme lösen kann.

Die Lernbetty ist mit einem ARM7TDMI inzwischen längst nicht mehr 
aktuelle Technik - aber: ganz viele Teile der Software sind tatsächlich 
hardwareunabhängig und sowas wie die prinzipielle Herangehensweise ist 
und bleibt aktuell anwendbar.

Mir wäre es durchaus recht, wenn hier jemand mit einem passablen 
Cortex-Board eine Art modernere Lernbetty auf die Beine stellen würde. 
Aber ich sehe hier nur Leute, die zwar oberklug daherreden können, aber 
so etwas nicht zuwege bringen - egal ob ..können oder ..wollen oder 
beides.

Wo - bittesehr - sollen Anfänger eigentlich ihr Handwerkszeug lernen? An 
Unis, wo bestenfalls sowas wie uint32_t als größte Errungenschaft der 
Menschheit seit geschnitten Brot gelehrt wird? Oder von Hardwarefirmen, 
die eigentlich nur danach trachten, künftige Ingenieure möglichst fest 
an ihr eigenes Portfolio zu ketten? ..und die mit völlig verquaasten 
Libs daherkommen und diese Schaumschlägerei als Krone der 
Hardware-Abstraktion verkaufen wollen?

Nee, Anfänger wie der TO brauchen ganz andere Lerninhalte und die 
Lernbetty war ein nettes und geeignetes Mittel dazu. Immerhin hatte man 
mit ihr ein richtiges Gerät mit Gehäuse, Tasten, Display - eben was zum 
Anfassen. Und dank Siegfried auch mit nem Spielchen drauf.

Ich finde, sowas fehlt in der Szene.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.