Nopnop
Joined: 10 Aug 2007 Posts: 7
|
I2C problem |
Posted: Thu Nov 29, 2007 2:00 pm |
|
|
Hi, I am French, sorry for my English.
I have a problem with I2C. I have two PIC 18F452 and an EEPROM 24C1025. The two PIC are MULTI_MASTER.
The first PIC write a data in EEPROM at address 0X00 and the second PIC read the data at address 0X00 then display. I use the CCS driver 241025.C
If I play each PIC the result is OK but if I play with two PIC the value display is not correct and in the EEPROM there are more values.
Now if I remove the EEPROM some values are display. It is strange.
My question: it is possible to write in the EEPROM with a PIC and to read the data with another PIC.
If anyone have an ideas
Thanks for your answers.
WRITE
Code: |
//******************************************************************************
//* NOPNOP II V2.0 *
//* Write *
//******************************************************************************
#include <18F452.h>
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20, PUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=20000000)
#use i2c(MULTI_MASTER, SCL=PIN_C3, SDA=PIN_C4, FAST, FORCE_HW)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)
#include <241025.c>
//******************************************************************************
//* CONSTANTES *
//******************************************************************************
int8 vData1;
int vStart;
//******************************************************************************
//* Programme principal *
//******************************************************************************
void main()
{
//**************************************************
//* Variables *
//**************************************************
//**************************************************
//* PARAMETRE DES PORTS DU PIC *
//**************************************************
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_wdt(WDT_OFF);
enable_interrupts(GLOBAL);
output_A(0);
output_B(0);
output_C(0);
output_E(0);
set_tris_A(0b00000001);
set_tris_B(0b10111111);
set_tris_C(0b10111011);
set_tris_E(0b00000100);
//**************************************************
//* *
//**************************************************
//init_ext_eeprom();
vData1=0x10;
while(true)
{
write_ext_eeprom(0x00,vData1++);
}
}
|
READ
Code: |
//******************************************************************************
//* NOPNOP II V2.0 *
//* Read *
//******************************************************************************
#include <18F452.h>
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20, PUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=20000000)
#use i2c(MULTI_MASTER, SCL=PIN_C3, SDA=PIN_C4, FAST, FORCE_HW)
#include <LCD_nopnop.C>
#include <241025.C>
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)
#define portA 0xF80
#define bStart *portA,0 // flag de demarrage provenant du PIC TIMER
//******************************************************************************
//* CONSTANTES *
//******************************************************************************
//******************************************************************************
//* PROCEDURES *
//******************************************************************************
//******************************************************************************
//* Programme principal *
//******************************************************************************
void main()
{
//**************************************************
//* Variables *
//**************************************************
//**************************************************
//* PARAMETRE DES PORTS DU PIC *
//**************************************************
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_wdt(WDT_OFF);
enable_interrupts(GLOBAL);
output_A(0);
output_B(0);
output_C(0);
output_E(0);
set_tris_A(0b00000001);
set_tris_B(0b10111111);
set_tris_C(0b10111011);
set_tris_E(0b00000100);
//**************************************************
//* INITIALISATIONS *
//**************************************************
// init_ext_eeprom();
lcd_init(); // Init ecran LCD
//**************************************************
//* *
//**************************************************
lcd_gotoxy(1,1);
lcd_putc(" ");
lcd_gotoxy(1,2);
lcd_putc(" ");
lcd_gotoxy(6,1);
lcd_putc("Start !");
delay_ms(500);
lcd_gotoxy(1,1);
lcd_putc(" ");
while(true)
{
lcd_gotoxy(1,1);
lcd_putc(" ");
lcd_gotoxy(1,1);
printf(LCD_PUTC,"%d",read_ext_eeprom(0x00));
}
}
|
_________________ made by www.nopnop.fr |
|