Autor Tema: UART y Interrupciones RX en ASM  (Leído 4346 veces)

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

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
UART y Interrupciones RX en ASM
« en: 25 de Marzo de 2004, 19:14:00 »
Hola GENIOS!!!
Estoy intentando hacer miles de testeos en transmisión de datos
por puerto serie....
Conectando mi circuito con hiperterminal, modem, y cualquier dispositivo que tenga puerto serie....

Mi idea, es hacer un programa que snifee el puerto.

en principio, el proyecto está basado en PBP, pero el handler de interrupciones, está en ASM.
Mis conocimientos de asm, son muy bajos, lo suficiente, para leer, y entender algo del código, pero no para desarrollar intuitivamente, sin ayudas....

Necesito una pequeña función, para introducir en el handler de interrupción, y asi poder gestionar la entrada de datos por RX en la uart de un pic16f876.
después de mucho pelear, ya he conseguido hacer cositas usando el HSERIN, pero me gustaría depurar esta parte del código al maximo, y creo que en asm, puedo ahorrar gran cantidad de espacio de mamoria al código, y mejorar el funcionamiento de mi programa.

la idea es dejar la interrupción en espera de recivir datos, y en el momento que lleguen esos datos,  interpretar lo que el programa deba hacer.

la idea principal, es generar mi propio set de comandos AT, con los que poder actuar sobre las distintas salidas del pic
por ejemplo
AT+PA0 ON
AT+PA1 ON
AT+PA2 ON
AT+PA3 ON
....
 
ALGUNA IDEA???
O algún sitio por donde empezar a hacerlo en ASM???

Un pequeño ejemplo de manejo de interrupción y manejo de errores de la UART???

Muchas Gracias de antemano.


Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: UART y Interrupciones RX en ASM
« Respuesta #1 en: 25 de Marzo de 2004, 19:46:00 »
Ah, se me olvidaba...!!!!
El proyecto lo stoy haciendo con los siguientes perámetros...
9600 8N1
Sin control de flujo....

TNKS

Desconectado _ARM_

  • PIC10
  • *
  • Mensajes: 3
RE: UART y Interrupciones RX en ASM
« Respuesta #2 en: 06 de Abril de 2004, 03:24:00 »
  HOLA Q TAL!!!

Haber yo utilizo interrupción para RX y sin int para TX también a 9600 8n1

Cuando llega una int guardo el caracter en RAM y salgo asi de facil, cuando tengo un string terminado con [0d]

lebanto un flag y en el main leo el comando.

 


Mi configuración:

;------------------------------------
;   CONFIGURACION INTERRUP

   BSF INTCON,GIE   ;ACTIVA INTERRUPCIONS GLOBALS
   BSF INTCON,PEIE ;ACTIVA INTERRUPCIONS DELS PERIFERICS
   BCF INTCON,INTE ;DESACTIVA INTERRUPCIO RB0
   BCF INTCON,RBIE ;DESACTIVA INTERRUPCIO PORT B

   ;-------CONFIGURACIO INTERRUPCIONS UART---

   BSF STATUS,RP0   ;BANK 1
   
   BCF PIE1,TXIE   ;DESACTIVA INT TRANSMISIO DE UART
   BSF PIE1,RCIE   ;ACTIVA INT RECEPCIO DE UART
   
   BCF STATUS,RP0   ;BANK 0

;_______CONFIGURACIO TRANSMISIO____________

   BSF STATUS,RP0   ;BANK 1

         ;SELECCIONA 8 BITS
         ;HABILITA TRANSMISIO
         ;SELECCIONA ASYNCRONO MODO
         ;LOW SPEED

   MOVLW B"00100000"
   MOVWF TXSTA   
   BCF STATUS,RP0   ;BANK 0

;-------CONFIGURACIO RECEPCIO------

         ;HABILITA PORT SERIE
         ;REBEM 8 BITS
         ;RECEPCIO CONTINUA
         ;SENSE DETECCIO DE DIRECCIO
   MOVLW B"10010000"
   MOVWF RCSTA
;----------------------------------------------
;----------------------------------------------
;   CARREGUEM CONSTANT PER GENERAR ELS BAUDS

   BSF STATUS,RP0   ;BANK 1
   MOVLW D"18"   ;AL FUNCIONAR A 12MHZ 18 SERA 9600 BUADS
   MOVWF SPBRG
   BCF STATUS,RP0   ;BANK 0
;----------------------------------------------


Espero haberte ayudado

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: UART y Interrupciones RX en ASM
« Respuesta #3 en: 08 de Abril de 2004, 16:45:00 »
a ver, si eres capaz de darme una solución...
viendo la parte de código que me has dejado, algo mas has aclarado, pero aun, estoy un poco confuso..... a ver si consigo que me funcione...
ahora, tengo el problema... si habilito la interrupción del timer0, al usar la función hserout... manda los valores que le viene en gana...
supongo que será un problema al restaurar los registros... pero aun no se exactamente cual que el problema...

en el subforo de pbp en el post titulado
hserin & hserout todo un dilema, he dejado el código con el que ando haciendo las pruebas.... A ver si ves algo que esté mal...

Muchas gracias de antemano...
Un Saludo.