Autor Tema: Como chequear una señal de RX en el PIC?  (Leído 5294 veces)

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

Desconectado mestanza

  • PIC10
  • *
  • Mensajes: 22
Como chequear una señal de RX en el PIC?
« en: 15 de Febrero de 2013, 20:57:54 »
Mi problema es el siguiente: Entre el TX y RX del PIC16f887 coloque un switch, cuando mando un mensaje al RX este PIC ejecuta la ultima señal que le mande al mismo.. Como hago para cuando mi RX no este mandando una señal (Ejemplo, levante el switch dejando un abierto), este deje de ejecutar la ultima señal que se le envio?

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Como chequear una señal de RX en el PIC?
« Respuesta #1 en: 15 de Febrero de 2013, 22:36:41 »
hola mestanza no se que tanta experiencia tengas con pic pero si quieres que alguin del foro te ayude trata de darte a entender mejor, pon que lenguaje usas compilador
etc son datos muy importantes

mas o menos como te entendi es que tienes puenteado rx con tx del pic mediante un swich y si mandas algo al pic mediante tx el rx lo lea y ejecute algo y cuando tu quieras parar
la sentencia o  condicion

si es asi tu ejemplo o no

saludos

Desconectado mestanza

  • PIC10
  • *
  • Mensajes: 22
Re: Como chequear una señal de RX en el PIC?
« Respuesta #2 en: 16 de Febrero de 2013, 02:15:12 »
hola mestanza no se que tanta experiencia tengas con pic pero si quieres que alguin del foro te ayude trata de darte a entender mejor, pon que lenguaje usas compilador
etc son datos muy importantes

mas o menos como te entendi es que tienes puenteado rx con tx del pic mediante un swich y si mandas algo al pic mediante tx el rx lo lea y ejecute algo y cuando tu quieras parar
la sentencia o  condicion

si es asi tu ejemplo o no

saludos

Hehhe tienes razon... Estoy programando en assembler, te dire especificamente lo que hace mi programa:
tengo 2 pics 16F887 (PIC1=TX y PIC2=RX), en el PIC1 mando una señal por un xbee o por un cable al PIC2 (donde hay conectado un motor), entre TX y RX hay un switch. Ocurre lo siguiente, mando a encender un motor desde el PIC1  al PIC2, levanto el switch y el PIC2 se queda funcionando con la ultima señal que le envio el PIC1. Mi pregunta es: Como mando a apagar el PIC2 si no esta recibiendo ninguna señal por RX?
Gracias

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Como chequear una señal de RX en el PIC?
« Respuesta #3 en: 16 de Febrero de 2013, 13:05:57 »
hola mestanza estas usando el puerto serial por hardware o por software yo no utilizo assembler bueno muy poco soy novato pero si lo he implementado la comunicacion entre 2 pics

y creo que para tu ejemplo no necesitas el swich mira si tu conectas el pin tx (pic1) al rx (pic2) entonces digamos que tu mandas del pic1 una letra por desir asi (a) entonces el pic2
al llegar esta letra ejecutara una rutina o proceso y asi por si quieres enviar diferentes letras u caracteres para hacer algunas cosas

bueno y si aun necesitas mas precicion digamos que tienes un proceso donde estas ejecutando algo y no tienes tiempo de leer el puerto serie del pic (bia hardware) la forma facil
seria implementar una interrupcion por recepcion de datos asi cada que entre un dato al buufer de entrada del puerto serie entrara la interrupcion leeras el dato que llego y ejecutaras la sentencia desiada

saludos espero ayudarte con esta explicacion breve
 

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Como chequear una señal de RX en el PIC?
« Respuesta #4 en: 16 de Febrero de 2013, 13:53:06 »
Hola mestanza!
Tu lo que quieres es prender y apagar el motor conectado al pic2?
Si es asi puedes hacer esto por ejemplo:
Envias la letra 'a' desde el pic1 al pic2, cuando este la reciba manda a prender el motor.
y luego envias la letra 'b' desde el pic1 al pic2 cuando este la reciba apagas el motor.

Si tienes un switch colocado en el pic1 para enviar la data al pic2 de encender o apagar el motor puedes usar un if else pero haciendolo en asemmbler, asi:
si el boton esta pulsado envio 'a' y sino envio 'b'   :mrgreen:

Saludos

Desconectado mestanza

  • PIC10
  • *
  • Mensajes: 22
Re: Como chequear una señal de RX en el PIC?
« Respuesta #5 en: 16 de Febrero de 2013, 18:16:05 »
hola mestanza estas usando el puerto serial por hardware o por software yo no utilizo assembler bueno muy poco soy novato pero si lo he implementado la comunicacion entre 2 pics

y creo que para tu ejemplo no necesitas el swich mira si tu conectas el pin tx (pic1) al rx (pic2) entonces digamos que tu mandas del pic1 una letra por desir asi (a) entonces el pic2
al llegar esta letra ejecutara una rutina o proceso y asi por si quieres enviar diferentes letras u caracteres para hacer algunas cosas

bueno y si aun necesitas mas precicion digamos que tienes un proceso donde estas ejecutando algo y no tienes tiempo de leer el puerto serie del pic (bia hardware) la forma facil
seria implementar una interrupcion por recepcion de datos asi cada que entre un dato al buufer de entrada del puerto serie entrara la interrupcion leeras el dato que llego y ejecutaras la sentencia desiada


saludos espero ayudarte con esta explicacion breve
 

El switch lo estoy colocando por la siguiente razon:
Como comente, estare usando la antena Xbee, y por alguna razon me alejo mas de 30metros del RX, este seguira con la ultima instruccion que le envie, y la idea es que si mi RX ya no recibe señales, se apague.. y eso no lo logro aun...
Gracias igualmente

Desconectado mestanza

  • PIC10
  • *
  • Mensajes: 22
Re: Como chequear una señal de RX en el PIC?
« Respuesta #6 en: 16 de Febrero de 2013, 18:18:34 »
Publicare el codigo para que lo lean y vean si tengo algo de mas y cual seria la rutina necesaria para mandar a apagar el PIC2 (RX) y cargar con 00H (b'00000000') el PORTB:

      INCLUDE <P16F887.INC>
      LIST p=16F887

      __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _DEBUG_OFF & _IESO_OFF & _BOR_ON & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
      __CONFIG    _CONFIG2, _WRT_OFF & _BOR40V



      ORG 0X00;---especifica la posición de memoria donde residen los datos


INICIO
      BANKSEL   ANSEL;;---Se definen PORTA y PORTB como digitales
      CLRF   ANSEL
      CLRF   ANSELH

      BANKSEL   TRISA;;---Configuro todo el TRISB como salida
      CLRF   TRISB
        MOVLW   .25   ;--valor para seleccionar 9600 baudios
        MOVWF   SPBRG
        MOVLW   b'00100100'      ;Configuracion USART modo alta velocidad 9600 baud y activacion de transmision
        MOVWF   TXSTA            ;carga valor anterior en registro asociado al generador del baud rate

      BANKSEL   RCSTA
        MOVLW   b'10010000'      ;Configuracion de la usart
        MOVWF   RCSTA            ;para recepcion continua y habilitacion del USART

      BANKSEL   PORTB
      CLRF   PORTB;;---limpio mi PORTB

LEE_DATO

      NOP      ;--Se comporta como un tiempo de asentamiento
      MOVF   RCREG,W;;---Leer el buffer de recepción
      MOVWF   PORTB;;---Envio el dato al PORTB que configure como salida
      GOTO   LEE_DATO;---Ve a LEE_DATO

                END


 

anything