PCF8575 Does not work with my code....


+ Reply to Thread
Results 1 to 20 of 20

Hybrid View

  1. #1
    Join Date
    Feb 2013
    Posts
    1,099

    Default PCF8575 Does not work with my code....

    The all 3 addr pins are connected to GND, which, according to the manual, should give write address of 64. However, it has zero response to my code. Wiring is correct and ports are configured properly. Anyways, here's the complete code - I'm just trying to enable and disable all outputs at same time each 2 seconds.

    Code:
    ;----[16F1937 Hardware Configuration]-------------------------------------------
    #IF __PROCESSOR__ = "16F1937"
      #DEFINE MCU_FOUND 1
    #CONFIG
    cfg1 = _FOSC_INTOSC           ; INTOSC oscillator: I/O function on CLKIN pin
    cfg1&= _WDTE_OFF              ; WDT disabled
    cfg1&= _PWRTE_OFF             ; PWRT disabled
    cfg1&= _MCLRE_OFF             ; MCLR/VPP pin function is digital input
    cfg1&= _CP_ON                 ; Program memory code protection is enabled
    cfg1&= _CPD_OFF               ; Data memory code protection is disabled
    cfg1&= _BOREN_OFF             ; Brown-out Reset disabled
    cfg1&= _CLKOUTEN_OFF          ; CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
    cfg1&= _IESO_ON               ; Internal/External Switchover mode is enabled
    cfg1&= _FCMEN_ON              ; Fail-Safe Clock Monitor is enabled
      __CONFIG _CONFIG1, cfg1
    
    
    cfg2 = _WRT_OFF               ; Write protection off
    cfg2&= _VCAPEN_OFF            ; All VCAP pin functionality is disabled
    cfg2&= _PLLEN_OFF             ; 4x PLL disabled
    cfg2&= _STVREN_ON             ; Stack Overflow or Underflow will cause a Reset
    cfg2&= _BORV_19               ; Brown-out Reset Voltage (Vbor), low trip point selected.
    cfg2&= _LVP_OFF               ; High-voltage on MCLR/VPP must be used for programming
      __CONFIG _CONFIG2, cfg2
    
    
    #ENDCONFIG
    
    
    #ENDIF
    
    
    ;----[Verify Configs have been specified for Selected Processor]----------------
    ;       Note: Only include this routine once, after all #CONFIG blocks
    #IFNDEF MCU_FOUND
      #ERROR "No CONFIGs found for [" + __PROCESSOR__ +"]"
    #ENDIF
    
    
    'nixie led clock electronics direct drive
    
    
    DEFINE LCD_DREG PORTC  
    DEFINE LCD_DBIT 4  
    DEFINE LCD_RSREG PORTD  
    DEFINE LCD_RSBIT 6  
    DEFINE LCD_EREG PORTC  
    DEFINE LCD_EBIT 3  
    DEFINE LCD_BITS 4  
    DEFINE LCD_LINES 2  
    DEFINE LCD_COMMANDUS 1500  
    DEFINE LCD_DATAUS 200
    DEFINE ADC_BITS 10       ' Set number of bits in result
    DEFINE ADC_CLOCK 3     ' Set clock source (rc = 3)
    DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds 
    
    
     
    ADCON1=%11110011 'enable adc internal reference and justify
    FVRCON=%11001111   'set internal reference to 4.096V
    OSCCON=%01110101  'SET INTOSC TO 8MHZ
    ANSELE=%00000000 'enable adc input porte.2
    ANSELA=%00000000 'disable ADC on A
    ANSELB=%00000000 'disable ADC on B
    ANSELD=%00000000 'disable ADC on D
    TRISC=%00000000 'set PORTC as output all
    TRISD=%00000000 'set PORTD as output all
    TRISB=%00000000 'set PORTB as output all
    TRISA=%00000000 'set PORTA 2 as input, others as output
    TRISE=%00000000  'set PORTE as output all
    WPUB=%00000000 'DISABLE B PULL UPS
    OPTION_REG=%100000000 
    LCDCON=%00000000  'disable LCD controller pins
    LCDSE0=%00000000
    LCDSE1=%00000000
    LCDSE2=%00000000
    
    
    DEFINE OSC 8 'set oscillator speed  
    
    
    
    
    SCLM VAR PORTC.7: SDAM VAR PORTC.0  'pcf pins
    
    
    drk:
    I2CWRITE SDAM,SCLM,%01000000,0,[%11111111,%11111111] 'enable outputs
    pause 2000      
    I2CWRITE SDAM,SCLM,%01000000,0,[%00000000,%00000000] 'disable outputs
    pause 2000
    
    
    goto drk
    Any ideas?

  2. #2


    Did you find this post helpful? Yes | No

    Default Re: PCF8575 Does not work with my code....

    Possibly one of the address lines is dry joint so wrong address.

    Found this on forum which could be useful

    https://www.picbasic.co.uk/forum/sho...C-Ping-program

  3. #3
    Join Date
    Aug 2011
    Posts
    433


    Did you find this post helpful? Yes | No

    Default Re: PCF8575 Does not work with my code....

    Commands to the PCF should be an even number of bytes (one for each port), and you seem to be showing 3.
    What's the extra byte after the address?

  4. #4
    Join Date
    Feb 2013
    Posts
    1,099


    Did you find this post helpful? Yes | No

    Default Re: PCF8575 Does not work with my code....

    I tried to "bruteforce" all possible address locations - no change.

    The extra byte is write statement, as said in datasheet?

    Name:  writebit.jpg
Views: 704
Size:  284.6 KB

  5. #5


    Did you find this post helpful? Yes | No

    Default Re: PCF8575 Does not work with my code....

    PBP handles the read write bit if I remember correctly, leave your 0 out

    this is my code

    ADDR=78 PORTBYTE IS VALUE FOR PORTBITS

    i2cwrite sda,scl,ADDR,PORTBYTE 'ENSURE ALL OFF ON POWER UP

    So I think your code should be

    I2CWRITE SDAM,SCLM,%01000000,[%11111111,%11111111] 'enable outputs

  6. #6


    Did you find this post helpful? Yes | No

    Default Re: PCF8575 Does not work with my code....

    Meant to have said my code is for the 8 port version, the 16 port version would have another byte added after, as you have got.

    "The extra byte is write statement, as said in datasheet?"

    Your extra byte is a bit not byte.
    Last edited by aerostar; - 22nd October 2023 at 06:39.

Similar Threads

  1. Code doesn't work on 16F648A
    By Mr_Joe in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 1st September 2018, 22:09
  2. Is anyone willing to work with me to rewrite some code?
    By Ramius in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 4th June 2017, 17:23
  3. pls help me verify my code not work, why???
    By chai98a in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 18th January 2010, 09:19
  4. Why doesn't this servo code work?
    By artswan in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 5th December 2009, 22:18
  5. Why doesn't my code for 18f452 work on 18f252?
    By senojlr in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 23rd December 2005, 02:42

Members who have read this thread : 19

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts