SK6812 LED mit light_ws2812 auf ARM Cortex-M0

Gast #6235570
Lesenswert?

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.
#6236051
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren