
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hello, Your connections look good. I have read through the datasheet of the PCF8591 and just maybe I can help you. I have written a test program according to the data sheet. I canÂ’t test it but maybe it will work. Let me know how it works out. Greetings, H.J. Windt '* PCF8591 Example b1.0 for CCIUM2.01 with CCIAB2.0 *' '**************** I/O PORTS ****************' define lcd_backlight_off port[16] '*******************************************' '**************** A/D PORTS ****************' '*******************************************' '**************** D/A PORTS ****************' '*******************************************' '**************** VARIABLES ****************' define configuration byte[1] define iic_nack bit[7] define iic_nack_count byte[2] define pcf8591_i2c_address byte[3] define pcf8591_ad0 byte[4] define pcf8591_ad1 byte[5] define pcf8591_ad2 byte[6] define pcf8591_ad3 byte[7] '*******************************************' '**************** CONSTANTS ****************' '*******************************************' '****************** SETUP ******************' put 0 : print"#ON_LCD#";"#INIT#";"#CLR#";"#OFF#"; : lcd_backlight_off = off '*******************************************' '***************** PROGRAM *****************' #start pcf8591_i2c_address = 144 gosub get_pcf8591_ad_data print"#ON_LCD#"; print"#L101#";"ad0=";pcf8591_ad0;" ad1=";pcf8591_ad1;" "; print"#L201#";"ad2=";pcf8591_ad2;" ad3=";pcf8591_ad3;" "; print"#OFF#"; goto start '*******************************************' '*************** SUBROUTINES ***************' #get_pcf8591_ad_data print"#ON_IIC#"; print"#START#"; put pcf8591_i2c_address put &b01000100 print"#STOP#"; print"#OFF#"; gosub check_iic_nack if iic_nack then goto pass_reading_pcf8591_data print"#ON_IIC#"; print"#START#"; put pcf8591_i2c_address + 1 get pcf8591_ad0 'start conversion of ad1' get pcf8591_ad1 'start conversion of ad2' get pcf8591_ad2 'start conversion of ad3' get pcf8591_ad3 'start conversion of ad0' get pcf8591_ad0 'read ad0' get pcf8591_ad1 'read ad1' get pcf8591_ad2 'read ad2' get pcf8591_ad3 'read ad3' print"#STOP#"; print"#OFF#"; gosub check_iic_nack #pass_reading_pcf8591_data if iic_nack_count > 3 then gosub no_ack_from_pcf8591 if iic_nack then goto get_pcf8591_ad_data return #check_iic_nack print"#ON_CONFIG#"; get configuration if not iic_nack then goto pass_iic_nack_clear iic_nack = 0 put configuration iic_nack = 1 iic_nack_count = iic_nack_count + 1 print"#OFF#"; return #pass_iic_nack_clear iic_nack_count = 0 print"#OFF#"; return '*******************************************' '******* INITIALIZATION SUBROUTINES ********' '*******************************************' '********* CALIBRATION SUBROUTINES *********' '*******************************************' '****************** DATA *******************' '*******************************************' '************* ERROR MESSAGES **************' #no_ack_from_pcf8591 beep 1,1,1:beep 10,1,1:beep 1,1,1:beep 10,1,1 print"#ON_LCD#"; print"#CLR#"; print"IIC ERROR:"; print"#L201#"; print"PCF8591 NACK"; pause 300 print"#CLR#"; print"#OFF#"; return '*******************************************' |
| Antwort schreiben |