Ik ben bezig om met een Atmel AT90S8535 microcontroller een PCF8591 (een
8 bits A/D, D/A) van Philips aan te sturen maar het lukt niet echt. Wat mij wel verbaast is dat er wel iets uit komt. Wanneer ik een waarde naar de PCF stuur (maakt niet uit welke zolang het geen nul is) dan wordt de uitgang gelijk aan 0,4 Volt. Wanneer ik een nul stuur wordt de uitgang wel 0 volt. Ik krijg geen andere waarden dan 0 Volt of 0,4 Volt want bij 255 zou hij ongeveer 5 volt moeten geven. Zoals je al raad geeft hij dan dus ook 0,4 volt. Dat is het probleemFf beschrijving van de hardware: 2 pennen van de microcontroller zitten via 10K ohm pullups naar de +5volt. Vanaf deze 2 datalijnen gaan er 2 weerstanden van 330 ohm naar de PCF8591. De spanningen op deze datalijnen heb ik gemeten en zijn 0 volt of 5 volt. Ik heb om te testen de voeding ook gebruikt als referentiespanning zonder filter, etc. De voeding komt rechtstreeks uit m'n pc. De PCH8591 is als volgt aangesloten: Pin1 n/c Pin2 n/c Pin3 n/c Pin4 n/c Pin5 Gnd Pin6 Gnd Pin7 Gnd Pin8 Gnd Pin9 Sda (via een 330 ohm weerstand naar de microcontroller en via een
10 Kohm weerstand naar +5Volt) Pin10 Scl (via een 330 ohm weerstand naar de microcontroller en via een 10 Kohm weerstand naar +5Volt) Pin11 n/c Pin12 Gnd Pin13 AGnd Pin14 +5 Volt Pin15 Uitgang Pin16 +5 VoltBascom testprogramma: Config I2cdelay = 255 Config Portb = Output Const Badreswrite = &H90 (adrespinnen hangen aan de Gnd) Const Badresread = &H91
Dim Bpcfdata As Byte I2CINIT Do I2cstart I2cwbyte Badresread I2crbyte Bpcfdata , Ack I2crbyte Bpcfdata , Nack I2cwbyte Bpcfdata I2cstop
Bpcfdata = 50 Wait 2 I2cstart I2cwbyte Badreswrite I2cwbyte Bpcfdata I2cstop
Wait 2 Bpcfdata = 0 I2cstart I2cwbyte Badreswrite I2cwbyte Bpcfdata I2cstop Wait 2 Loop En
Datasheets: