miércoles, 14 de diciembre de 2011

HCS08 - Motorola Freescale - Comunicación Serial (Enviar un dato por siempre)

Como en el blog anterior se presenta a continuación una comunicación de puerto serial en el que nuestro micro-controlador le enviara una "x" a nuestra computadora.

Materiales:
MC9S08SE4
MAX233
Cable adaptador USB-RS232
Una Tabla de Pruebas (Protoboard)
HCS08_OpenSourceBDM (Con o que se programa el micro)

A continuación el código:
;*******************************************************************
;* This stationery serves as the framework for a user application. *
;* For a more comprehensive program that demonstrates the more     *
;* advanced functionality of this processor, please see the        *
;* demonstration applications, located in the examples             *
;* subdirectory of the "Freescale CodeWarrior for HC08" program    *
;* directory.                                                      *
;*******************************************************************
; Include derivative-specific definitions
            INCLUDE 'derivative.inc'
;
; export symbols
;
            XDEF _Startup
            ABSENTRY _Startup
;
; variable/data section
;
            ORG    RAMStart         ; Insert your data definition here
ExampleVar: DS.B   1
;
; code section
;
            ORG    ROMStart
_Startup:
            LDHX   #RAMEnd+1        ; initialize the stack pointer
            TXS
            CLI                     ; enable interrupts
mainLoop:
            ;Powered by iGus
            JSR AR                ;saltamos a la etiqueta AR
            
            CICLO:                ;Etiqueta ciclo
            JSR RET               ;Salta a la etiqueta RET
            feed_watchdog         ;A limenta al perro guardian               
            BRCLR 7,SCIS1,CICLO   ;Salta a la etiqueta CICLO si el bit 7 del registro SCIS1 es cero
            LDA #$78              ;Carga en el registro A un nuemro 78 que en ASCII es una x
            STA SCID              ;Guarda el valor del registro A en el registro SCID
            feed_watchdog
            BRA CICLO             ;Siempre salta a la etiqueta ciclo
            
            AR:                   ;Etiqueta AR
                MOV #0,SCIBDH     ;Carga un cero en este registro
                MOV #31,SCIBDL    ;Carga un 31 decimal al registro
                MOV #$00,SCIC1    ;Carga un cero al registro 
                MOV #$0C,SCIC2    ;Carga una C al registro                    
            RTS                   ;Regresamos del salto
            
            RET:                  ;Etiqueta RET
            LDHX #$FFF            ;Carga en el registro H:X el número 0FFF
            RET1:                 ;Etiqueta RET1
            feed_watchdog         ;A limenta al perro guardian
            AIX #$01              ;Incrementa el registro X en 1
            CPHX #$500            ;Compara H:X con un 500 la resta es un cero si son iguales
            BNE RET1              ;Salta a etiqueta RET1 si z = 0 
            RTS                   ;Regresa del salto                       
;**************************************************************
;* spurious - Spurious Interrupt Service Routine.             *
;*             (unwanted interrupt)                           *
;**************************************************************
spurious:                           ; placed here so that security value
            NOP                     ; does not change all the time.
            RTI
;**************************************************************
;*                 Interrupt Vectors                          *
;**************************************************************
            ORG   $FFFA
            DC.W  spurious          ;
            DC.W  spurious          ; SWI
            DC.W  _Startup          ; Reset

En la imagen de arriba se ve la IDE del CodeWarrior, primero se hace el debug en Full Chip para saber si hay errores en el código; después se hace el Debug con la selección de la imagen, HCS08 OpenSource_BDM.

Al hacer el debug aparece la ventana de simulación, le dan en el botón Start o presionan F5 para programar en circuito el microcontrolador.

Con el Hyper Termianl, si es la primera vez que lo usan aparece una ventana que pide datos de su conexión llenen los de tal manera que lo puedan cerrar y así acedan a programa, después pueden en el menú Archivo hacer una nueva conexión, les aparecerá la siguiente ventana de arriba para que le pongan icono y nombre a su conexión.

Después les pedirá a donde conectarse, pueden ver que en las dos opciones de arriba llene los datos para que me dejara usar el Hyper Terminal, como llamaremos a nuestro micro debemos saber como se llama el puerto donde conectamos el adaptador USB-RS232. Eso lo pueden saber en las opciones de window en administrar hardware donde pueden modificar los Drivers.

Después de llenar ese campo aparecerá las propiedades del puerto, la primera es la velocidad de comunicación tiene que ser la misma que programaron en la codificación al configurar los registros en la etiqueta AR.

Con esto ya tenemos configurado nuestro Hyper Terminal, para que nuestro micro nos envié datos.

Arriba pueden ver el micro que esta trabajando cuando en el simulador corremos el programa, y en el Hyper Terminal que interpreta los datos como código ASCII.

Arriba todos los materiales ya conectados para implementar el programa.

Arriba en la imagen casi no se alcanza a ver las conexiones.

Como conclusión pueden con este programa probar su dispositivo para ver si es que tienen un problema con su programa, cargar este en su micro y descartar problemas de Hardware. En este ejemplo no se uso la recepción de datos del puerto. Si tienen dudas de que significa la codificación y entender que hace cada comando chequen en el Manual de Rerencia de este micro-controlador los capítulos 7.5 y 12 para que puedan checar la codificación. Las conexiones son las mismas que en la pagina del link debajo del RM.

Bibliografía:
http://cache.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08SE8RM.pdf
http://hzsquare.blogspot.com/2011/04/hcs08-motorola-freescale-comunicacion.htm

No hay comentarios:

Publicar un comentario