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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.