SK6812 LED mit light_ws2812 auf ARM Cortex-M0

Gast #6235570
Hallo zusammen,

nachdem hier die Bibliothek vorgestellt und reichlich diskutiert wurde,
dachte ich es ist der richtige Ort um meine Frage zu stellen.

Ich verwende den µC LPC11C24 von NXP, der auf einem ARM Cortex-M0
basiert,
daher möchte ich die light_ws2812_ARM bentutzen.
Da das Vorgehen in der Readme ganz gut beschrieben ist bin ich auch nach
ihr vorgegangen.
Allerdins habe ich folgendes Problem:
In der Readme steht:
- Change i/o pin settings according to the I/O pin you are using:
  - Define `LIGHT_WS2812_GPIO_PIN=XXX`
  - Define `LIGHT_WS2812_GPIO_PORT=XXX`

Im Code dann:

  #define ws2812_port_set ((uint32_t*)&LIGHT_WS2812_GPIO_PORT->SET0)  // 
Address of the data port register to set the pin
  #define ws2812_port_clr ((uint32_t*)&LIGHT_WS2812_GPIO_PORT->CLR0)  // 
Address of the data port register to clear the pin


Die Adresse des von mir verwendeten Port ist 0x40044084, was ich
anstelle von &LIGHT_WS2812_GPIO_PORT eingefügt habe. Jedoch ohne Erfolg.
Kann mir jemand ein Beispiel liefern wie die Umsetzung richtig ist ?

Vielen Dank im Voraus.
Gast #6235579
>Die Adresse des von mir verwendeten Port ist 0x40044084, was ich
>anstelle von &LIGHT_WS2812_GPIO_PORT eingefügt habe.

Wieso fügst du nicht einfach den Portnamen ein?
#6236051
Da ist mehr Portierarbeit nötig, denn da wird nur LPC8xx unterstüzt. Die 
anderen LPC Familien kennen kein SET0 und CLR0 Register im GPIO Port.

Wenn ich das richtig sehe, müsste stattdessen jeweils das DATA Register 
mit dem richtigen Index benutzt werden:
1
 #define LIGHT_WS2812_GPIO_PORT LPC_GPIO[3]
2

3
 #define ws2812_port_set ((uint32_t*)&LIGHT_WS2812_GPIO_PORT->DATA[1<<LIGHT_WS2812_GPIO_PIN]
4
 #define ws2812_port_clr ((uint32_t*)&LIGHT_WS2812_GPIO_PORT->DATA[1<<LIGHT_WS2812_GPIO_PIN]
5

6
  #define ws2812_mask_set  (1<<LIGHT_WS2812_GPIO_PIN)  // Bitmask to set the data out pin
7
  #define ws2812_mask_clr  (0)  // Bitmask to clear the data out pin

Die Definition von LIGHT_WS2812_GPIO_PORT ist erstmal geraten.
Gast #6236469
Hallo turboj,

vielen Dank für deine Antwort und die guten Ansätze.

Ich habe den Code übernommen. Leider kann der Compiler nichts mit
1
 LPC_GPIO[3]
anfangen...

Was würdest du zudem für
1
 LIGHT_WS2812_GPIO_PIN

definieren ? Das taucht hier nicht auf.

Liebe Grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.