MAPA - MICROPROCESSADORES E MICROCONTROLADORES – 51/2024
Os sistemas embarcados estão presentes na maioria dos dispositivos tecnológicos comercializados na atualidade, a exemplo de um smartwatch ou smartphone, itens que fazem parte da vida das pessoas na atualidade e permitem a conectividade com parâmetros vitais, como indicadores de frequência e pressão cardíaca, número de passos, distâncias percorridas, até mesmo o percurso realizado em uma atividade esportiva com a elevação de cada trecho.
Para um sistema embarcado operar, normalmente conta com um ou mais microcontroladores, memória flash, interfaces de entrada e saída, analógicas e digitais, interface de usuário e fonte de alimentação, esta que é tão importante quanto qualquer recurso de processamento, dado que sua função é vital ao funcionamento do sistema embarcado.
Os veículos modernos (carros, caminhões, motocicletas etc.) contam com sistemas inteligentes para controlar a injeção de combustível e ar para a queima que ocorre na combustão interna dos motores, sistemas esses que realizam milhares de cálculos por segundo para interpretar as variáveis de entrada, a fim de atuar em dispositivos de saída que mantêm a aceleração adequada mesmo em condições de temperatura variável ou tipos de combustíveis diferentes.
Sem dúvidas os sistemas embarcados vieram para ficar e a indústria conta com soluções para o controle de processos que são oferecidas de forma padronizada, atendendo a normas e convenções, para que os dados do processo sejam acessados e condicionados para entrega aos bancos de dados especializados. No caso da indústria, quem reúne a responsabilidade de controlar os processos é o Controlador Lógico Programável (CLP), que nos modelos mais modernos conta com microcontroladores de múltiplos núcleos e tecnologia ARM, além de FPGAs em casos mais específicos.
Atividade MAPA
Atualmente, diversas plataformas de sistemas embarcados são oferecidas pelo mercado, sendo cada vez mais complexa a escolha pela ferramenta mais adequada, caso o projetista opte por analisar o sistema embarcado sob o ponto de vista de recursos oferecidos de forma quantitativa.
Ao selecionar a tecnologia para um sistema embarcado, devemos levar em consideração o número de entradas e saídas, o tipo de entradas e saídas (analógicas e digitais), o tempo de resposta necessário para atender à demanda a ser controlada, o meio de interação com o usuário, o protocolo de comunicação utilizado, entre outros fatores. De posse dos requisitos do projeto, podemos analisar as opções em termos de custo, tamanho, possibilidade de expansão futura, alimentação requerida, compatibilidade eletromagnética, entre outros.
Considerando esses fatores, esta atividade pretende avaliar sua capacidade de interpretar um sistema digital responsável por contar peças que passam por um processo de pintura, contando com um botão que incrementa e outro que decrementa um contador implementado em assembly.
O programa:
; programa para gerar um sinal pwm com frequencia de saída PWM
;de 1,25KHZ UTILIZANDO OSCILADOR INTERNO.
;a) Quando RA0 estiver em 1, o duty cycle é de 25%.
;b) Quando RA1 estiver em 1, o dutycycle é de 50%.
;c) Quando RA2 estiver em 1, o duty cycle é de 75%.
;d) Quando RA3 estiver em 1, o dutycycle é de 100%.
; O VENTILADOR DO KIT P04 SERÁ ACIONADO PELO PINO RC1 (PINO 16)
;QUE É A SAÍDA DO MÓDULO CCP2 QUANDO EM PWM
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; CONFIG FOSC = XT_XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOR = ON, BORV = 0
CONFIG FOSC = INTOSCIO_EC, FCMEN = OFF, IESO = OFF, PWRT = ON, BOR = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
;CONFIG CCP2MX = PORTC, STVREN = OFF,
CONFIG LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
#INCLUDE <P18F4550.INC> ; MICROCONTROLADOR UTILIZADO
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE BT_1 PORTA,0
#DEFINE BT_2 PORTA,1
#DEFINE BT_3 PORTA,2
#DEFINE BT_4 PORTA,3
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
RETFIE
ORG 0X0018
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000000'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111001'
MOVWF TRISC ; PINO RC2 E RC1 COMO SAIDA
MOVLW B'11110000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW .99
MOVWF PR2 ;PARA FREQUÊNCIA DE 2,5KHZ CO OSCILADOR INTERNO
MOVLW B'00000000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E PERIFERICOS E TMR0
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
MOVLW B'00110010'
MOVWF OSCCON
; MOVLW B'11001111'
;MOVWF OSCTUNE
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
CLRF CCP2CON
MAIN
CALL DC_25
CALL DC_50
CALL DC_75
CALL DC_100
GOTO MAIN
DC_25
BTFSS BT_1
RETURN
BSF T2CON,2
MOVLW .25 ;PARA DC DE 25%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_1
BTFSC BT_1
GOTO TESTE_LIB_1
CLRF CCP2CON ;DESLIA MÓDULO CCP
BCF T2CON,2
RETURN
DC_50
BTFSS BT_2
RETURN
BSF T2CON,2
MOVLW .50 ;PARA DC DE 50%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_2
BTFSC BT_2
GOTO TESTE_LIB_2
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
DC_75
BTFSS BT_3
RETURN
BSF T2CON,2
MOVLW .75 ;PARA DC DE 75%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_3
BTFSC BT_3
GOTO TESTE_LIB_3
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
DC_100
BTFSS BT_4
RETURN
BSF T2CON,2
MOVLW .100 ;PARA DC DE 100%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_4
BTFSC BT_4
GOTO TESTE_LIB_4
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
reew4
END ; FIM DO PROGRAMA
Passos para a realização do MAPA de Microprocessadores e Microcontroladores
O MAPA deverá contar com 4 etapas:
1ª ETAPA: parte teórica (1,0 ponto)
Na primeira etapa, o estudante deverá:
a) Apresentar o trecho do programa responsável por variar o Duty Cycle do PWM de cada uma das larguras de pulso:
- 25%
- 50%
- 75%
- 100%
- Demonstrar o funcionamento do PWM por meio de um exemplo de aplicação.
- Demonstrar a operação do Prescaler no microcontrolador e sua relação com a velocidade do clock dele.
2ª ETAPA: download do código do experimento
Conforme as linhas de código em assembly, deve o estudante realizar o download do código por meio do link:
https://drive.google.com/file/d/1GqauoDOf_XflutFXm_o3UphNhxe1wtrk/view?usp=sharing
Todas as informações deste experimento estão disponíveis no link:
https://221322w.ha.azioncdn.net/Arquivo/ID/8051/experimentos/rotinas-de-contagem-e-modulacao-em-largura-de-pulso.html, incluindo o roteiro e vídeo explicativos.
O estudante deve agendar com o polo presencial de sua cidade um momento para montar o experimento, gravar o programa no microcontrolador e verificar seu funcionamento para fins de concluir a atividade com as conclusões dadas na 4ª etapa.
3ª ETAPA: montagem do experimento (1,5 ponto)
O estudante deve acessar o roteiro dado na Etapa 2 para seguir rigorosamente os passos dados no diagrama e no vídeo de instruções para realizar os testes com o microcontrolador.
Documentar a montagem do experimento por meio de registro fotográfico deste.
4ª ETAPA: conclusões (1,0 ponto)
Nesta etapa, o estudante deve concluir o porquê dos resultados obtidos, apresentando suas conclusões sobre como ocorre a geração do Ciclo de Trabalho (Duty-cycle) a partir do programa, relacionando sua resposta com o incremento e o decremento que ocorrem quando pressionados os botões.
O estudante deve explicar com suas palavras como o PWM gerado poderia ser utilizado para controlar a velocidade de um eixo de motor elétrico de corrente contínua (CC).