I2C with External Eeprom


Results 1 to 16 of 16

Threaded View

  1. #9


    Did you find this post helpful? Yes | No

    Default

    Just finished assembling a small code and still cannot work with the eeprom

    this is the code i used :

    Code:
    '****************************************************************
    
    '****************************************************************
    
    
    SSPCON.5 = 0                ; Disable SSP Module
    TXSTA.5 = 0                 ; Disable AUSART Tx
    RCSTA.7 = 0                 ; Disable Serial Port
     
    
    OSCCON = %01111110 'Internal RC w/ I/Os
    
    INTCON=0
    
    PIE1     = 0
    'PIE2    = 0
    
    PIR1 = 0   	'off
    
    CMCON= 7   	'COMPARATOR OFF          
    CVRCON= 0 	'Vref Off
    CCP1CON= 0
    
    T1CON= 0
    'T2CON = %00000100
    
    osctune=0
    
    '*****************************************************************************
    'DEFINEs
    '*****************************************************************************
    
    @ DEVICE INTRC_OSC
    @ DEVICE MCLR_OFF
    @ DEVICE PROTECT_OFF
    
    DEFINE osc 8
    
    @ DEVICE CPD_OFF
    @ DEVICE LVP_OFF
    @ DEVICE BOD_OFF
    @ DEVICE PWRT_OFF
    @ DEVICE WDT_OFF
     
    '*****************************************************************************
     
    
    '*****************************************************************************
    'ADC parameters
    
    ADCON1  =%10000000      'right justify
    ANSEL   =%00000001 	'PORTA.0 ANALOG
    ADCON0  =%11000001     
    
    '*****************************************************************************
     
    INCLUDE "modedefs.bas" 
    
    'settings for serial comm
    
    DEFINE debug_reg PORTB  
    DEFINE debug_bit 7
    DEFINE debug_baud 9600
    DEFINE debug_mode 1
    
    '*****************************************************************************
    'I/O's
     
    PORTA=0
    PORTB=0
    
    TRISA=%00000001		'PORTA.0 AS INPUT
    TRISB=%00000111		'SDA,SCL AND BUT1 AS INPUTS
     
    '*****************************************************************************
    'PINS
     
    A0    	var PORTA.0 
    a1     	var PORTA.1 
    A2    	var PORTA.2 
    A3      var PORTA.3 
    A4      var PORTA.4 
    MCLR    var PORTA.5 
    a6    	var PORTA.6 
    a7    	var PORTA.7 
    
    SDA    	var 	PORTB.0   'I2C DATA PIN
    SCL    	var 	PORTB.1   'I2C CLOCK PIN
    but1    var 	PORTB.2   'BUTTON FOR LOOP
    b3     	var 	PORTB.3
    
    B4    	var PORTB.4  
    B5    	var PORTB.5  
    B6    	var PORTB.6  
    out    	var PORTB.7
    
    '*****************************************************************************
    ' variables
    
    
    mem      var 	byte
    
    ADDR    var 	word
    m1      var 	word
    m2      var 	word
    CTW	VAR	WORD
    
    '*****************************************************************************
    
    CTW=$A0
    m1=0
    m2=0
    
    '*****************************************************************************
    
    start:
    
    I2CREAD SDA,SCL,CTW,$1,[m1]
    pause 10
    
    debug " value IN EEPROM address 1 =  ",dec m1,13,10
    
    I2CREAD SDA,SCL,CTW,$10,[m2]
    pause 10
    
    debug " value IN EEPROM address 10 =  ",dec m2,13,10
    
    I2CWRITE SDA,SCL,CTW,$1,[5]
    PAUSE 10
    
    debug " WROTE 5 at address 1 =  ",13,10
    
    I2CWRITE SDA,SCL,CTW,$10,[6]
    PAUSE 10
    
    debug " WROTE 6 at address 10 =  ",13,10
    
    
    loop:
    if but1=1 then 
    goto start
    else 
    goto loop
    endif
    
    end
    The value returned for both addresses is 257

    Just as a note, with the first code ( showned in post #4 ) the returned value was always 8 ( for any address ) and 0 when removing the pullups.

    EDIT:
    Changed the lines:

    I2CWRITE SDA,SCL,CTW,$1,[5]

    to

    ADDR=$1
    I2CWRITE SDA,SCL,CTW,ADDR,[5]

    ( as seen in Melanie's post about I2C )
    http://www.picbasic.co.uk/forum/showthread.php?t=587

    but the return value is the same
    Last edited by ruijc; - 20th February 2008 at 22:30.

Similar Threads

  1. I2C Master/Slave 16F88/16F767 working code
    By DanPBP in forum Code Examples
    Replies: 2
    Last Post: - 23rd October 2012, 22:31
  2. Can't read sequential addresses in external EEPROM
    By tjkelly in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 18th February 2010, 14:46
  3. Replies: 1
    Last Post: - 28th January 2010, 22:15
  4. Problem with I2C EEPROM addressing
    By Atom058 in forum General
    Replies: 14
    Last Post: - 3rd November 2009, 03:17
  5. HARDWARE I2C SAMPLE CODE question
    By Michael Wakileh in forum Code Examples
    Replies: 2
    Last Post: - 16th June 2009, 21:07

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