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.
>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?
Es geht um den Port PIO3_0, habe es direkt eingegeben und in CMSIS nachgeschaut, aber nichts gefunden wie ich ihn so ansprechen kann.
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.
:
Bearbeitet durch User
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
Problem ist mittlerweile gelöst, falls jemand Hilfe dabei braucht kann er/sie sie gerne einen Ausschnitt des Codes bekommen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.