Mcp 23017 and Pic 16f877


Closed Thread
Results 1 to 17 of 17

Hybrid View

  1. #1
    Join Date
    Apr 2011
    Location
    BELGIQUE
    Posts
    12

    Default Mcp 23017 and Pic 16f877

    Hello everyone,
    I'm new to this forum and I would use a MCP23017 with a 16F877.
    Not knowing the MCP23017, I initially ordered the release of the MCP23017 in PBP.
    Could you please give me an example of code that could unlock and so I understand.

    In the wait for your answers, thank you in advance.

    Claudy

  2. #2
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Mcp 23017 and Pic 16f877

    CLAUDY , Is the MCP23017 not some sort of I/O expander from MicroChip? You do not need PBP to use it. It is not a processor but an mearly a periferal to allow more I/O pins to be added to an exsisting processor. If the processor you are using is indeed from MicroChip then you can use some of the I2C or Shiftin/Shiftout commands to access it's registers provided if the PBP language.

    Dave Purola,
    N8NTA

  3. #3
    Join Date
    Apr 2011
    Location
    BELGIQUE
    Posts
    12


    Did you find this post helpful? Yes | No

    Default Re: Mcp 23017 and Pic 16f877

    Hello DAVE,
    Yes, I know that the MC23017 is not a processor but I forgot to say that I wish I could control the outputs from the 16F877 I2C. It would be very nice if I could have an example in PBR so I can start with that component which is new for me.

    A big thank you for your reply

    Claudy

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default Re: Mcp 23017 and Pic 16f877

    Here's an example from DaveC3.
    Just ignore the interrupt and USB portions.

    The constants and I2CREAD/I2CWRITE statements are what you need.

    http://www.picbasic.co.uk/forum/show...5720#post55720
    DT

  5. #5
    Join Date
    Apr 2011
    Location
    BELGIQUE
    Posts
    12


    Did you find this post helpful? Yes | No

    Default Re: Mcp 23017 and Pic 16f877

    Hi DT,

    Thank you for taking the time to answer me.
    I'll try this code as soon as Monday this weekend I'm in France.

    Again thank you and good weekend to all.

    Claudy

  6. #6
    Join Date
    Apr 2011
    Location
    BELGIQUE
    Posts
    12


    Did you find this post helpful? Yes | No

    Default Re: Mcp 23017 and Pic 16f877

    Hello,

    OK I managed to contact the MCP23017en I2C.
    For now, the test program the LED lights of the 2 ports following a counter made ​​by the software in the 16F877.
    I have a small question.
    When feeds it off, the LED of port B are all lit and the rest for + / - 30sec (while the PIC is running without problem) and then everything works normally.
    If I reflash the PIC everything is OK, the problem happens only when switched on.
    As if it would take some time for it to MCP23017 syncronise with I2C.

    Here is the code used

    adcon1=7 'pour que les entrées analogique du port A soient digitale

    trisa=0 'pour que RA3 soit une entrée et les autres des sorties
    trisb=0 'pour que tout le port B soit des entrées
    trisc=0 'pour que tout le port C soit des entrées

    'initialisation de LCD

    'debut code specifique 877


    DEFINE LCD_DREG PORTD 'LCD data port
    DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
    DEFINE LCD_RSREG PORTD 'LCD register select port
    DEFINE LCD_RSBIT 0 'LCD register select bit
    DEFINE LCD_EREG PORTD 'LCD enable port
    DEFINE LCD_EBIT 1 'LCD enable bit
    DEFINE LCD_BITS 4 'LCD bus size 4 or 8
    DEFINE LCD_LINES 2 'Number lines on LCD '
    DEFINE LCD_COMMANDUS 2000 'Command delay time in us
    DEFINE LCD_DATAUS 50 'Data delay time in us




    '***definition des variable pour I2C***
    DEFINE I2C_HOLD 1
    DEFINE I2C_SCLOUT 1
    define I2C_SDA PORTa.0
    DEFINE I2C_SCL PORTa.1
    Define I2C_SLOW 1 'At this clock speed this needed to be added to make it work.


    sda var porta.0 'sda est sur le porta.0
    scl var porta.1 'scl est sur le porta.1


    Addr var byte
    j var byte
    i var byte

    '================================================= =====================================

    '************* DEFINITION DU PORT A ET DU PORT B ***************
    ' Port A Registers (8 Bit Mode)
    IODIRA con $00 ' Port A Direction Bit Control Reg (suivant datasheet)
    IOLATA con $0A ' Output Latch Reg (suivant datasheet)
    'Port B Registers (8 Bit Mode)
    IODIRB con $10 ' Port B Direction Bit Control AReg (suivant datasheet)
    IOLATB con $1A ' Output Latch Reg (suivant datasheet)
    debut:
    lcdout $FE,1, "TEST MCP23017 " ;affichage ecran acceuil
    lcdout $FE,$C0, "V 1.3" ;affichage ecran acceuil
    pause 1000 ;pause pour ecran acceuil

    i2cwrite sda,scl,$40,[IODIRA,0]


    i2cwrite sda,scl,$40,[IODIRb,0]
    pause 100
    'i2cwrite sda,scl,$40,[Ipola,255]
    lcdout $FE,1, "Debut"
    for i=1 to 255

    i2cwrite sda,scl,$40,[iolata,i]
    i2cwrite sda,scl,$40,[iolatb,i]
    lcdout $FE,$C0,"i=",#i
    pause 100
    next i
    lcdout $FE,1, "Fin"
    goto debut




    end


    Thank you for your help

    Claudy
    Last edited by CLAUDY; - 29th April 2011 at 18:58.

Members who have read this thread : 0

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