/*
 * File:   main.c
 * Author: raul
 *
 * Created on 2018/06/06, 12:28
 */

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

#define _XTAL_FREQ 4000000   

#define EEPROM_ADDRESS (0b10100000)  // Valor ya con el shift un lugar a la izquierda
#define WRITE (0)
#define READ (1)

#include <xc.h>
#include"i2c_eng877.h"

void Configuration_IO (void)        //configuracion puertos entrada y salida solo una vez al incio
{
    TRISD=0x00;
    PORTDbits.RD3=0;
    
    PIE1bits.SSPIE=1;
    INTCONbits.GIE=1;
    INTCONbits.PEIE=1;
}

void main(void) 
{
    uint8_t DATO_ENVIO=0x50;        // dato a escribir en la memoria
    uint8_t POSICION=0x23;          // posicion de la memoria
    uint8_t incoming_data;          // dato a leer desde la memoria
    Configuration_IO ();
    I2C_Init();
        while(1)
        {
        DATO_ENVIO = DATO_ENVIO+1;
        Write_EEPROM (POSICION, DATO_ENVIO);
        __delay_ms(200);
        incoming_data = Read_EEPROM (POSICION);
        __delay_ms(200);
        }   
}

void interrupt isr (void)
{
    if(PIR1bits.SSPIF == 1)
    {
        PIR1bits.SSPIF = 0;
    }
    else
    {
    }
}



 