Hi,
ich habe ein Problem mit einer eigentlich funktionierenden SPI
routine...
1 | void master_transmit (unsigned char data) {
|
2 | PORTB &= ~_BV(PB0); //SS am Slave Low --> Beginn der Übertragung
|
3 | _delay_us(1);
|
4 | SPDR = data; //Schreiben der Daten
|
5 | while (!(SPSR & (1<<SPIF)));
|
6 | //_delay_ms(1);
|
7 | counter++;
|
8 | if(counter==2){ _delay_us(1); PORTB |= (1<<PB0); counter=0;} //SS High --> Ende der Übertragung
|
Eigentlich läuft die Routine fehlerfrei, zu anfang meines Programms
schicke ich mit ihr einige Daten raus die auch richtig ankommen...
Rufe ich die Routine aber etwas später nochmal auf, hängt sie sich bei
der while schleife auf...
Hardwareseitig nutze ich nur die halbe Spi schnittstelle, soll heißen
ich benutze nur den mosi der slave schickt also nichts zurück.
Ich könnte das komplette Programm posten allerdings ist das recht
lang.....
deshalb erstmal so
gruß