Autor Tema: Comunicacion I2C entre dos PIC con PROTON+  (Leído 12305 veces)

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

Desconectado guancho2002

  • PIC16
  • ***
  • Mensajes: 113
Comunicacion I2C entre dos PIC con PROTON+
« en: 25 de Junio de 2008, 05:14:14 »
Hola a todos, como es habitual y como se me acaban los recursos, acudo a vosotros para ver si es posible solucionar este problema que me lleva loco. Resulta que estoy intentando conectar dos PIC (18F452 y 16F88) a traves del puerto I2C pero como necesito utilizar un GLCD pues me he volcado en la programacion con PROTON. He leido como funciona el puerto, he ojeado multitud de ejemplos, pero todo lo que he encontrado o no tiene nada que ver con la comunicacion entre PICs o es en otro tipo de lenguaje, ya sea por ejemplo PBP.
La comunicacion me funciona en PBP sin ningun problema gracias a unos ejemplos que consegui en este foro pero como ya os he comentado necesito insertar fuentes grandes en el GLCD, para lo que al parecer no esta preparado. ¿Teneis algun ejemplo o alguna referencia o explicacion para hacer esta comunicacion en PROTON? por mas que intento utilizar el BUSOUT y el BUSIN, lo unico que consigo es enviar pero no recibir. Gracias de antemano.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #1 en: 25 de Junio de 2008, 09:17:44 »
Buenos dias, estimado colega te recomiendo que nos muestre la parte del condigo que estas usando para la comunicacion entre los pic que nos comentastes que es via I2c para ver si estas usan algo mal o que es realmente lo que pasa.

Saludos y espero que te podamos ayudar.
Atten. Alexander Santana.
Venezuela-Barcelona
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado guancho2002

  • PIC16
  • ***
  • Mensajes: 113
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #2 en: 25 de Junio de 2008, 10:30:42 »
Gracias Astrocar por tu interes. Acabo de hacer una modificacion de los dos ejemplos que tenia para PBP y algo mejor va pero solamente recibe la primera respuesta, despues ya se queda el puerto colgado y lo unico que recibe es basura. Para esto he puesto dos pic 16f877 y uno de ellos actua como maestro. Adjunto imagen.

MAESTRO:

DEVICE=16F877
XTAL=4

DEFINE  I2C_HOLD        1

SCL     VAR     PORTC.3            ' Clock pin
SDA     VAR     PORTC.4            ' Data pin
a      VAR   BYTE               ' Holds 8 characters read from slave



        ADCON1 = 7               ' Set PORTA and PORTE to digital

loop:

      HBSTART
        HBUSIN $02,[a]   ' Read string from slave
      HBSTOP
        Pause 500

        GoTo loop               ' Do it forever

        End

ESCLAVO:

' PicBasic Pro I2C slave program - PIC16F877/PIC-X1

DEVICE=16F877
XTAL=4

' Alias pins
scl     VAR     PORTC.3         ' I2C clock input
sda     VAR     PORTC.4         ' I2C data input

' Define used register flags
SSPIF   VAR     PIR1.3          ' SSP (I2C) interrupt flag
BF      VAR     SSPSTAT.0       ' SSP (I2C) Buffer Full
R_W     VAR     SSPSTAT.2       ' SSP (I2C) Read/Write
D_A     VAR     SSPSTAT.5       ' SSP (I2C) Data/Address
CKP     VAR     SSPCON.4        ' SSP (I2C) SCK Release Control
SSPEN   VAR     SSPCON.5        ' SSP (I2C) Enable
SSPOV   VAR     SSPCON.6        ' SSP (I2C) Receive Overflow Indicator
WCOL    VAR     SSPCON.7        ' SSP (I2C) Write Collision Detect


' Define constants
I2Caddress CON   2            ' Make our address 2

' Allocate RAM
result   VAR      BYTE         ' ADC result
datain    VAR     BYTE         ' Data in

' Initialize ports and directions
        ADCON1 = $0e         ' PORTA.0 analog, rest PORTA and PORTE pins to digital

' Initialize I2C slave mode
        SSPADD = I2Caddress      ' Set our address
        SSPCON2 = 0          ' General call address disabled
        SSPCON = $36          ' Set to I2C slave with 7-bit address

        GoTo mainloop          ' Skip over subroutines

i2cslave:                  ' I2C slave subroutine

      SSPIF = 0            ' Clear interrupt flag
        IF R_W = 1 Then i2crd   ' Read data from us
        IF BF = 0 Then Return  ' Nothing in buffer so exit
        IF D_A = 1 Then i2cwr   ' Data for us (not address)
        IF SSPBUF != I2Caddress Then Return   ' Clear the address from the buffer
        Return

i2cwr:                     ' I2C write data to us

        datain = SSPBUF         ' Put data into array
        Return

i2crd:                     ' I2C read data from us

        SSPBUF = result       ' Get data from array
        CKP = 1
        Return                    ' Release SCL line

mainloop:                  ' Main program loop
       
        IF SSPIF Then         ' Check for I2C interrupt flag
        GoSub i2cslave
        EndIF
      ADCIN 0, result         ' Read ADC channel 0
   
        GoTo mainloop           ' Do it all forever
« Última modificación: 25 de Junio de 2008, 11:08:20 por guancho2002 »

Desconectado guancho2002

  • PIC16
  • ***
  • Mensajes: 113
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #3 en: 26 de Junio de 2008, 10:46:35 »
Una ayudita? :)

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #4 en: 27 de Junio de 2008, 04:24:37 »
hola, hay algo que no entiendo que lenguaje es el que usa porque tengo entendido que en proton para la comunicacion i2c se usa busin(leer) y busout(escribir) y en picbasic es i2cread(leer) y i2cwrite(escribir) y usted me dice que ese codigo esta en picbasic pro  y esta usando busin cuando deberia usar es i2cread y segun veo si esta usando picbasic ya que declara con "var" y en proton se declara asi: "dim variable as tipo de variable", asi que me tiene enrredado. Por eso no le he dado mi comentario.

Saludos.
Atten. Alexander Santana.
Venezuela-Barcelona
« Última modificación: 27 de Junio de 2008, 04:32:37 por ASTROCAR »
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #5 en: 27 de Junio de 2008, 18:52:44 »
El usa el hardware por eso se ven los registros y el HBUSOUT y HBUSIN, pero en las variables si tienes mucha razon.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #6 en: 27 de Junio de 2008, 21:12:50 »
Que tal amigos!
Amigo guancho2002 tienes una sopa de arroz con mango  :D :D en tu ultimo post declaras las variables en pic basic pro y luego utilizas el hstart entre otras que pertenecen al proton  :-)
Tienes primero que nada definir en que lenguaje vas a realizar el proyecto, en pic basic pro o proton,
te recominedo el proton porque tienes muchas cosas buenas  :mrgreen:
Ahora bien con respecto a tu codigo el proton tiene varias instrucciones para realizar la comunicacion por i2c, entre ellas tenemos el busin, el busout, el i2cread, el i2cwrite las cuales son rutinas hechas  por software y el hbusin y hbusout, entre otras, que son soportadas solo por micros que posean modulo mssp.

Ahora bien todas ellas operan como master dentro de un bus i2c, asi que si quieres realizar una comunicacion i2c entre dos micros debes definir uno como master (aqui se te facilita la cosa  :D)
y el otro como slave, como el proton no posee ninguna instruccion que maneje el i2c como esclavo directamente, debes programar tu el micro para que opere de esa forma, la recomendacion es que utilices un micro que tenga modulo mssp para que asi puedas configurar el micro como slave mas facilmente  :mrgreen:
Vi que eso es lo que intentabas en tu primer post.
En la carpeta de samples de proton aparece un ejemplo de como configurar el pic como esclavo te recominedo que le heches una ojeada. 

Espero haberte esclarecido el panorama  :mrgreen:

Saludos

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #7 en: 28 de Junio de 2008, 21:28:15 »
bueno espero que el colega solvente esos detalles que tiene pendiente con el codigo lo que tiene es que definirce que compilador usar y leer su ayuda.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado guancho2002

  • PIC16
  • ***
  • Mensajes: 113
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #8 en: 30 de Junio de 2008, 07:41:17 »
jajajaja, vaya lio que me llevo. La solucion definitiva la quiero hacer bajo PROTON pero como los unicos ejemplos que me funcionaban estaban en PBP pues me decidi a hacer unas modificaciones y eso es lo que he adjuntado. La verdad es que no me habia dado cuenta del ejemplo que trae proton para configurar el esclavo. Voy a probar y ya os cuento. Gracias.
Un saludo. :)
« Última modificación: 30 de Junio de 2008, 07:44:33 por guancho2002 »

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #9 en: 30 de Junio de 2008, 08:30:37 »
prube y nos comentas que aca estamos al pendiente para ver si resolvistes hemano .

saludos y exito
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado opsercjl

  • PIC10
  • *
  • Mensajes: 3
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #10 en: 08 de Agosto de 2009, 06:58:28 »
hola guancho2002  :-/ , soy nuevo en el foro  :shock: y estoy tratando de comunicar dos micros por i2c en proton, la cuestion es que he buscado y no he encontrado ejemplos de como hacerlo me gustaria saber si tu lograste comunicar ambos micros  :) , ya que quiero realizar algo similar pero con un pic 12f508 mandando datos y un pic 16f628a capturando en una matriz, te agradecesria de favor si me informaras si lograste realizar tu comunicacion :).

Desconectado virgilio1100

  • PIC10
  • *
  • Mensajes: 2
Re: Comunicacion I2C entre dos PIC con PROTON+
« Respuesta #11 en: 30 de Diciembre de 2010, 07:20:41 »
Hola te escribo a ver si me puedes hechar una mano.
Me estoy iniciando con algunos conocimientos de programación y electronica.
Me gustaría hacer una plaquita electronica que autocontrole los estados (entradas-salidas)
Es decir que se pudiera configurar con mininterruptores por ej. de 8 posiciones o lo que sea.
una aplicacion en VB6 o en C++ o lo que sea, este detecta los estados (entradas-salidas)
Seria algo que hace de intermediario entre el PC y la plaquita .
Entonces estoy harto de buscar pero lo que veo son proyectos hechos muy costosos y demasiado para mi,
yo no quiero apagar o encender, sino ver el estado de estos configurando lo que vaya a contectar, con un mininterruptor
de 8 posiciones por ej.
¿Hay kits hechos ?
Te agradeceria me orientaras o donde puedeo comprar
Feliz año y muchísimas gracias de antemano.
Un saludo.