Gast
#2821065
Hey Leute, ich arbeite mit dem ADS1298 von TI und einem ATMega128 und die beiden kommunizieren über SPI. Jetzt möchte ich insgesamt 72-Bit bzw. 9 Byte, die der ADS1298 bitweise bei jeder steigenden SCLK-Flanke in das SPDR Register des ATMega128 ausgibt, lesen. Und zwar möchte ich das so machen, dass ich jeweils 3 Byte in einer "signed long" - Variable speichere. Ich habe vorher noch nicht mit SPI gearbeitet aber die Verbindung und Konfiguration habe ich schonmal. Jetzt habe ich gelesenen, dass man bevor man das SPDR Register lesen kann immer ein Dummybyte senden muss, also folgendermaßen: // SPI: Receive // ------------ unsigned char SPI_ReceiveByte(unsigned char data) { /* send dummy byte */ SPDR = data; /* wait until transmission done */ while(!(SPSR & (1<<SPIF))); /* get data from SPDR register */ data = SPDR; return data; } Ist das richtig? Um 3 Byte zu lesen und in einer Variable zu speichern müsste ich das also so machen: // SPI: Receive (3Byte) // -------------------- signed long SPI_Receive_3Byte(void) { unsigned char dummy = 0x00; signed long data = 0x00000000; SPDR = dummy; while(!(SPSR & (1<<SPIF))); data = SPDR; data << 8; SPDR = dummy; while(!(SPSR & (1<<SPIF))); data = SPDR; data << 8; SPDR = dummy; while(!(SPSR & (1<<SPIF))); data = SPDR; return data; } Viele Grüße Loomit