Hallo zusammen
Ich habe eine Soft-SPI-Datenleitung, bei der ich das Eingangssignal(8
Bit) auslesen möchte. Das Signal wird korrekt zum uC übertragen, jedoch
weiss ich nicht, was ich in der Auswertung falsch mache, dass ich das
Signal nicht richtig lese.
Datenpin ist auf PC1.
Clock auf PC0(der funktioniert)
Der Code:
1 | // Switch Data pin to input
|
2 | DDRC &= ~(1<<SPI_SOFT_DATA);
|
3 |
|
4 | unsigned char data_buffer;
|
5 |
|
6 | // Receive the data byte
|
7 | for(loop = 0, mask = 0x80, data_buffer=0;loop<8;loop++,mask = mask >> 1;)
|
8 | {
|
9 | SPI_SOFT_CLK_HIGH();
|
10 | // If data input is high, set bit
|
11 | if(PORTC & 0x02)
|
12 | data_buffer |= mask;
|
13 |
|
14 | SPI_SOFT_CLK_LOW();
|
15 | }
|
16 | SPI_CSX_HIGH();
|
17 | // Switch Data pin to output
|
18 | DDRC |= (1<<SPI_SOFT_DATA);
|
19 | return data_buffer;
|
Ich hoffe, ihr könnt mir helfen, den Knoten zu lösen.
MfG