| bool WS2812Serial::begin() | bool WS2812Serial::begin() | ||||
| { | { | ||||
| uint32_t divisor, portconfig, hwtrigger; | uint32_t divisor, portconfig, hwtrigger; | ||||
| #if defined(KINETISK) | |||||
| KINETISK_UART_t *uart; | KINETISK_UART_t *uart; | ||||
| #elif defined(KINETISL) | |||||
| KINETISL_UART_t *uart; | |||||
| #endif | |||||
| switch (pin) { | switch (pin) { | ||||
| case 1: | |||||
| #if defined(KINETISK) | |||||
| case 1: // Serial1 | |||||
| case 5: | |||||
| #if defined(__MK64FX512__) || defined(__MK66FX1M0__) | |||||
| case 26: | |||||
| #endif | |||||
| uart = &KINETISK_UART0; | uart = &KINETISK_UART0; | ||||
| divisor = BAUD2DIV(2400000); | divisor = BAUD2DIV(2400000); | ||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | ||||
| hwtrigger = DMAMUX_SOURCE_UART0_TX; | hwtrigger = DMAMUX_SOURCE_UART0_TX; | ||||
| SIM_SCGC4 |= SIM_SCGC4_UART0; | SIM_SCGC4 |= SIM_SCGC4_UART0; | ||||
| break; | break; | ||||
| case 10: // Serial2 | |||||
| #if defined(__MK20DX128__) || defined(__MK20DX256__) | |||||
| case 31: | |||||
| #elif defined(__MK64FX512__) || defined(__MK66FX1M0__) | |||||
| case 58: | |||||
| #endif | |||||
| uart = &KINETISK_UART1; | |||||
| divisor = BAUD2DIV2(2400000); | |||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | |||||
| hwtrigger = DMAMUX_SOURCE_UART1_TX; | |||||
| SIM_SCGC4 |= SIM_SCGC4_UART1; | |||||
| break; | |||||
| case 8: // Serial3 | |||||
| case 20: | |||||
| uart = &KINETISK_UART2; | |||||
| divisor = BAUD2DIV3(2400000); | |||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | |||||
| hwtrigger = DMAMUX_SOURCE_UART2_TX; | |||||
| SIM_SCGC4 |= SIM_SCGC4_UART2; | |||||
| break; | |||||
| #if defined(__MK64FX512__) || defined(__MK66FX1M0__) | |||||
| case 32: // Serial4 | |||||
| case 62: | |||||
| uart = &KINETISK_UART3; | |||||
| divisor = BAUD2DIV3(2400000); | |||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | |||||
| hwtrigger = DMAMUX_SOURCE_UART3_TX; | |||||
| SIM_SCGC4 |= SIM_SCGC4_UART3; | |||||
| break; | |||||
| case 33: // Serial5 | |||||
| uart = &KINETISK_UART4; | |||||
| divisor = BAUD2DIV3(2400000); | |||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | |||||
| hwtrigger = DMAMUX_SOURCE_UART4_RXTX; | |||||
| SIM_SCGC1 |= SIM_SCGC1_UART4; | |||||
| break; | |||||
| #endif | |||||
| #if defined(__MK64FX512__) | |||||
| case 48: // Serial6 | |||||
| uart = &KINETISK_UART5; | |||||
| divisor = BAUD2DIV3(2400000); | |||||
| portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); | |||||
| hwtrigger = DMAMUX_SOURCE_UART5_RXTX; | |||||
| SIM_SCGC1 |= SIM_SCGC1_UART5; | |||||
| break; | |||||
| #endif | |||||
| #elif defined(KINETISL) | |||||
| // TODO: Teesny LC support.... | |||||
| #endif | |||||
| default: | default: | ||||
| return false; // pin not supported | return false; // pin not supported | ||||
| } | } |