• No se han encontrado resultados

Buceando en los MCUs Freescale...

N/A
N/A
Protected

Academic year: 2021

Share "Buceando en los MCUs Freescale..."

Copied!
11
0
0

Texto completo

(1)

COMENTARIO TÉCNICO

Buceando

en los MCUs

Freescale...

Por Ing. Daniel Di Lella

Dedicated Field Application Engineer

EDUDEVICES

www.edudevices.com.ar

dilella@arnet.com.ar

“Medidor de Potencia Activa Monofásico y Trifásico”

Por Ing. Aranda, Roberto Carlos / Ing. Teseyra, Rene Julio / Lutfi David,

Ortiz Rodrigo – FMA - UCSE

2da. Parte.

(2)
(3)
(4)

Layouts (PCBs):

Unidad Central de Control y Procesamiento

(5)

RTC DS1307

Como se puede observar en los diagramas finales, solo hubo pequeñas modificaciones

en las distintas secciones que tuvieron por finalidad asegurar un funcionamiento

adecuado de todo el sistema. Al sistema se le ha agregado un circuito de RTC

compuesto por un C.I. DS1307 de Dallas (Maxim), que perfectamente puede

implementarse en el mismo MCU “HC908GP32” por medio del módulo “TBM” (Time

Base Module) o bien puede implementarse en cualquier MCU de la familia HC9S08 por

medio del módulo RTI (Real Time Interrupt) con el consiguiente ahorro del CI y

circuitos agregados más el espacio ahorrado en el PCB.

A continuación, se comenzará a describir el programa implementado en el “GP32”

(Firmware) que con pequeñas modificaciones puede implementarse en cualquier MCU

de las familias HC908 o HC9S08.

3. Código Fuente

*********************************************************************** * LABORATORIO DE ELECTRONICA - FMA - UCSE * * * * MEDIDOR DE POTENCIA ACTIVA MONOFASICO TRIFASICO * * * ***********************************************************************

base 10T ;Base Decimal por defecto include "gp32head.asm" ;Equates generales para GP32 * ---* EQUATES * ---* FREC. DE BUS (4,9152 MHz) * Tiempo de Ciclo = 203,45 nS *

---BUSFREQ EQU 4 ;Para Frec. de Bus = 4,9152 Mhz USCOUNT EQU $0E

USDELAY EQU BUSFREQ*USCOUNT

;--- Definición de caracteres ASCII

---SPACE EQU $20 ;ASCII Espacio (Space)

EOT EQU $04 ;ASCII Fin de Transmisión (End Of Transmission) CR EQU $0D ;ASCII Retorno de Carro (Carrier Return) LF EQU $0A ;ASCII Salto de Línea (Line Feed) FINPRES EQU $FF ;Fin de la Presentación

(6)

;--- Líneas de Control del Display LCD

---RS_LCD EQU 0 ;RS = Register Select_LCD E_LCD EQU 1 ;E = Enable_LCD

MAXCHARS EQU $20 ;Máxima cantidad de caracteres a mostrar

MAXLINE EQU $10 ;Máxima cantidad de caracteres a mostrar por línea L_Datos EQU $14 ;Longitud de Datos a Promediar

* ---* VARIABLES EN RAM

* org RAMSPACE ;Comienzo de la RAM Counter RMB 1 TempVar RMB 1 TempWord RMB 2 Count RMB 1 MsgIndex RMB 2 MsgStart RMB 2 TOFCount RMB 1 TempPtr RMB 2

Tecla RMB 1 ;Tecla Presionada Posicion RMB 1 ;Posición del menu LCD Puntero RMB 1 ;Puntero de Datos Bandera_TX RMB 1 ;Bandera de Transmisión Suma_LSB RMB 1 Suma_MSB RMB 1 P_temp RMB 1 P_umil RMB 1 P_centena RMB 1 P_decena RMB 1 P_unidad RMB 1 PT_umil RMB 1 PT_centena RMB 1 PT_decena RMB 1 PT_unidad RMB 1 PP_umil RMB 1 PP_centena RMB 1 PP_decena RMB 1 PP_unidad RMB 1

Datos_P1 RMB L_Datos ; Datos de Potencia 1 Datos_P2 RMB L_Datos ; Datos de Potencia 2 Datos_P3 RMB L_Datos ; Datos de Potencia 3

(7)

* ---* COMIENZO DEL PROGRAMA

*

ORG FLASHSPACE ; Comienzo de la FLASH Inicio:

RSP ; SP=$00FF CLRA

CLRX

;--- Registros CONFIG

MOV #%00011011,CONFIG1 ;b7=0 Periodo del COP: 262128 ciclos del CGMXCLK ;b6=0 LVI deshabilitado durante el modo STOP ;b5=0 Reset LVI habilitado

;b4=1 LVI deshabilitado ;b3=1 LVI trabaja en modo 5V

;b2=0 Retraso al salir del STOP: 4096 ciclos CGMXCLK ;b1=1 Instruccion STOP habilitada

;b0=1 Modulo COP deshabilitado

MOV #%00000011,CONFIG2 ;b2=0 Regulador de tension habilitado (Vdd > 3,6V) ;b1=1 Oscilador habilitado durante el Modo STOP

;b0=1 Seleccion de Frec. de Bus como fuente reloj p/ el SCI NOP ;Las instrucciones NOP hacen de retardo para

NOP ; asegurar la configuración NOP

;--- Puertos CLR PORTA

MOV #$00,PORTB

MOV #$00,DDRB ; Puerto B como entradas MOV #$00,PORTB

MOV #$00,PORTC

MOV #$00,DDRC ; Puerto C como entradas MOV #$00,PORTC

MOV #$00,PORTD

MOV #$00,DDRD ; Puerto D como entradas MOV #$00,PORTD

MOV #$00,PTAPUE ; Puerto A sin PULLUPS MOV #$FF,PTCPUE ; Puerto C con PULLUPS MOV #$00,PTDPUE ; Puerto D sin PULLUPS ; Configuración del Puerto A para el modulo LCD

-BCLR RS_LCD,PORTA BCLR E_LCD,PORTA

MOV #$FF,DDRA ; Puerto A como salidas para LCD BCLR RS_LCD,PORTA

BCLR E_LCD,PORTA

;- Configuración del PLL con cristal de 32K768

---;R=1 N=096 P=0 E=0 L=80 FBus= 1,2288 MHz ;R=1 N=12C P=0 E=1 L=80 FBus= 2,4576 MHz ;R=1 N=258 P=0 E=2 L=80 FBus= 4,9152 MHz CLR PCTL ;PLL Apagado MOV #$02,PCTL ;P= 0 E= 2 MOV #$02,PMSH ;N HI= 2 MOV #$01,PMDS ;R= 1 (default) MOV #$58,PMSL ;N LOW= 58 MOV #$80,PMRS ;L= 80

(8)

BSET AUTO,PBWC ;Enganche Automático BSET PLLON,PCTL ;PLL Encendido

BRCLR PLLF,PCTL,* ;Espera hasta que enganche el PLL BSET BCS,PCTL ;Cambia a frecuencia del PLL

;- Configuracion del ADC

MOV #%00110000,ADCLK ; Bus Clock / 2

;- Configuracion del SCI

MOV #%00000110,SCBR ; Baud Rate = 1200 con Fbus = 4,9152Mhz MOV #%01000000,SCC1 ; Habilita SCI

MOV #%00101100,SCC2 ; Habilita el TX, RX y la interrupción ; del receptor de la SCI

JSR Clr_Datos_RAM ; Borrado de Datos en la RAM JSR LCDInit ; Inicialización del LCD

LDHX #CartelPres ;Carga la direccion base de la tabla ; CartelPres en el indice

Presentacion: JSR ShowString

JSR _1sDelay ;Retardo de 1 segundo JSR _1sDelay ;Retardo de 1 segundo NextMsg LDA ,X

CMP #EOT BEQ GotNext

AIX #1 ;Incrementa el indice

BRA NextMsg ;y vuelve hasta encontrar EOT GotNext AIX #1

LDA ,X

CMP #FINPRES BNE Presentacion

MOV #$01,Posicion ;Inicializo Posición

LDHX #Cartel_1 JSR ShowString

CLI ;Habilitación de interrupciones JSR Borrado_PP

* ---* BUCLE PRINCIPAL

* ---Bucle_Principal:

CLR Puntero ;Borro el Puntero

CLR Bandera_TX ;Borro la Bandera de Transmisión JSR Borrado_PT

* ---Muestreo:

JSR ADC_Adquisicion

LDA #$01 ;Retardo 1ms entre muestras JSR msDelay

INC Puntero LDA Puntero

(9)

CMP #L_Datos ;Comparo con cantidad de Datos BNE Muestreo

*

MOV #$01,Tecla ;Inicializo Tecla BRCLR 1,PORTC,ATecla ;Se presiono tecla 1? INC Tecla

BRCLR 0,PORTC,ATecla ;Se presiono tecla 2? INC Tecla

BRCLR 3,PORTC,ATecla ;Se presiono tecla 3? BRA Sigue_P1

ATecla JSR Atencion_Tecla BRA Bucle_Principal

Sigue_P1:

LDHX #Datos_P1 ;Apunto al Dato P1 JSR Adc_Promedio JSR Adc_Escalado JSR Adc_Conversion JSR Adc_MostrarP1 JSR Sumar_PT LDA Bandera_TX CMP #$01 BNE Sigue_P2 MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX MOV #'1',SCDR BRCLR 7,SCS1,* ;Espera para TX JSR TX_Dato Sigue_P2:

LDHX #Datos_P2 ;Apunto al Dato P2 JSR Adc_Promedio JSR Adc_Escalado JSR Adc_Conversion JSR Adc_MostrarP2 JSR Sumar_PT LDA Bandera_TX CMP #$01 BNE Sigue_P3 MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX MOV #'2',SCDR BRCLR 7,SCS1,* ;Espera para TX JSR TX_Dato Sigue_P3:

LDHX #Datos_P3 ;Apunto al Dato P3 JSR Adc_Promedio JSR Adc_Escalado JSR Adc_Conversion JSR Adc_MostrarP3 JSR Sumar_PT LDA Bandera_TX CMP #$01

(10)

BNE Sigue_PT MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX MOV #'3',SCDR BRCLR 7,SCS1,* ;Espera para TX JSR TX_Dato Sigue_PT: MOV PT_umil,P_umil MOV PT_decena,P_decena MOV PT_centena,P_centena MOV PT_unidad,P_unidad JSR Adc_MostrarPT LDA Bandera_TX CMP #$01 BNE P_Pico MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX MOV #'T',SCDR BRCLR 7,SCS1,* ;Espera para TX JSR TX_Dato P_Pico: LDA PP_umil

SUB PT_umil ;PP_umil - PT_umil CMP #$00

BEQ Sigue1 ;Si es igual sigo preguntando BGT Sigue_PP ;Si es mayor sigue sin cambiar BRA Sigue4 ;Si es menor cambia

Sigue1 LDA PP_centena

SUB PT_centena ;PP_centena - PT_centena CMP #$00

BEQ Sigue2

BGT Sigue_PP ;Si es mayor sigue sin cambiar BRA Sigue4 ;Si es menor cambia

Sigue2 LDA PP_decena

SUB PT_decena ;PP_decena - PT_decena CMP #$00

BEQ Sigue3

BGT Sigue_PP ;Si es mayor sigue sin cambiar BRA Sigue4 ;Si es menor cambia

Sigue3 LDA PP_unidad

SUB PT_unidad ;PP_unidad - PT_unidad CMP #$00

BEQ Sigue4

BGT Sigue_PP ;Si es mayor sigue sin cambiar BRA Sigue4 ;Si es menor cambia

Sigue4 MOV PT_umil,PP_umil MOV PT_decena,PP_decena MOV PT_centena,PP_centena MOV PT_unidad,PP_unidad Sigue_PP: MOV PP_umil,P_umil MOV PP_decena,P_decena MOV PP_centena,P_centena MOV PP_unidad,P_unidad JSR Adc_MostrarPP

(11)

LDA Bandera_TX CMP #$01 BNE Final MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX MOV #'P',SCDR BRCLR 7,SCS1,* ;Espera para TX JSR TX_Dato Final JMP Bucle_Principal END

Hasta aquí se ha visto el bucle principal del programa, en las próximas entregas

veremos las distintas sub – rutinas que integran el programa en su conjunto.

Continuará ...

Nota de Redacción:

El lector puede descargar este artículo y artículos anteriores

de

“Buceando...”

desde la sección

“Artículos Técnicos”

en el sitio web de

EduDevices

(

www.edudevices.com.ar

)

Referencias

Documento similar

Las características del trabajo con grupos que se debería llevar a cabo en los Servicios Sociales de Atención Primaria (SSAP), en términos de variabilidad o estabilidad

Pero antes hay que responder a una encuesta (puedes intentar saltarte este paso, a veces funciona). ¡Haz clic aquí!.. En el segundo punto, hay que seleccionar “Sección de titulaciones

Se repre- sentabasu cacería por ser la época más propicia para ello según los payeses catalanes que creían firmemente hace unos años, que los lobos se casaban en Carnaval y que por

de su infinito amor.. imperio sobre las nubes, que.. desgracias vencidas, se vu elven las calamidades risueñas.. Publicad sus maravillas, sus inumerables beneficios ,

La vida real, no obstante, proporciona la certidumbre de que, en multitud de ocasiones, el interés de cada uno se satisface con el concurso propio y de otro u otros portadores

en una especie de «era pospartidos». Según este punto de vista, la cuestión de la estabilidad electoral de los sistemas de partidos de Europa occidental se convierte en

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

El presente trabajo de grado busca comprender, desde la Educación Religiosa Escolar, la pregunta por el sentido en los jóvenes de grado once del colegio Champagnat