Projeto HCS08

Embed Size (px)

Citation preview

UNIVERSIDADE

FEDERAL DE

SANTA CATARINA

Departamento de Engenharia Eltrica Centro Tecnolgico

EEL7846

PROJETO NVEL II EM REA BSICA II

Autor: Pedro 02141523

Henrique

Piccoli

Richetti

Professor: Hari B. Mohr

Julho/2011

EEL7846 Projeto Nvel II em rea Bsica II

Florianpolis - SC

ii

EEL7846 Projeto Nvel II em rea Bsica II

SumrioEEL7846..................................................................................................................................i Projeto Nvel II em rea bsica II............................................................................................i Sumrio...................................................................................................................................3 1. Introduo...........................................................................................................................4 Uma vez conhecidas as funcionalidades do controlador, e das caractersticas do kit de desenvolvimento foi determinada a aplicao a ser desenvolvida..........................................4 2. Objetivo...............................................................................................................................5 3. Caractersticas de Hardware................................................................................................6 3.1 Controlador HCS08QG8...............................................................................................6 3.2 Kit de demonstrao DEMO9S08QG8.........................................................................7 4. Caractersticas de Software.................................................................................................9 4.1 Descrio da aplicao..................................................................................................9 4.2 Fluxograma...................................................................................................................9 4.3 Cdigo Fonte...............................................................................................................11 5. Concluso..........................................................................................................................14 6. Referncias Bibliogrficas................................................................................................15

3

EEL7846 Projeto Nvel II em rea Bsica II

1. IntroduoA realizao deste projeto visa conhecer e compreender as funcionalidades presentes nos microcontroladores da famlia HCS08 e do kit de desenvolvimento fornecido pela Freescale. O controlador HCS08QG8 utilizado nesta aplicao apresenta performance mais elevada e menor consumo de energia em relao ao modelo equivalente da famlia HC08, sua antecessora. Outro fator importante para o desenvolvimento a possibilidade de programao utilizando a linguagem C, que possibilita: Facilidade de programao em relao linguagem Assembly; Portabilidade de cdigo; Alta eficincia, pois esta linguagem permite gerar programas mais eficientes, com tamanho reduzido e velocidade de execuo elevada. Uma desenvolvida. vez conhecidas as funcionalidades do controlador, e das

caractersticas do kit de desenvolvimento foi determinada a aplicao a ser

4

EEL7846 Projeto Nvel II em rea Bsica II

2. ObjetivoUtilizando o kit de demonstrao do microcontrolador Motorola HCS08QG8 implementar o controle de luminosidade de um LED atravs de modulao por largura de pulso (PWM), definindo como parmetro para controle do ciclo ativo do pulso o resultado da converso AD de um sinal produzido pela clula fotoeltrica presente no kit.

5

EEL7846 Projeto Nvel II em rea Bsica II

3. Caractersticas de Hardware3.1 Controlador HCS08QG8Os modelos da famlia QG so microcontroladores de 8 bits de baixo custo e apresentam as seguintes caractersticas: CPU HCS08 capaz de operar a at 20MHz; Encapsulamento de 8 ou 16 pinos; Programao e depurao avanada utilizando um pino (BDM Background Debugging Mode); 4 ou 8 Kbytes de FLASH, 256 ou 512 bytes de RAM; 12 pinos de entrada/sada, mais um somente de entrada e outro somente sada; Perifricos internos: o Timer de 16 bits com 2 canais de captura; o Comparao ou PWM; o Timer de 8 bits; o Conversor A/D de 10 bits com sensor de temperatura interno; o Comparador analgico; o Interfaces seriais SCI, SPI e I2C.

6

EEL7846 Projeto Nvel II em rea Bsica II

3.2 Kit de demonstrao DEMO9S08QG8

Figura 1: Kit de demonstrao DEMO9S08QG08

A placa DEMO9S08QG08 um kit de demonstrao fornecido pela Freescale semiconductor, e de acordo com o manual do fabricante, permite o rpido desenvolvimento de aplicaes, devido principalmente possibilidade de depurar o cdigo em tempo real atravs de uma interface USB-BDM em que um microcomputador executa o cdigo diretamente no microcontrolador a ele conectado atravs de uma porta USB presente no kit. Caractersticas do kit: Interface USB-BDM; Porta serial RS232 com conector DB9; Portas SPI e IIC disponveis no conector J1; Opo de clock externo de 32.768kHz; Jumper seletor de alimentao na entrada; o Alimentao atravs do USB-BDM; o Alimentao atravs do regulador de tenso da placa; o Alimentao atravs do conector J1; Componentes de entrada/sada; o 3 Push-buttons, sendo 1 reset; o 3 leds indicadores, sendo 1 alimentao; o Potencimetro (5K Ohm);

7

EEL7846 Projeto Nvel II em rea Bsica II

o Fotoclula. O kit de demonstrao tambm fornece uma cpia do software CodeWarrior Development Studio, aplicao que permite a elaborao cdigo e tambm apresenta uma interface de depurao compatvel com a interface USB-BDM. Para a realizao do projeto foi necessrio utilizar um circuito adicional ao kit de demonstrao para entregar a sada do sinal PWM a um LED externo, pois esta sada (PTA0) s acessvel pelo conector MCU de 32 pinos do kit. Este circuito externo composto de um led, um resistor e um conector MCU de 32 pinos.

8

EEL7846 Projeto Nvel II em rea Bsica II

4. Caractersticas de Software

4.1 Descrio da aplicaoUtilizando o CodeWarrior Developmente Studio e a linguagem de programao C, foi criado o projeto para implementao do cdigo, que, quando executado realize as seguintes tarefas: Funo Principal: medida que a luminosidade sobre a fotoclula diminui, maior ser intensidade luminosa produzida pelo led. Funes Auxiliares: o SW1 pressionada: atravs de uma interrupo de teclado, ativa/desativa quatro nveis); o SW2 pressionada: pisca alternadamente LED1 e LED2, sem interferir no controle de luminosidade PWM a na converso AD. Obs.: Para tornar mais perceptvel a variao da luminosidade do LED, o resultado da converso AD foi divido em quatro faixas iguais, e para cada uma foi associado um percentual de durao do ciclo PWM: 0%, 25%, 50% e 100%. a informao do nvel pwm utilizado (representando um resultado binrio em LED1 e LED2 com

4.2 Fluxograma

9

EEL7846 Projeto Nvel II em rea Bsica II

Figura 2: Fluxo principal de execuo do cdigo

O fluxo principal de execuo do cdigo exposto acima reflete os passos de funcionamento da estrutura quando em operao normal. Na ocorrncia de uma interrupo (Chave SW1 pressionada), o fluxo interrompido e executada a rotina de interrupo, que consiste em ativar os LEDs 1 e 2 da placa de acordo com um dos quatro nveis definidos do sinal PWM. Aps a interrupo, o fluxo retorna do ponto em que parou.

10

EEL7846 Projeto Nvel II em rea Bsica II

4.3 Cdigo FonteSegue abaixo o cdigo fonte elaborado para a aplicao, com os respectivos comentrios de cada etapa:#include /* Para macro EnableInterrupts */ #include /* inclui declaracao de perifericos */ #include unsigned int ciclo, temp, pisca_led, pisca_led_tmp, contador; //interrupo do teclado (sw1) interrupt 18 void KBI_ISR(void) { KBISC_KBACK = 1; //limpa interrupes pendentes if(pisca_led==0) // inverte pisca_led pisca_led = 1; else pisca_led = 0; PTBD_PTBD6 = 1; //apaga led1 PTBD_PTBD7 = 1; //apaga led2 pisca_led_tmp = pisca_led; } void main(void) { volatile unsigned int res_conv; EnableInterrupts; // Habilita interrupes SOPT1 = bBKGDPE; //habilita interrupo de teclado em sw1 KBIPE_KBIPE2 =1; //habilita sw1 KBISC_KBIE = 1; //habilita interrupo de teclado KBISC_KBACK = 1; //limpa interrupes pendentes PTBDD_PTBDD6 PTBDD_PTBDD7 PTAPE_PTAPE2 PTAPE_PTAPE3 = = = = 1; 1; 1; 1; // led1 em // led2 em //habilita //habilita ptb6 eh ptb7 eh pull-up pull-up saida saida em pta2 (sw1) em pta3 (sw2)

TPMSC = 0b00001000; //fonte do clock = busclk TPMMOD= 1023; //modulo da contagem (periodo maximo -> ciclo pwm 100%) TPMC0SC = 0b00100100; // modo tpm_pwm_low (PWM ativo em nivel baixo) ciclo = 0; TPMC0V = ciclo; //inicia pwm com ciclo zero //configuracao conversor A/D ADCSC1 = 0b00100001; // configura canal 1 (PTA1) conversao continua ADCCFG = 0b10000100; //Modo 10 Bits, busclk,tempo normal, baixa velocidade

11

EEL7846 Projeto Nvel II em rea Bsica II APCTL1 = 0b00000010; // PTA1 modo analgico pisca_led = 0; pisca_led_tmp = 0; PTBD_PTBD6 = 1; PTBD_PTBD7 = 1; PTAD_PTAD0 = 1; res_conv=0; contador=0; while(1){ //loop //qdo pisca_led !=0 ativa informao do ciclo pwm //em led1 e led2 //apaga led1 em ptb6 //apaga led2 em ptb7 //apaga led em pta0

ADCSC1 = 0b00100001; // seleciona converso contnua, canal AD1 res_conv = ADCR; //guarda em res_conv resultado da conversao AD res_conv &= 0x3FF; //mascara bits excedentes //define quatro ciclos de operacao pwm if(res_conv 00 if(pisca_led!=0){ PTBD_PTBD6 = 1; PTBD_PTBD7 = 1; } } if(res_conv>=256 && res_conv < 512){ //ciclo 25% TPMC0V = 256; //nivel 2, led1 aceso -> 01 if(pisca_led!=0){ PTBD_PTBD6 = 0; PTBD_PTBD7 = 1; } } if(res_conv>=512 && res_conv < 768){ //ciclo 50% TPMC0V = 512; //nivel 3, led2 aceso -> 10 if(pisca_led!=0){ PTBD_PTBD6 = 1; PTBD_PTBD7 = 0; } } if(res_conv>=768){ //ciclo 100% (led c/ maxima luminosidade) TPMC0V = 1024; //nivel 4, leds acesos -> 11 if(pisca_led!=0){ PTBD_PTBD6 = 0; PTBD_PTBD7 = 0; } } //qdo sw2 pressionada pisca led1 e led2 alternadamente if(PTAD_PTAD3==0){ pisca_led= 0; if(contador>10000){

12

EEL7846 Projeto Nvel II em rea Bsica II PTBD_PTBD6 PTBD_PTBD7 } else{ PTBD_PTBD6 PTBD_PTBD7 } = 0; = 1; = 1; = 0;

} else{ //se sw2 nao pressionada deixa leds apagados PTBD_PTBD6 = 1; PTBD_PTBD7 = 1; pisca_led = pisca_led_tmp; } if(contador>20000) //contador de tempo de alternancia dos leds contador=0; else contador++;

} }

13

EEL7846 Projeto Nvel II em rea Bsica II

5. ConclusoA facilidade e robustez da linguagem C simplificaram o processo de elaborao do cdigo, e a possibilidade de depurao em tempo real (BDM) diretamente do computador conectado ao kit de demonstrao tornou mais gil a identificao e correo de problemas e a realizao de ajustes no cdigo at se obter o resultado desejado. Estas caractersticas resultam num menor tempo de desenvolvimento e menores custos, visto que o hardware utilizado tambm possui preo reduzido, ainda assim proporcionando caractersticas e performance satisfatrias para as mais diversas aplicaes. Neste projeto, a variao gradual da luminosidade de um LED, atravs do controle da razo cclica de um sinal com modulao PWM por meio da converso A/D do sinal de sada de uma fotoclula permitiu conhecer boa parte das funcionalidades do microcontrolador HCS08 e ainda despertou o interesse na rea para o desenvolvimento de outras aplicaes.

14

EEL7846 Projeto Nvel II em rea Bsica II

6. Referncias Bibliogrficas[1] [2] Pereira, Fbio. Microcontroladores HCS08: Teoria e Prtica, Editora Site: www.freescale.com Freescale Seminconductor

rica, 2005 So Paulo.

15