' ============================================================================== ' ' File...... 24LC32.BSP ' Purpose... 24LC32 control via I2C ' Author.... Jon Williams ' E-mail.... jwilliams@parallax.com ' Started... 21 MAR 2002 ' Updated... 25 MAR 2002 ' ' {$STAMP BS2p} ' {$PBASIC 2.5} ' ' ============================================================================== ' ------------------------------------------------------------------------------ ' Program Description ' ------------------------------------------------------------------------------ ' ' This program demonstrates essential I2C routines and communication with the ' Microchip 24LC32 serial EEPROM. ' ------------------------------------------------------------------------------ ' Revision History ' ------------------------------------------------------------------------------ ' ------------------------------------------------------------------------------ ' I/O Definitions ' ------------------------------------------------------------------------------ ' SDA PIN 8 ' I2C serial data line ' ------------------------------------------------------------------------------ ' Constants ' ------------------------------------------------------------------------------ DevType CON %1010 << 4 ' device type DevAddr CON %000 << 1 ' address = %000 -> %111 EE2432 CON DevType | DevAddr ' combine type and address Ack CON 0 ' acknowledge bit Nak CON 1 ' no ack bit ' ------------------------------------------------------------------------------ ' Variables ' ------------------------------------------------------------------------------ eeAddr VAR Word ' address: 0 - 4095 test VAR Nib outVal VAR Byte ' output to EEPROM inVal VAR Byte ' input from EEPROM ' ------------------------------------------------------------------------------ ' EEPROM Data ' ------------------------------------------------------------------------------ ' ------------------------------------------------------------------------------ ' Initialization ' ------------------------------------------------------------------------------ Initialize: DEBUG CLS, "24LC32 Demo", CR, CR, ' setup output screen "Address... ", CR, "Output.... ", CR, "Input..... ", CR ' ------------------------------------------------------------------------------ ' Program Code ' ------------------------------------------------------------------------------ Main: FOR eeAddr = 0 TO 4095 DEBUG CRSRXY, 11, 2, DEC eeAddr, " " FOR test = 0 TO 3 LOOKUP test, [$FF, $AA, $55, $00], outVal DEBUG CRSRXY, 11, 3, IHEX2 outVal I2COUT SDA, EE2432, eeAddr.BYTE1\eeAddr.BYTE0, [outVal] PAUSE 10 I2CIN SDA, EE2432, eeAddr.BYTE1\eeAddr.BYTE0, [inVal] DEBUG CRSRXY, 11, 4, IHEX2 inVal, " " IF (inVal = outVal) THEN DEBUG "Pass " ELSE DEBUG "Fail " ENDIF PAUSE 40 NEXT NEXT END