Moin,
ich beabsichtige ein Bit in einem 8-Bit breiten uint8_t zu toggeln und
diese int dann später per SPI zu senden.
Folgendes ist der Code in Atmel Studio, den ich auf meinem ATMega168
laufen lasse:
1 |
|
2 | #define MUTE_L 0
|
3 | #define MUTE_R 1
|
4 | uint8_t spiRelBufferHigh = 3;
|
5 |
|
6 | #define SRC_L 6
|
7 | #define SRC_R 7
|
8 | uint8_t spiRelBufferLow = 0;
|
9 |
|
10 |
|
11 | if (states.pushed_enc){
|
12 | usart_puts("Anfangszustand \n\r");
|
13 | usart_puti(spiRelBufferHigh);
|
14 | usart_puts("\n\r");
|
15 | spiRelBufferHigh ^= ( 1 << MUTE_L );
|
16 | usart_puts("nach mute_L \n\r");
|
17 | usart_puti(spiRelBufferHigh);
|
18 | usart_puts("\n\r");
|
19 | spiRelBufferHigh ^= ( 1 << MUTE_R );
|
20 | usart_puts("nach mute_R \n\r");
|
21 | usart_puti(spiRelBufferHigh);
|
22 | usart_puts("\n\r");
|
23 |
|
24 | SPI_intTransmit(spiRelBufferHigh);
|
25 | SPI_intTransmit(spiRelBufferLow);
|
26 | }
|
In meiner seriellen Ausgabe erscheint
Anfangszustand
0
nach mute_L
0
nach mute_R
21
Anfangszustand
0
nach mute_L
0
nach mute_R
0
Der selbe Code in C auf meinem Mac:
1 | int spiRelBufferHigh = 0;
|
2 | int spiRelBufferLow = 0;
|
3 | int i = 9;
|
4 |
|
5 | void main (void){
|
6 |
|
7 | for (int j = 0; j<10; j++){
|
8 |
|
9 | spiRelBufferHigh ^= ( 1 << 0 );
|
10 | spiRelBufferHigh ^= ( 1 << 1 );
|
11 |
|
12 |
|
13 | printf("spiBufferHi: %i\n\r", spiRelBufferHigh);
|
Hier ist die Ausgabe wie erwartet 3 und 0 im Wechsel.
Hat jemand eine Idee, was ich falsch gemacht habe?