Autor Tema: ayuda comunicacion i2c  (Leído 1747 veces)

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

Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
ayuda comunicacion i2c
« en: 19 de Agosto de 2015, 18:39:17 »
hola necesito que me ayuden con un programa, en el programa tengo que enviar un pulso cuadrado hecho de ceros y unos por i2c y no se porque no funciona

#INCLUDE<P16F73.INC>
#DEFINE LED          PORTA,0
#DEFINE   SERIALENABLE SSPCON,5
#DEFINE   SSP3       SSPCON,3
#DEFINE   SSP2       SSPCON,2
#DEFINE   SSP1       SSPCON,1
#DEFINE   SSP0       SSPCON,0
#DEFINE   OVERFLOW     SSPCON,6
#DEFINE   CLOCKS         SSPCON,4
#DEFINE STA5         STATUS,5
#DEFINE   STA6         STATUS,6
#DEFINE   BUFFER       SSPSTAT,0
#DEFINE   READ       SSPSTAT,2
#DEFINE   INFLAG       PIR1,3
#DEFINE   VAR          PORTA,4
#DEFINE   LED_2       PORTB,0
#DEFINE LED_3       PORTB,1
#DEFINE LED_4       PORTB,2
#DEFINE   LED_5       PORTB,3
#DEFINE LED_6       PORTB,4
#DEFINE LED_7       PORTB,5
#DEFINE   LED_8       PORTB,6
#DEFINE   datos       PORTC,3
   
   CBLOCK       0x00
   CONTA_1
   CONTA_2
   CONTA_3
   CONTA_4


   ENDC
   


   PUERTOS
   BSF       STA5
   BCF      STA6
   CLRF    TRISB
   CLRF   TRISA
   CLRF     TRISC
   BCF       STA5
   BCF      STA6





      

   BTFSC   VAR
   CALL    RUT
   BTFSS   VAR
   CALL    RUT_2
   

   CALL   ENVIO
   CALL   I2CSLAVEMODE7
   

   GOTO     LED_1
      

   RUT
   BCF   LED_2
   BCF   LED_3
   BCF   LED_4
   BCF   LED_5
   RETURN
   
   RUT_2
   BSF   LED_2   
   BSF   LED_3
   BSF   LED_4
   BSF   LED_5
   RETURN

   
   
   LED_1
   BSF   LED
   GOTO LED_1
   

   

   I2CSLAVEMODE7
   BCF      SSP0
   BSF      SSP1
   BSF      SSP2
   BCF      SSP3
   MOVLW   0x18
    MOVWF   TRISC
   BSF      SERIALENABLE
   BCF      BUFFER
   BCF      OVERFLOW
   BSF      INFLAG
   BCF      BUFFER
   BSF      CLOCKS
   BSF      READ   
   BSF      CLOCKS
   BCF      INFLAG
   BSF      INFLAG
   BSF      CLOCKS
   BCF      READ
   BCF      INFLAG
   BCF      BUFFER
   BSF      OVERFLOW
   RETURN
   
   ENVIO
   BSF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF    datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BSF      datos
   CALL   Retardo_1ms
   BCF      datos
   CALL   Retardo_1ms
   RETURN

    
   

#INCLUDE<C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
   end

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda comunicacion i2c
« Respuesta #1 en: 19 de Agosto de 2015, 19:31:23 »
Por que enviarias una onda que podrias generar tranquilamente con cualquier pin, en ves de I2C ?

Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
Re: ayuda comunicacion i2c
« Respuesta #2 en: 19 de Agosto de 2015, 19:39:52 »
es que esa onda la tengo que enviar por i2c pero al mirar la señal que sale del circuito por el pin c3 no sale un pulso cuadrado sale una linea recta

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda comunicacion i2c
« Respuesta #3 en: 19 de Agosto de 2015, 20:00:22 »
es que justamente, si vas a usar I2C es para enviar datos. NO para hacer una onda cuadrada

Por que ? por que I2C es un protocolo, tiene un bit de inicio + uno de stop que deben respetarse, si sigue la transimision debe repetirse el bit de start. tiene un bit a Ack (como para saber si llego o no desde el otro lado), entonces si queres hacer una onda cuadrada simplemente sacas el valor que queres por el pin y listo. es ilogico tratar de hacerlo por el I2C.
No se cual es tu objetivo, a no ser que sea algo que te pidieron que sea exactamente asi, pero no es una aplicacion practica. Creo que el PWM te serviria mas que lo que estas pidiendo.

Si tenes que enviar una onda cuadrada por que no directamente la genera lo que lo recibe? Si tiene para I2C entonces deberia tenerlo.
« Última modificación: 19 de Agosto de 2015, 20:23:17 por KILLERJC »