Hallo,
ich habe hier einen ATmega128 und bin dabei eine Verbindung zum einem
ENC28j60 per SPI aufzubauen.
Will ich nun Daten übertragen, verhalten sich das clocksignal und der
chipselect wie gewollt, jedoch messe ich mit dem Oszi auf MOSI 5V und
ein bisschen "zuckeln" zum gleichen Zeitpunkt des CLK-signals.
Meine Funktionen sehen so aus:
1 | void spi_write(uint8_t op, uint8_t address, uint8_t data)
|
2 | {
|
3 | CSACTIVE; //ss low
|
4 | SPDR = op | (address & ADDR_MASK);
|
5 | while(!(SPSR&(1<<SPIF)))
|
6 | // write data
|
7 | SPDR = data;
|
8 | while(!(SPSR&(1<<SPIF)))
|
9 | CSPASSIVE; //ss high
|
10 | }
|
11 |
|
12 | void spi_init()
|
13 | {
|
14 | ...
|
15 | SPCR = (1 << SPE) | (1 << MSTR);
|
16 | SPSR |= (1 << SPI2X);
|
17 | ...
|
18 | }
|
Hat einer auf die schnelle eine Idee? Kann ich das Überhaupt testen ohne
"Buspartner"?
Grüße