Datum:
Hallo, hat jemand schon mal dem Impedance Converter AD5934 sinvolle Werte entlocken können? Die I2C-Programmierung des geht so leidlich. Das Rücklesen der Register ergibt immer den vorher reingeschriebenen Wert aber die Messung wird nie mit "valid real/imaginary data" beendet. In Abhängigkeit des Gain Faktors erhalte ich mal 00h oder 70h aus dem Statusregister. Beide werte machen keinen Sinn. Die Programmierung mache ich laut Vorschrift: Daten Programmieren - standby - initialisierung - start sweep hier der Code dazu: // Initialisierung AD5934 TWI_Flag := TWIout(Slave, $82,$02); { Startfrequenz 1000 Hz } TWI_Flag := TWIout(Slave, $83,$0C); TWI_Flag := TWIout(Slave, $84,$49); TWI_Flag := TWIout(Slave, $85,$02); { Frequenzincrement 1000 Hz } TWI_Flag := TWIout(Slave, $86,$0C); TWI_Flag := TWIout(Slave, $87,$49); TWI_Flag := TWIout(Slave, $88,$00); Incremente 50 (1 kHz - 50 kHz) } TWI_Flag := TWIout(Slave, $89,$32); TWI_Flag := TWIout(Slave, $8A,$06); { Settings Cycles x4 } TWI_Flag := TWIout(Slave, $8B,$64); { 100 Messungen x 4 } TWI_Flag := TWIout(Slave, $81,$08); { D3 = 1, extern Clock } TWI_Flag := TWIout(Slave, $80,$B1); { Standby Mode } { D9 = D10 = 0; 2 V p-p } { D0 = 1; PGA Gain 1 } TWI_Flag := TWIout(Slave, $80,$11); { Messung initialisieren } TWI_Flag := TWIout(Slave, $80,$21); { Start Sweep } TWI_Flag := TWIout(Slave,$B0,$8F); { Command Code + Statusregister } TWI_Flag := TWIinp(Slave, TWI_Status); { lese Statusregister 8FH } If TWI_Flag = true then TWI_Error := $FF; { lesen erfolgreich } else TWI_Error := $00; { lesen fehlerhaft } endif; Joe