Hallo Leute,
im Forum sind ja schon haufenweise Artikel über AVRs und SPI Probleme.
Leider konnte ich nach mehreren Stunden eine Frage nciht beantworten:
Wie kann ich mit dem SPI Master Daten lesen?!?
initialisierung:
1 | void spi_init(void) {
|
2 | DDRB = _BV(PB2) | _BV(PB3) | _BV(PB5); // set SCK,MOSI,PB0 (SS) as output
|
3 | DDRB &= ~_BV(PB4); // set MISO as input
|
4 | PORTB = _BV(PB5) | _BV(PB2); // SCK and PB0 high
|
5 | SPCR = _BV(SPE) | _BV(MSTR); // SPI master, clock fck/4
|
6 | status = SPSR; // clear status
|
7 | }
|
Das Senden klappt von beginn an ohne Schwierigkeiten. Hier der code
dazu:
1 | void spi_send(unsigned char* data, unsigned char len) {
|
2 | unsigned char i;
|
3 |
|
4 | PORTB &= ~_BV(PB2); // set SS low
|
5 | for(i=0; i<len; i++) {
|
6 | SPDR = data[i]; // write byte
|
7 | while (!(SPSR & (1<<SPIF)));
|
8 | }
|
9 | PORTB |= _BV(PB2); // set SS high
|
10 | }
|
Kennt jemand vielleicht einen Codeschnipsel zum empfangen?
Besten Dank
Adrian