Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Mato Grosso - UFMT Faculdade de Arquitetura, Engenharia e Tecnologia - FAET Departamento de Engenharia Elétrica Microprocessadores - 2016/2 Lista para prova N3 1) Caraterísticas especiais dos microcontroladores PIC: responda ou complete a frase com a resposta certa. a) Que acontece se o temporizador de arranque é habilitado? b) O cão de guarda geralmente é usado para duas funções, descreva essa funções: i. ...................................................................................................................................................... ii. ..................................................................................................................................................... c) Disserte sobre os bits de proteção de código. 2) Geração de sinais PWM usando microcontroladores PIC a) Qual é a função de registrador PR2 no módulo PWM? b) Determine a faixa de frequências válida para gerar sinais PWM utilizando o módulo didático do laboratório de Micro. c) Para um sinal PWM de 10kHze o duty cycle é 75%, determine o período do ciclo de trabalho (tempo quando o sinal é alto). d) Escreva um programa em C para gerar um sinal PWM a uma frequência FPWM = 5kHz. Sendo que o valor do duty-cycle deverá ser controlado pelo potenciômetro conectado ao pino RA3 do µC PIC. Os valores da frequência e duty-cycle devem ser mostrados no LCD. O valor do duty- cycle, entre 0% e 100%, deve ser mostrado com uma precisão de duas casas decimais. 3) Controle de dispositivos via I2C a) Escreva um programa em C para setar um RTC. Para isso, devem-se enviar, através de um terminal UART, novos valores para os registradores de TEMPO e CALENDARIO de um RTC DS- 1307. O programa deve incluir as funções necessárias para invalidar dados errados. Uma hora correta deve ser enviada no formato hh:mm:ss. O dia da semana deve ser enviada usando 1 até 7 (sendo 1=domingo). Uma data certa deve ser enviada no formato dd:mm:aa. Considere que pode usar a função SETA_RTC() para setar os registradores no RTC. Para usar essa função, os valores correspondentes, todos no formato BCD empacotados, devem ser previamente armazenados nas variáveis: hra_rtc, min_rtc, seg_rtc, dia_sem, dia_mes, mês, ano. 4) Exercícios usando linguagem de programação C para microcontroladores PIC: a) Escreva um programa em C para controlar alguns LEDs, do módulo didático, por meio do teclado básico 4x4. Cada tecla pressionada deve controlar um LED, do LED_1 ao LED_3, correspondentemente às teclas [1], [2] e [3] do módulo didático (ver figura). Os LEDs devem iniciar desligados, e a cada vez que a tecla correspondente a um dado LED for pressionada, o estado do LED deve ser invertido. Por exemplo, se o LED estava OFF deve se tornar ON, e vice-versa b) Elabore um fluxograma e escreva um programa em C para mostrar nos LEDs ligados à porta D do µC PIC do módulo didático, o valor de um contador binário up/down de 8 bits. A aplicação deve iniciar com contagem ascendente. Cada vez que pulsar a tecla a tecla [A] deve mudar o tipo de contagem: de up para down ou de down para up. Ver figura do teclado básico 4x4. F E D C B A RC0 RC1 RC2 RC3 RB3 RB2 RB1 RB0 c) Elabore um fluxograma e escreva um programa na linguagem C para piscar um LED 5 vezes na frequência de 2Hz, depois 5 vezes na frequência de 1Hz. O programa deve repetir essa sequência até pulsar a tecla [A], então o LED devem ficar apagado. Se pulsar a tecla [C], o LED deve recomeçar o ciclo de pisca pisca. Ver figura do teclado básico 4x4. d) Escreva um programa em C para implementar um RTC utilizando interrupções por transbordo de TMR1. Então, o programa deve para acionar o buzzer (conectado ao pino RA2) por 5 segundos a cada 30 segundos. Além disso, o programa deve reiniciar o relógio caso a tecla [0] do teclado básico 4x4 (ver figura acima) seja pressionada. e) Elabore um fluxograma e escreva um programa na linguagem C para monitorar um contador BCD de peças de 00 a 99, quando chegar em 99 deve-se aguardar até pressionar uma tecla [C] para reiniciar a contagem. f) Escreva um programa em C para realizar a conversão analógica-digital do valor de tensão lido pelo potenciômetro conectado ao pino RA3 do µC PIC. Mostre no display LCD o valor de tensão correspondente, entre 0 e 5V, com a precisão de duas casas decimais. Questões de provas escritas anteriores 1) Mencione três critérios elementares que devem ser utilizados para definir a palavra de configuração no µC PIC16F877A. (2015/2) 1. ................................................................................................................................................. 2. ................................................................................................................................................. 3. ................................................................................................................................................. 2) Para implementar um RTC utilizando o Timer 1, calcular e deduzir os valores que devem ser definidos no temporizador e nas variáveis auxiliares utilizadas. Em seguida: a) Preencha a Tabela a seguir; b) complete os valores literais na rotina de interrupção (Linguagem C); c) implemente o fluxograma da rotina de interrupção; d) complete os valores literais no programa principal (Assembly) e faça um ressumo conciso desse trecho de código; e) Escreva a rotina de interrupção em Assembly para o µC PIC16F877A; f) Reescreva a rotina de interrupção utilizando instruções de Assembly para o µC PIC18F4550 (use critério). (2015/2). N° passos de TMR1 Prescaler Fator Tempo de 1 c.i. = Tbase_RTC 8 0,2 us = 1 s Rotina de interrupção em linguagem C: Fluxograma int8 hrs, min, seg; #int_timer1 void timer1_isr () { static int fator; set_timer1( ); fator++; if (fator == ) { fator = ; seg++; if (seg == ) { seg = ; min++; if (min == ) { min = ; hrs++; if (hrs == ) hrs= ; } } } } 3) Usando o µC PIC16F877 (FOSC = 20MHz) pretende-se obter um sinal PWM de frequência = 40kHz e ciclo ativo de 75%. Calcular, nos casos possíveis, os valores a serem definidos nos registradores especiais do módulo PWM e preencha a Tabela a seguir. (2015/2) Prescaler de Timer2 T2CON<1:0> PR2 (hex) CCPR1L (hex) CCP1CON<5:4> 00 01 10 5) Dado o fluxograma da figura a seguir, escreva: a) um programa usando instruções do PIC16F877A; b) instruções do PIC18F4550; c) sentença da linguagem C: (2,5 pt) A<B? Imprimir("A<B") fim nãosim Imprimir("A>=B") Define valor de A Define valor de B a) Instruções do PIC16F877A b) Instruções do PIC18F4550 c) Sentenças da Linguagem C list p=16f877a #include <p16f877a.inc> __CONFIG H'3F32' cblock 0x20 A, B endc org 0x0 list p=18f4550 #include <p18f4550.inc> #include <p18f4550_config.h> cblock 0x20 A, B endc org 0x0 #include <16f877a.h> #device ADC=10 #fuses HS,NOWDT,PUT,NOLVP #use delay(clock=20M) #use rs232(BAUD=9600, XMIT=pin_C6, RCV=pin_C7, BITS=8) int8 A, B; void main() { 4) Elabore um fluxograma para o seguinte programa escrito em C (2016/1) #include <16F877a.h> #fuses HS,PUT,NOWDT #use delay(clock = 20M) #use fast_io(D) #byte porta_d = 0x08 #byte tris_d = 0x88 void main() { int contador = 0; int1 modo=0; tris_d = 0x00; if(true) { porta_d = contador; delay_ms(500); if(modo ==0) { contador++;if(contador==0x65) modo =1; } 6) Elabore os fluxogramas necessários e escreva um programa em C para mostrar nos LEDs ligados à porta D do µC PIC, o seguinte efeito de deslocamento de luzes: (2016/1) O programa não pode apresentar mais de duas instruções de escrita na Porta D. Cada valor apresentado na porta D, pode ser mostrado durante 200ms. Depois de apresentar o 6º valor, deve recomeçar apresentando o primeiro valor, repetindo o ciclo de forma indefinida. Nota: pode considerar que as sub-rotinas UART_TxCar ou EnviaCarLCD estão disponíveis para serem utilizadas.
Compartilhar