Autor Tema: Marcador I2C con 16F876  (Leído 2447 veces)

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

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Marcador I2C con 16F876
« en: 19 de Agosto de 2014, 06:49:51 »
Hola necesito ayuda. Intento hacer un marcador deportivo I2C con un 16F876 pero no me funciona...no tengo mucha experiencia en C. La representación numérica es con los PCF8574A y representan el Tiempo, Puntos equipo A, Puntos equipo B y número de juego. Les dejo el código para ver donde esta el fallo o fallos. Intento simularlo con Proteus pero nada de nada...ya no se que hacer. Gracias por ayudarme. Adjunto el código.

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: Marcador I2C con 16F876
« Respuesta #1 en: 19 de Agosto de 2014, 07:00:51 »
Adjunto simulación que no me funciona. Gracias por ayudarme.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Marcador I2C con 16F876
« Respuesta #2 en: 19 de Agosto de 2014, 14:15:38 »
Que tal fran2v,

He visto tu codigo y tu esquematico-simulacion.
El primer error que debes corregir, es que tu esquematico y tu codigo no corresponden con respecto a los pines que estas usando.

1) Estas declarando en tu codigo que vas a usar el hardware del I2C, por lo que los pines de esto son el RC3 que es SCL y el RC4 que es el SDA. Pero tu estas conectando a RA0 y a RA1.
2) Los pulsadores los tienes conectados en los puertos RB0 al RB4, pero en tu codigo estas usando el R1, RB2, RB4 y RB5. Esto es lo primero que debes corregir.

Despues de esto te recomiendo que comineces haciendo el manejo de los PCF8574A para que vayas entendiendo poco a poco su funcionamiento.

Saludos,

elreypic.

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: Marcador I2C con 16F876
« Respuesta #3 en: 20 de Agosto de 2014, 05:25:43 »
Muchas gracias por tus indicaciones, rectificare y te comento.....
Salu2

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: Marcador I2C con 16F876
« Respuesta #4 en: 20 de Agosto de 2014, 06:21:57 »
Ya no me aclaro... cuando tengas tiempo y sin prisas.....me puedes ayudar un poco más.....Gracias.
He realizado las rectificaciones indicadas pero nada de nada..... Estoy muy ilusionado con este proyecto.....agradecería ayuda  detallada para "TORPES".
(Por desgracia mi ordenador se ha estropeado y he perdido muchos datos) ....si...si...la copia de seguridad.... que nunca hago.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Marcador I2C con 16F876
« Respuesta #5 en: 20 de Agosto de 2014, 19:36:44 »
que tal fran2v,

Te he hecho rapidamente un timer de 0 a 9 segundos usando un display de 7 segmentos y el PCF8574A.
Adjunto encontraras los archivos de simulacion y el codigo que tu puedes compilar usando el compilador C de CCS.
Otro error que vi en tu codigo es la direccion del PCF8574A que es diferente al PCF8574. Te daras cuenta de eso al abrir el codigo que te he enviado.

Saludos y espero esto te sirve de ayuda.

elreypic.

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: Marcador I2C con 16F876
« Respuesta #6 en: 21 de Agosto de 2014, 06:40:41 »
Por lo que creo ver el modo de escritura y dirección lo tengo mal. Es correcta esta rectificación según el esquema que adjunte anteriormente...?

//CONFIGURACIN DE DISPLAYS 7 SEGMENTOS//
  void d0 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01110000);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[V0]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
  void d1 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01110010);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[V1]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d2 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01110100);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[L0]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d3 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01110110);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[L1]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d4 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01111000);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[S0]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d5 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01111010);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[S1]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d6 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01111100);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[M0]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }
    void d7 (void)
    {
    restart_wdt();
    i2c_start();      // Condición de inicio en el bus I2C
    i2c_write(0b01111110);   // Dirección (modo escritura) del dispositivo PCF8574
    i2c_write(display[M1]);      // Se envía el dato al PCF8574
    i2c_stop();         // Condición de stop
  }

Desconectado fran2v

  • PIC10
  • *
  • Mensajes: 24
Re: Marcador I2C con 16F876
« Respuesta #7 en: 27 de Agosto de 2014, 15:44:39 »
Muchas gracias por tu atención
Salu2


 

anything