ich arbeite bei einem Projekt mit dem 7705, sollte soweit von der Ansteuerung her gleich sein ... der Deine hat halt nur einen Kanal.
Ach so, die Ref-Spannung muss auch da sein und sauber (!)
Bei mir hängt der DRDY auf Int0, also nicht wundern.
Dieser wird bei mir auf fallende Flanke getriggert.
die Initalisierung:
Die Daten gibts mit:Code:Sub Ad7705_init(ad_channel) Local Subbyte As Byte Local Subbyte_2 As Byte Local Subword As Word Disable Int0 Ddrd = Ddrd And &B11111110 ' clock Ad7705_sel = 1 Ad7705_spi_array(1) = &H20 Ad7705_spi_array(1) = Ad7705_spi_array(1) Or Ad_channel 'Ad7705_spi_array(2) = &H11 Ad7705_sel = 0 Waitms 1 Spiout Ad7705_spi_array(1) , 2 Waitms 1 Ad7705_sel = 1 Ad7705_spi_array(1) = &H10 Ad7705_spi_array(1) = Ad7705_spi_array(1) Or Ad_channel Ad7705_spi_array(2) = &H44 Ad7705_sel = 0 Waitms 1 Spiout Ad7705_spi_array(1) , 2 Waitms 1 Ad7705_sel = 1 Do Loop Until Pind.0 = 0 'drdy Do Loop Until Pind.0 = 1 'drdy Ad7705_spi_array(1) = &H10 Ad7705_spi_array(1) = Ad7705_spi_array(1) Or Ad_channel Ad7705_spi_array(2) = &H44 Ad7705_sel = 0 Waitms 1 Spiout Ad7705_spi_array(1) , 2 Waitms 1 Ad7705_sel = 1 Enable Int0 End Sub
Reset für den ADC:Code:Function Ad7705_read(ad_channel) Local Sub_tempword As Word Ad7705_sel = 1 Ad7705_spi_array(1) = &H38 'ad7705_data_register_read Ad7705_spi_array(1) = Ad7705_spi_array(1) Or Ad_channel Call Write_ad7705_byte(ad7705_spi_array(1)) Ad7705_read = Read_ad7705_word() End Function
und ganz wichtig, den Clock nicht vergessen, ohne geht da nix.Code:Sub Adc_interface_reset() Disable Int0 Ad7705_sel = 0 Waitms 3 Ad7705_spi_array(1) = &HFF Ad7705_spi_array(2) = &HFF Ad7705_spi_array(3) = &HFF Ad7705_spi_array(4) = &HFF Spiout Ad7705_spi_array(1) , 4 Waitms 3 Ad7705_sel = 1 Enable Int0 End Sub
Bei mir erzeuge ich die mit nem Mega128 und Timer ... nicht besonders schön, spart aber zusätzliche Bauteile.








Zitieren

Lesezeichen