Hallo zusammen,
ich bin eben am verzewifeln 24bit am Stück per SPI zu übertragen. Dazu
habe habe ich folgenden SoftSPI genutzt. Es geht bis 16bit ohne
Probleme, dann eher nicht mehr. Ich nutze zum Senden einen Tiny85. Der
Empfänger der Daten ist ein DAC, der aber nur einen DI, SCK und CS
Eingang hat. d.h. DO oder MISO gibt es nicht.
Wo liegt mein Fehler?
1 | uint32_t spi_tx(uint32_t data)
|
2 | { unsigned char i;
|
3 |
|
4 | cbi(spi_PORT, CS);
|
5 | for (i=0; i<24; i++)
|
6 | {
|
7 | if (data&0x7FFFFF)
|
8 | sbi(spi_PORT, SDI);
|
9 | else
|
10 | cbi(spi_PORT, SDI);
|
11 | data<<=1;
|
12 | sbi(spi_PORT, SCK);
|
13 | asm("nop");
|
14 | asm("nop");
|
15 | cbi(spi_PORT, SCK);
|
16 | }
|
17 | sbi(spi_PORT, CS);
|
18 | return data;
|
19 | }
|
Aufrufen tu ich das ganze mit: