Autor Tema: mejor opcion POLLING o INTerrupcion  (Leído 2646 veces)

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

Desconectado bigwill45

  • PIC10
  • *
  • Mensajes: 15
mejor opcion POLLING o INTerrupcion
« en: 19 de Febrero de 2008, 14:07:31 »
hola lista ,necesito sus recomendaciones
tengo lo siguiente
pic 16f84a , comunicacion serie con max232
en el puerto a ra3 y ra4 conectado el max232
en el puerto b rb6 y rb7 un relay ssr en cada uno
la idea es que cdo se tx un 1 activar rb6 y al tx un 2 activar rb7( los caracteres a tx ,  cualquiera, puse 1 y 2 por citar un ejemplo)
de momento, tengo un call que apunta a un btfs para saber si entro el bit de start  y ahi hacer el analisis de que fue lo que llego
que seria mejor emplear esta tecnica de polling o mejor utilizar interrupcion por rb0, si  utilizo esta ultima, tendria que conectar la entrada de datos provenientes del max232 a rb0?
su orientacion por favor
salu2
willy

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mejor opcion POLLING o INTerrupcion
« Respuesta #1 en: 19 de Febrero de 2008, 14:30:35 »
Hola.

Podría ser. Todo depende de si necesitas que el PIC haga otras cosas. Sino, puedes dejarlo polleando que no molestaría.

Saludos


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado bigwill45

  • PIC10
  • *
  • Mensajes: 15
Re: mejor opcion POLLING o INTerrupcion
« Respuesta #2 en: 19 de Febrero de 2008, 14:41:12 »
muchas gracias lo que sucede es que con lo que tengo hecho me da un error de que el stack esta lleno
y pense que quiza seria ese el problema,


         LIST     p=16F84A                     ;Tipo de procesador.
    INCLUDE  <P16F84A.INC>                          ;Definiciones de registros internos.
   
;                     ************ Zona de datos******************************

      CBLOCK 0X0C
      GuardaDato
           rs232_ContadorBits
           rs232_Dato
           R_ContaA
      rs232_inicializa
      rs232_LeeDato
      activaRB7
           ENDC

      #DEFINE rs232_in   PORTA,4         ; donde se reciben los datos
      #DEFINE rs232_out       PORTA,3           ; donde se envian  los datos

   
;   ********ZONA DE CODIGOS******************
      ORG         0
inicio
      call         rs232_inicializa

Principal   
      call         rs232_LeeDato
      movwf         GuardaDato

      END

      


;    ********Rutina Inicilizar el RS232************


rs232_inicializa
      bsf         rs232_out       ; Salida en alto para reposo
      bsf         STATUS,RP0
      bsf           rs232_in        ; Se configura esta linea como entrada
      bcf         rs232_out       ; Se configura esta linea como salida
      bcf         STATUS,RP0
return   


;   ****** Rutina Leer Datos RS232***************

rs232_LeeDato
      movlw         d'8'            ; cantidad de bits a recibir
      movwf         rs232_ContadorBits
rs232_EsperaBitStart
      btfsc         rs232_in         ; lee la entrada y espera que sea 0
      goto         rs232_EsperaBitStart
      call          retardo_100micros
      call         retardo_50micros
rs232_leeBit
      bcf         STATUS,C         ; lee el Pin, en principio debe ser cero
      btfsc         rs232_in    ; comprueba si realmente es cero
      bsf         STATUS,C    ; cambia a 1
      rrf         rs232_dato,F    ; introduce el bit en el registro de lectura
      call         retardo_100micros ; lee los siguientes bits en un periodo mas tarde
      decfsz         rs232_contadorbits,F
      goto         rs232_leeBit
      call         retardo_200micros ; esperar un tiempo de dos bit de parada
      movf         rs232_dato,W     ; el resultado al registro W
      return

;        ********* SUBRUTINAS DE RETARDO **********

retardo_200micros                      ; 2+1+1+2+(2+3k)=200cm= 200ms(para K=64 a 4mhz)
       nop
      movlw         d'64'
      goto         retardomicros

retardo_100micros
      movlw         d'31'
      goto         retardomicros
retardomicros
      movwf         R_ContaA     ; Aporta un ciclo de maquina
rmicros_bucle
      decfsz         R_ContaA,F
      goto         rmicros_bucle
      return
con este codigo, me da ese error
salu2
willy

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mejor opcion POLLING o INTerrupcion
« Respuesta #3 en: 19 de Febrero de 2008, 14:51:40 »
1)

rs232_inicializa
      bsf         rs232_out       ; Salida en alto para reposo
      bsf         STATUS,RP0
      bsf           rs232_in        ; Se configura esta linea como entrada
      bcf         rs232_out       ; Se configura esta linea como salida
      bcf         STATUS,RP0
return   

¿Cómo podés saber que efectivamente la instrucción

bsf         rs232_out       ; Salida en alto para reposo

va a poner a 1 el bit asignado si todavía no lo configuraste como salida?

2)
Principal   
      call         rs232_LeeDato
      movwf         GuardaDato

Proba agregando un goto Principal despues de eso... quedando:
Principal   
      call         rs232_LeeDato
      movwf         GuardaDato
      goto       Principal

Saludos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado bigwill45

  • PIC10
  • *
  • Mensajes: 15
Re: mejor opcion POLLING o INTerrupcion
« Respuesta #4 en: 19 de Febrero de 2008, 15:11:14 »
es decir, que primero tendria que acceder al banco 1
con un trisb definir ra3 como salida
y despues poner en estado alto ?
de eso se trata ??

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mejor opcion POLLING o INTerrupcion
« Respuesta #5 en: 19 de Febrero de 2008, 15:22:26 »
Claaaro.

;)
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything