Da passiert in der iox128a1.h Merkwürdiges, was sicher so nicht gedacht
ist:
1 | typedef enum SPI_MODE_enum
|
2 | {
|
3 | SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */
|
4 | SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */
|
5 | SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */
|
6 | SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */
|
7 | } SPI_MODE_t;
|
Damit wird neben UCPHA, welches Teil der SPI-Mode Einstellung ist, auch
das daneben liegende UDORD beschrieben. UDORD gibt an, ob das LSB oder
MSB zuerst ausgegeben wird, hat jedoch nichts mit Mode 0-3 zu tun.
Eingestellt werden die UART-SPI-Modi mit UCPHA und INVEN, siehe
Datenblatt. INVEN gehört zum Portkontrollregister und bestimmt
(invertiert) das Verhalten von SCK. Der Zustand des INVEN-Bits geht aus
dem Code nicht hervor.