Autor Tema: I2C CCS C PIC18f258  (Leído 1724 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
I2C CCS C PIC18f258
« en: 21 de Julio de 2006, 18:45:05 »
Hola estoy intentando leer y escribir una EEPROM 24AA512 con el 18F258 pero no consigo que haga nada.

Tengo el siguiente conexionado:
                                                        SCL ----- RA0
                                                        SDA ----- RA1

Tengo una resistencia en cada uno de estos pines de 2200 ohm conectada a 5V y el programa es el siguiente:

#include <18F258.h>

//#fuses HS,NOWDT,NOPROTECT,NOLVP

#fuses HS,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT

#use delay(clock=20000000)

#include <Arial9.c>
#include <gclcd.h>
#include <24512.c>
//#use I2C(master,sda=PIN_A1,scl=PIN_A0,SLOW,FORCE_SW)

#define LED   PIN_A2

void main(void)
{
   unsigned int8 contraste = 65;
   int dato1,dato2,dato3;
   EEPROM_ADDRESS direccion;

   direccion = 1;

   init_ext_eeprom();         // Inicializacion EEPROM


   setup_adc_ports(NO_ANALOGS);

   gclcd_init();             // Inicialización GCLCD

   gclcd_color(BLACK);
   gclcd_gotoxy(10,10);
   printf(gclcd_putc,"Prueba I2C");

   // Escritura
   dato1 = 'H';
   write_ext_eeprom(direccion, dato1);
   delay_ms(1000);
   gclcd_gotoxy(10,20);
   printf(gclcd_putc,"Grabando:");
   gclcd_gotoxy(10,30);
   printf(gclcd_putc,"%x,%c",dato1,dato1);
   delay_ms(2000);

   // Lectura

   dato2 = read_ext_eeprom(direccion);
   delay_ms(1000);
   gclcd_gotoxy(10,40);
   printf(gclcd_putc,"Leyedo");
   gclcd_gotoxy(10,50);
   printf(gclcd_putc,"Value: %x,%c",dato2,dato2);

   do{
   delay_ms(1000);
   output_high(LED);
   delay_ms(1000);
   output_low(LED);
     }while (true);

}

En la libreria 24523.c tengo los mismos pines que en el programa.

La cuestion es que no consigo leer ni escribir y he probado muchas cosas pero nada.

¿Alguien ve algo raro en el programa?

Puede ser el PIC que no sea compatible con el CCS. Una vez utilice un 18f2550 y un 18f4550 y no me funcionaba el SPI.
Desde que me he pasado al C solo tengo problemas jeje (espero que solo sea por ser novato y no sea por cuestion de compiladores y cosas asi)

Un saludo a todos.
BitPIC

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: I2C CCS C PIC18f258
« Respuesta #1 en: 22 de Julio de 2006, 05:40:33 »
Hola ha todos ya he resuelto el problema. Si declaraba primero las librerias del LCD y luego la de la eeprom no me funcionaba.

He declarado primero la libreria de la EEPROM y buala ya funciona, estas son pequeñas cosas que me sacan un poco de quicio  :x. Igual es por que soy un poco novato.

¿Hay alguna regla en C para declarar las librerias? bueno y todo lo demas, es para no cometer mas fallos tontos como este  :D

Un saludo
BitPIC