Hey Leute!
Ich habe meinen atmega32 mit einem IC (CS5463) verbunden. Der IC ist ein
Messchip, der mir Daten wie z.b. Strom oder Spannung übergibt. Dazu muss
ich bestimmte Register auslesen und im Datenblatt steht, dass ich
während dem auslesen ein SYNC1 (0xFF) Packet senden muss. (die
Verbindung ist übrigens SPI)
Ich Frage mich nur halt, wie das genau zu geschehen hat?
Entweder:
1 | data = spi_get();
|
2 | spi_send_sync1();
|
oder
1 | spi_send_sync1();
|
2 | data = spi_get();
|
oder
mit
1 | uint8_t spi_get(void)
|
2 | {
|
3 | // Warte bis fertig Empfangen
|
4 | SPDR = 0xFF; // NUR TEST
|
5 | while(!(SPSR & (1<<SPIF)) ); // !!!!!!!!!!!!!!!!!!!!!! TIMEOUT EINBAUEN
|
6 | return SPDR;
|
7 | }
|
Also sprich das ich die Daten in den Puffer gebe und dann gleichzeitig
immer 1 Bit von mir zu IC übertragen wird und 1 Bit von IC zu mir. Für
mich wäre die 3te Variante die sinnvollste, allerdings bekomme ich die
ganze zeit 0xFF zurück, was nicht stimmen kann. (wenn ich z.b. MISO oder
MOSI unter der Übertragung ausstecke bekomme ich weiterhin 0xFF) Sprich
ich würde sagen, dsa ich irgendwo etwas bei der Übertragung bzw.
Ansteuerung etwas falsch mache.
Findet jemand den Fehler? Wenn jemand das ganze Projekt möchte, muss er
es nur sagen!