Friday, March 1, 2013
USO DEL I2C EN UNA MEMORIA EEPROM 24C01B C18
// USO DEL I2C EN UNA MEMORIA EEPROM 24C01B
//Problemas:
// Si se manda una cadena sin temporizacion osea sin tiempo
// de transiscion puede fallar fisicamente.
// POR EJEMPLOS
// ENVIAR DATO /
// RETARDO DE 200mS /
// ENVIAR DATO /
// RETARDO DE 200mS /
// y asi /
/////////////////////////////////////////////////////////////
#include
#include"eepromdr.h"
#include
#include
//#include
#include
//Fuses para trabajar con 8Mhz/////////
#pragma config FOSC = INTOSCIO_EC //usamos 8Mhz internos
#pragma config PLLDIV = 5 //PLL DIV 20Mhz/5=4Mhz
#pragma config CPUDIV = OSC1_PLL2 //CPUDIV1 96Mhz/2=48Mhz
#pragma config USBDIV = 1 //tRABAJAMOS CON USB CLOCK divido en 1
#pragma config VREGEN = OFF //Trabajamos sin regulador interno 3.3v para usb
#pragma config FCMEN = OFF, IESO = OFF
#pragma config PWRT = ON, BOR = OFF,BORV = 0
#pragma config WDT = OFF,WDTPS = 32768
#pragma config MCLRE = ON, LPT1OSC = OFF,PBADEN = OFF,CCP2MX = ON
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF
#pragma config CP0 = OFF,CP1 = OFF,CP2 = OFF
#pragma config CPB = ON, CPD = ON
#pragma config WRT0 = OFF,WRT1 = OFF,WRT2 = OFF
#pragma config WRTB = OFF,WRTC = OFF,WRTD = OFF
#pragma config EBTR0 = OFF,EBTR1 = OFF,EBTR2 = OFF
#pragma config EBTRB = OFF
//Variables a usar//////
unsigned char msje;
////////////////////////////////////////////
//Funcion de configuracion
//USART I2C
////////////////////////////////////////////
void config(void){
TRISC=0X80;
//Configuramos UART
OpenUSART( USART_TX_INT_OFF & //Disable Interrupts
USART_RX_INT_OFF & //----------------
USART_ASYNCH_MODE & //Modo asincronico
USART_EIGHT_BIT & //8 bit
USART_CONT_RX & //resepcion continua
USART_BRGH_HIGH ,
51); //FOSC / (16 * (spbrg + 1))
//spbrg=((FOSC/BAUD)/16)-1
//51=((8Mhz/9600)/16)-1
//cONFIGURACION DEL I2C
OpenI2C(MASTER , //I2C como master
SLEW_ON //a 400khz
);
SSPADD=4; //CLOCK=FOSC/(4*(SSPADD+1)
//SSPADD=[(FOSC/CLOCK)/4]-1
//Velocidad de 400khz de 8Mhz
INTCONbits.GIE=0; //Desactivamos interrupciones globales
}
////////////////////////////////////////////
//FUNCION PRINCIPAL
///////////////////////////////////////////
void main(void){
OSCCON=0x70; //EMPIEZA A CORRER A FOSC=8Mhz
config();
putrsUSART("Programa para leer y escribir en una memoria eeprom \r\n");
putrsUSART("Escribiendo....\r\n");
Delay1KTCYx(100);
//--------Guarda datos en la eeprom--------------///
WriteEE(0X02,'O');
putrsUSART("LEIENDO.....\r\n");
//--------LEE MEMORIA EEPROM---------------------///
msje=ReadEE(0x02);
putcUSART(msje);
while(1);
}
I have read so many posts regarding the blogger lovers however this piece of writing is really a nice paragraph, keep it up.
Visit my web blog ... forex Systems