Gast
#279094
Hallo zusammen, ich bin dabei, einen 12Bit ADC (Typ AD7924) über den SPI eines ATMEGA32 zu realisieren und scheitere gerade an der SPI Kommunikation,bzw. an dem Verständis für Selbiges. Zunächst eine Generelle Frage zum SPI. Muss der ATMEGA32 im Slave Modus sein, um Daten zu empfangen? Die Verbindung sieht folgendermaßen aus: ATMEGA32 AD7924 SCLCK----->SCLCK MOSI------>DIN MISO------>DOUT !SS-------->!CS Laut Datenblatt wird der SS im Master-Mode nicht benutzt und dient daher dem ChipSelect. Was ich nicht verstehe, ist dass es nur ein Datenregister gibt für das MEGA32 SPI. Die Ansteuerung des AD7924 geschieht über ein UINT16. Also in der Art //Initialisiere ControlBits uint16_t ADC_CtrlReg=ADC_WRITE<<1|ADC_ADD1<<0|ADC_ADD0<<0|ADC_PM1<<1|ADC_PM0<<1|A DC_CODING<<1; lbyte=ADC_CtrlReg; hbyte=ADC_CtrlReg>>8; SPI_CS(0); //setzte CS aktive low //sende high byte SPDR = hbyte; loop_until_bit_is_set(SPSR,SPIF); //sende high byte SPDR = lbyte; loop_until_bit_is_set(SPSR,SPIF); SPI_CS(1); //CS auf low Laut Datenplatt des AD7924 wird zeitgleich das Ergebnis der letzten Konvertierung über DOUT geschickt (ebenfalls 16Bit). Wie kann ich diese Daten auslesen, wenn ich im selben Moment Daten sende und das gleiche Register verwende? Danke im Voraus für eure Hilfe. /Markus