| return ret; | return ret; | ||||
| } | } | ||||
| inline void setMOSI(uint8_t pin) __attribute__((always_inline)) { | inline void setMOSI(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 11) pinout &= ~1; | |||||
| if (pin == 7) pinout |= 1; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 11) newpinout &= ~1; | |||||
| if (pin == 7) newpinout |= 1; | |||||
| if ((SIM_SCGC6 & SIM_SCGC6_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 1) == 0) { | |||||
| CORE_PIN7_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN11_CONFIG = PORT_PCR_DSE | PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN11_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN7_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| inline void setMISO(uint8_t pin) __attribute__((always_inline)) { | inline void setMISO(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 12) pinout &= ~2; | |||||
| if (pin == 8) pinout |= 2; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 12) newpinout &= ~2; | |||||
| if (pin == 8) newpinout |= 2; | |||||
| if ((SIM_SCGC6 & SIM_SCGC6_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 2) == 0) { | |||||
| CORE_PIN8_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN12_CONFIG = PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN12_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN8_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| inline void setSCK(uint8_t pin) __attribute__((always_inline)) { | inline void setSCK(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 13) pinout &= ~4; | |||||
| if (pin == 14) pinout |= 4; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 13) newpinout &= ~4; | |||||
| if (pin == 14) newpinout |= 4; | |||||
| if ((SIM_SCGC6 & SIM_SCGC6_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 4) == 0) { | |||||
| CORE_PIN14_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN13_CONFIG = PORT_PCR_DSE | PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN13_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN14_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| friend class SPSRemulation; | friend class SPSRemulation; | ||||
| friend class SPIFIFOclass; | friend class SPIFIFOclass; | ||||
| return ret; | return ret; | ||||
| } | } | ||||
| inline void setMOSI(uint8_t pin) __attribute__((always_inline)) { | inline void setMOSI(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 11) pinout &= ~1; | |||||
| if (pin == 7) pinout |= 1; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 11) newpinout &= ~1; | |||||
| if (pin == 7) newpinout |= 1; | |||||
| if ((SIM_SCGC4 & SIM_SCGC4_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 1) == 0) { | |||||
| CORE_PIN7_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN11_CONFIG = PORT_PCR_DSE | PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN11_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN7_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| inline void setMISO(uint8_t pin) __attribute__((always_inline)) { | inline void setMISO(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 12) pinout &= ~2; | |||||
| if (pin == 8) pinout |= 2; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 12) newpinout &= ~2; | |||||
| if (pin == 8) newpinout |= 2; | |||||
| if ((SIM_SCGC4 & SIM_SCGC4_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 2) == 0) { | |||||
| CORE_PIN8_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN12_CONFIG = PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN12_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN8_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| inline void setSCK(uint8_t pin) __attribute__((always_inline)) { | inline void setSCK(uint8_t pin) __attribute__((always_inline)) { | ||||
| if (pin == 13) pinout &= ~4; | |||||
| if (pin == 14) pinout |= 4; | |||||
| uint8_t newpinout = pinout; | |||||
| if (pin == 13) newpinout &= ~4; | |||||
| if (pin == 14) newpinout |= 4; | |||||
| if ((SIM_SCGC4 & SIM_SCGC4_SPI0) && newpinout != pinout) { | |||||
| if ((newpinout & 4) == 0) { | |||||
| CORE_PIN14_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN13_CONFIG = PORT_PCR_DSE | PORT_PCR_MUX(2); | |||||
| } else { | |||||
| CORE_PIN13_CONFIG = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); | |||||
| CORE_PIN14_CONFIG = PORT_PCR_MUX(2); | |||||
| } | |||||
| } | |||||
| pinout = newpinout; | |||||
| } | } | ||||
| friend class SPSRemulation; | friend class SPSRemulation; | ||||
| friend class SPIFIFOclass; | friend class SPIFIFOclass; |