Autor Tema: Primeros problemas con el I2c jeje, no tengo ni idea.  (Leído 2721 veces)

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

Desconectado campeon1982

  • PIC10
  • *
  • Mensajes: 22
Primeros problemas con el I2c jeje, no tengo ni idea.
« en: 11 de Noviembre de 2004, 05:08:00 »
Hola pues he hecho esto en i2c y en el proteus no me rula, si me echan un cable lo agradeceré jeje:

MAESTRO:

#include <16F73.h>
#fuses HS, NOWDT, NOPROTECT, PUT, NOBROWNOUT
#byte port_b=06
#use delay(clock=16000000)
#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3,FAST,FORCE_HW)

void main(void)
{

      int dato;
      int buffer;
      delay_ms(1000);      //retardo, por si acaso no da tiempo al esclavo a "inicializarse" para
                           //poder esperar a la informacion que le puede enviar el master
      set_tris_b( 0xFF ); //los 4 lsb del portB como entradas

      while(1)
      {
               dato=port_b;   //dato coge el valor que haya en portB
               i2c_start();      //condicion de inicio
               i2c_write(0x08);  //direccion del esclavo con el que haremos la comunicacion

               i2c_write(dato);  //enviamos un dato
               i2c_stop();    //finalizacion de la comunicacion

               delay_ms(1000);   //introducimos retardo para que no este constantemte escribiendo

       }



}



ESCLAVO:

#include <16f73.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT
#byte port_b=06
#use delay(clock=16000000)
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, ADDRESS=0X08, FAST , FORCE_HW)


void main(void)
{

      int dato;

      set_tris_b( 0x00 );// todo salidas

      while(1)
      {
         //i2c_poll solo se puede usar por hardware, detecta un byte en el buffer
         //seguidamente se llama a la funcion i2c_read que devolvera el byte recibido

         if(i2c_poll())
            {
               dato=i2c_read();

            }
         port_b=dato;
      }
}







Compilado no da ningún error, luego en proteus no rula...
Alguna help.
saludos y gracias
pd: de proteus tampoco controlo mucho jeje

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #1 en: 13 de Noviembre de 2004, 20:27:00 »
Primero que nada te recomiendo usar la directiva #use standard_io antes del #use 12c para que asegures que las salidas son salidas (cuando lo deben ser) y que las entradas tambien sean entradas (cuando lo deban ser).

Por otra parte recuerda  en el proteus conectar los cables de sda y scl con unas pullups a VCC porque de otra manera no funciona...

Si estoy mal porfavor corrijanme Giño

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #2 en: 14 de Noviembre de 2004, 07:30:00 »
El programa parece estar bien, de hehco me parece que es muy muy parecido al que hice yo, y a mi me funciona, tambien de la gente que me lo ha pedido, ninguno me ha dicho que no funcionaba, así que creo que el problema no viene por ahí, revisa el esquematico del proteus, como te dice YF-21 no olvides poner las pullups para simular bien, y cuando digo pullups, no digo ressitencias, en el buscador de componentes de proteus busca pullups para que puedas simular bien.

EL fichero de proteus que te pase no te funciono? hasta ahora no me ha dado problemas, por que no lo modificas y trabajas con ese?

Un saludo.

Desconectado campeon1982

  • PIC10
  • *
  • Mensajes: 22
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #3 en: 14 de Noviembre de 2004, 17:27:00 »
Escrito originalmente por oshow
El programa parece estar bien, de hehco me parece que es muy muy parecido al que hice yo, y a mi me funciona, tambien de la gente que me lo ha pedido, ninguno me ha dicho que no funcionaba, así que creo que el problema no viene por ahí, revisa el esquematico del proteus, como te dice YF-21 no olvides poner las pullups para simular bien, y cuando digo pullups, no digo ressitencias, en el buscador de componentes de proteus busca pullups para que puedas simular bien.

EL fichero de proteus que te pase no te funciono? hasta ahora no me ha dado problemas, por que no lo modificas y trabajas con ese?

Un saludo.


Muchas gracias señores, el problema  Oshow es que basandome en el tuyo he estado trasteando como un loco y no lo hago rular jeje. Tu esquemático va de lujo pero al sustitur tus pics por los 16f73 y cambiar un #Fuse que creo que no me vale, pues ya no funciona jeje.
Mañana me pondré otra vez con él.
Muchísimas gracias señores.
pd: ya se que este no es el foro pero si tienen alguna duda de ps2 pregúntenme a mí jeje para compensar la ayuda jeje
pd: ya os cuento que tal va esto Giño

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #4 en: 15 de Noviembre de 2004, 02:36:00 »
El programa está bien, pero amigo el 16F73 no está en PROTEUS ¿no entiendo?

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #5 en: 15 de Noviembre de 2004, 04:01:00 »

    Hola. NO había usado nunca #use stantdard_io. Lo probaré. Lo que no sé es para qué sirve #fast_io(port). Viene en inglés y no lo tengo muy claro ... Helado


Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #6 en: 15 de Noviembre de 2004, 06:49:00 »
Si no se pone nada creo recordar que asume el standar y cada vez que encuentra un input o un output te reprograma el puerto como entrada o salida.

Con fast consigues que solo lo programe una vez con lo que se gana memoria de programa y velocidad.

Haz la prueba poniendo en un programa standar y en el otro fast, mira el fichero .lst y verás el ahorro de instrucciones.

Un saludo

PD. Oye campeoncete ¿qué versión tienes del PROTEUS?

Desconectado campeon1982

  • PIC10
  • *
  • Mensajes: 22
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #7 en: 15 de Noviembre de 2004, 13:18:00 »
La versión que tengo es la 6.5 sp5 con advanced simulation.
En el código, lo que hago es sustitur el 16f73 por el 16c73b que si está en el proteus y sigue sin rular. He probado lo de standar io y nada de nada jeje
si no es mucha molestia si lo podeis probar vosotros en el proteus que es un momentiko porque yo no le veo solución Giño

Saludos y muchas gracias de nuevo

pd: yo tengo el ejemplo del i2c que rula a la perfección de oshow, cambio unos pics por otros y nada de nada jeje.

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #8 en: 15 de Noviembre de 2004, 13:54:00 »
A riesgo de parecer pesado.... has probado lo de las pullups verdad? es que como no comentas nada.... Asegurate de ponerlas porque sino no funciona.



Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #9 en: 16 de Noviembre de 2004, 00:15:00 »
Pués sí llevas razón, el 16c73 no simula el I2C. Sustitúyelo directamente por un 16F876 que es compatible pin a pin y te funcionará (no es necesario que cambies el include en los códigos del M y del S)

Desconectado campeon1982

  • PIC10
  • *
  • Mensajes: 22
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #10 en: 16 de Noviembre de 2004, 10:17:00 »
Escrito originalmente por oshow
A riesgo de parecer pesado.... has probado lo de las pullups verdad? es que como no comentas nada.... Asegurate de ponerlas porque sino no funciona.





Perdón por no decirlo, pero si que las tengo puestas. Es que lo único que he hecho es cambiar un esquemático que si rula con i2c por el 16c73 y no va Muchas risas

Bueno, seguiré intentandolo jeje
ta logo y muchas gracias a todos

Desconectado campeon1982

  • PIC10
  • *
  • Mensajes: 22
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #11 en: 16 de Noviembre de 2004, 11:11:00 »
Bueno, he hecho pruebas y POR FIN RULA EN LA PLACA jaja.
No se si lo que he hechoserán chapuzas pero ahí lo que me funciona:

MASTER

#include <16F73.h>
#fuses HS, NOWDT, NOPROTECT, PUT, NOBROWNOUT
#byte puerto_b=06
#use standard_io(c)
#use fast_io(B)
#use delay(clock=16000000)
#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3,FAST,FORCE_SW)

void main(void)
{

int dato;
delay_ms(2000); //retardo, por si acaso no da tiempo al esclavo a "inicializarse" para
//poder esperar a la informacion que le puede enviar el master
set_tris_c( 0xFF ); //port c como salidas porque lo pone en el data sheet
set_tris_b(0b00001111);
while(1)
{
dato=puerto_b; //dato coge el valor que haya en portB
i2c_start(); //condicion de inicio
i2c_write(0x08); //direccion del esclavo con el que haremos la comunicacion

i2c_write(dato); //enviamos un dato
i2c_stop(); //finalizacion de la comunicacion

delay_ms(5000); //introducimos retardo para que no este constantemte escribiendo

}



}



SLAVE

#include <16f73.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT
#use standard_io(B)
#byte puerto_b=06
#use delay(clock=16000000)
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, ADDRESS=0X08, FAST , FORCE_SW)


void main(void)
{

int dato;
puerto_b = 0b00000000;
set_tris_b( 0x00 );// todo salidas
while(1)
{


dato=i2c_read();
puerto_b=dato;



}
}


Pues eso, no se si habrá alguna burrada, pero como funciona de momento no lo toco jeje. Por cierto, según el datasheet el 16f73 soporta ssp para poder utilizar i2c_poll pero utilizando esa instrucción no funciona. El montaje digo yo que está bien porque funciona perfectamente por software.
Bueno pues muchas gracias a todos y si me surgen nuevas dudas ya os pregunto (muchas gracias de nuevo).

ta logo

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Primeros problemas con el I2c jeje, no tengo ni idea.
« Respuesta #12 en: 16 de Noviembre de 2004, 19:41:00 »
Ok, perdona por lo de las pullps, pero leí demasido rápido el hilo y no me di cuenta que estabas modificando el esquemático que funcionaba, pensé que creabas uno nuevo y no las ponías y que por ahí venía el error, por otra parte me alegro de que hayas resuelto el problema y lo tengas funcionando.

Un saludo.