Prévia do material em texto
Exercícios De Sistemas digitais Microcontrolados
Semana 01
Analise o trecho abaixo:
"O ______________________ é o “guarda de trânsito” do computador SAP 1, é ele que prepara os blocos e sincroniza a operação d
memória."
Assinale a alternativa que contenha a palavra que complete a sentença acima.
Somador-Subtrador
Acumulador
Registrador de endereços na memória
Controlador-Sequenciador
Registrador de instruções
Assinale a alternativa que descreve o que é o Kernel (núcleo) de um computador ou de um microcomputador:
Toda parte física (hardware) contida em um microcomputador.
É uma lista de instruções, necessária para ordenar o tratamento dos dados pelo
microcomputador.
Componente gerenciador e integrador de hardware e software.
É toda informação utilizada na execução de um problema.
É a unidade de processamento de um microprocessador.
Semana 02
Os microcontroladores são dispositivos encapsulados com recursos computacionais.Sabendo-se disso, analise as afirmativas abaixo:
I - A Microchip Technology adotou a arquitetura de Harvad com seu produto principal, os microcontroladores PIC.
II - A tensão de alimentação aceita nos microcontroladores PIC da família 16 é na faixa de 3,0 à 6,5 volts em corrente contínua.
III - A corrente que os microcontroladores PIC consomem está diretamente ligada à velocidade de processamento (clock).
IV - A família 16 dos microcontroladores PIC possuem duas opções para armazenamento do programa, a memória EEPROM e a memória EPRO
adquirido.
Após a leitura atenta das sentenças acima, assinale a alternativa correta:
Todas as sentenças são verdadeiras
As sentenças II e IV são verdadeiras
As sentenças I, III e IV são verdadeiras
As sentenças I e IV são verdadeiras
As sentenças I e III são verdadeiras
Assinale a alternativa que contem a principal característica do microcontrolador PIC-16F628A da
Microchip:
Master Clear ativo com +5 Vcc.
Arquitetura pronta para comunicação USB.
Possuir até 8 canais de conversão Analógico / Digital.
Possuir até 3 pinos de interrupção.
Tem a possibilidade do clock interno, evitando o uso de cristal oscilador
externo.
Semana 03
O oscilador eletrônico dita o ritmo do sistema, produzindo um sinal repetitivo. Esse sinal é elétrico e pode ser
dito pulsante, seus níveis de tensão variam em alto e baixo (sinal digital). Essa troca constante de sinal é conhecida
como clock, resultando em uma onda quadrada. Dentre os osciladores abaixo, assinale a alternativa que contém o
oscilador que produz uma senoide de amplitude e frequência constante, cuja frequência é ajustada variando os valores
da indutância ou da capacitância, seguindo a fórmula:
Oscilador Colpitts
Oscilador de cristal de quartzo
Oscilador Clapp
Oscilador Hartley
Oscilador Pierce
De acordo com a Microchip, fabricante dos microcontroladores PIC, um dos recursos existentes nos
microcontroladores PIC possibilita o reset quando a tensão de alimentação diminui a níveis abaixo do
limiar de tensão. Esse recurso é chamado:
Wacth Dog Timer (WDT).
Power On Reset (POR).
Power Up Time (PWRT).
Master Clear Pin Reset (MCLR).
Brown Out Reset (BOR).
Semana 04
Observe o circuito e o código-fonte abaixo:
//==================== Arquivo crono.h //===================
#include
#device adc=8
#FUSES NOWDT
#FUSES XT
#FUSES PUT
#FUSES NOPROTECT
#FUSES BROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#FUSES NODEBUG
#use delay(clock=4000000)
#define BOTAO1 PIN_A0
#define BOTAO2 PIN_A1
#define BOTAO3 PIN_A2
//================== Fim Arquivo crono.h //=================
//==================== Arquivo crono.c //===================
#include "crono.h"
short contando, contar;
int numeros[6] = {0,0,0,0,0,0};
int n = 0;
int c, t;
int passo = 10;
BYTE CONST CODIGO [10]= {0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
#int_RTCC
void RTCC_isr(void)
{
set_timer0(get_timer0() + 6);
if (contando)
{
passo--;
if (passo == 0)
{
passo = 10;
t = 0;
contar = 1;
while (contar)
{
if (numeros[t] < 9)
{
numeros[t]++;
contar = 0;
}
else
{
numeros[t] = 0;
t++;
}
}
}
}
output_b(0b11111111);
if (n == 2)
output_c(CODIGO[numeros[n]] | 128);
else
output_c(CODIGO[numeros[n]]);
output_b(0b11111111 ^ (128 >> n));
n++;
if (n > 5) n = 0;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
contando = 0;
while(1)
{
if (contando)
{
if (!input(BOTAO2))
{
contando = 0;
}
}
else
{
if (!input(BOTAO1))
contando = 1;
if (!input(BOTAO3))
{
for (c = 0; c < 6; c++)
numeros[c] = 0;
passo = 10;
}
}
}
}
//================== Fim Arquivo crono.c //=================
Assinale a alternativa CORRETA em função do funcionamento e operação do cronômetro:
Ao ligar o cronômetro o display inicia-se apagado, os dígitos só são mostrados quando iniciar a contagem e o botão “ON” é usado para esta finalidade.
é o botão “OFF”, que para a contagem. Ao parar a contagem com o botão “OFF” não é possível iniciá-la novamente. O botão “RESET” é usado para zerar os valores e só é reconhecido quando
a contagem estiver parada.
Ao ligar o cronômetro o display inicia-se apagado, os dígitos só são mostrados quando iniciar a contagem e o botão “ON” é usado para esta finalidade. Uma vez contan
é o botão “OFF”, que para a contagem. Ao parar a contagem com o botão “OFF” é possível iniciá-la novamente através do botão “ON”. O botão “RESET” é usado para zerar os valores e só é
reconhecido quando a contagem estiver parada.
Ao ligar o cronômetro o display é preenchido com zeros, aguardando o acionamento o botão “ON” para iniciar a contagem. Uma vez contando, o único bo
contagem. Ao parar a contagem com o botão “OFF” é possível iniciá-la novamente através do botão “ON”. O botão “RESET” é usado para zerar os valores e só é reconhecido quando a
contagem estiver parada.
Ao ligar o cronômetro o display é preenchido com zeros, aguardando o acionamento o botão “ON” para iniciar a contagem. Uma vez contando, o único botão ativo é o botão “OFF”, que para a
contagem. Ao parar a contagem com o botão “OFF” não é possível iniciá-la novamente. O botão “RESET” é usado para zerar os valores e é reconhecido em qualquer momento da operação.
Ao iniciar o cronômetro o display é preenchido com zeros, aguardando o acionamento o botão “ON” para iniciar a contagem. Uma
lidos sequencialmente e cada um deles tem uma função específica. O botão “ON” congela o display mais a contagem continua, o botão “OFF” para a contagem e o botã
contador.
Observe o circuito abaixo e o código fonte que faz a rotina desse microcontrolador. Assuma que todos os
parâmetrosdo PIC estejam configurados corretamente e que o circuito abaixo é funcional:
A mensagem da forma como aparece no DISPLAY LCD só pode ser obtida após duas teclas serem
pressionadas uma após a outra em sequência. São as teclas:
C e A.
A e B.
C e E.
F e E.
D e F.
Semana 06
Analise o programa e a figura com o diagrama esquemático abaixo. O programa é basicamente um pisca-pisca,
acionado por botões (B1 a B4). Cada saída (P1 a P4) tem uma frequência quando o botão correspondente é acionado.
O outro conjunto de saídas (L1 a L8) é acionada pelo potenciômetro, que está conectado na entrada analógica AN0.
Arquivo: Questao.h
==========================================================================
==
#include
#device ADC=8
#use delay(crystal=4MHz)
#use FIXED_IO( B_outputs=PIN_B7,PIN_B6,PIN_B5,PIN_B4 )
#use FIXED_IO( C_outputs=PIN_C7,PIN_C6,PIN_C5,PIN_C4,PIN_C3,PIN_C2,PIN_C1,PIN_C0 )
#define EA1 PIN_A0
#define B1 PIN_B0
#define B2 PIN_B1
#define B3 PIN_B2
#define B4 PIN_B3
#define P1 PIN_B4
#define P2 PIN_B5
#define P3 PIN_B6
#define P4 PIN_B7
#define L1 PIN_C0
#define L2 PIN_C1
#define L3 PIN_C2
#define L4 PIN_C3
#define L5 PIN_C4
#define L6 PIN_C5
#define L7 PIN_C6
#define L8 PIN_C7
==========================================================================
==
Arquivo: Questao.c
==========================================================================
==
#include
short pisca_1, pisca_2, pisca_3, pisca_4;
int ciclo_1, ciclo_2, ciclo_3, ciclo_4;
short le_adc;
long aux_valor, valor_adc, saida;
#define valor_1 25
#define valor_2 75
#define valor_3 125
#define valor_4 225
#define ajuste 131
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(get_timer0() + ajuste);
if (pisca_1)
{
ciclo_1--;
if (ciclo_1 == 0)
{
output_toggle(P1);
ciclo_1 = valor_1;
}
}
if (pisca_2)
{
ciclo_2--;
if (ciclo_2 == 0)
{
output_toggle(P2);
ciclo_2 = valor_2;
}
}
if (pisca_3)
{
ciclo_3--;
if (ciclo_3 == 0)
{
output_toggle(P3);
ciclo_3 = valor_3;
}
}
if (pisca_4)
{
ciclo_4--;
if (ciclo_4 == 0)
{
output_toggle(P4);
ciclo_4 = valor_4;
}
}
le_adc = 1;
}
void main()
{
port_B_pullups(0xFF);
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8|RTCC_8_bit);
output_low(P1);
output_low(P2);
output_low(P3);
output_low(P4);
output_c(0);
ciclo_1 = valor_1;
ciclo_2 = valor_2;
ciclo_3 = valor_3;
ciclo_4 = valor_4;
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
while(TRUE)
{
if (input(B1) == 0)
{
pisca_1 = 1;
}
else
{
pisca_1 = 0;
}
if (input(B2) == 0)
{
pisca_2 = 1;
}
else
{
pisca_2 = 0;
}
if (input(B3) == 0)
{
pisca_3 = 1;
}
else
{
pisca_3 = 0;
}
if (input(B4) == 0)
{
pisca_4 = 1;
}
else
{
pisca_4 = 0;
}
if (le_adc)
{
le_adc = 0;
valor_adc = read_adc() / 29;
aux_valor = valor_adc;
saida = 1;
while (aux_valor > 0)
{
saida = saida * 2;
aux_valor--;
}
if (valor_adc > 0)
{
saida = saida - 1;
}
else
{
saida = 0;
}
output_c(saida);
}
}
}
==========================================================================
==
Pede-se:
a) A frequência de acionamento dos LED P1 e P2.
b) O intervalo de interrupção do TIMER0.
c) Indicar os LEDS que estarão acesos se o potenciômetro estiver fornecendo 3,5 V na entrada analógica, cuja faixa vai de
0 a 5 V.
d) O menor degrau de tensão detectado pelo conversor analógico do PIC.
RESPOSTA DO ALUNO:
a)R: Led P1 pisca em uma frequência de 20 Hz, enquanto que o led P2 pisca em uma
frequência aproximada de 6,667 Hz.
b) R: TIMER0 de 8 bits, configurado com prescaler 1:8, com registrador carregado em 131.
Cálculo:
Ciclo de Máquina = Fosc / 4
Ciclo de Máquina = 4.000.000 / 4
Ciclo de Máquina = 1 MHz
Tempo = (1 / Ciclo de Máquina) * Prescaler * (Registrador - Carga Inicial)
Tempo = (1 / 1.000.000) * 8 * (256 - 131)
Tempo = 0,000001 * 8 * 125
Tempo = 1ms
.c) R: Leds L1, L2, L3, L4, L5 e L6 ficarão acesos.
d) R:Como a tensão VDD é de 5 V, com o conversor AD configurado para 8 bits de resolução, o
menor degrau
de tensão detectado pelo conversor será de 19,531 mV.
5 / (2^8) 19,531 mV.
Semana 07
Leia atentamente as sentenças abaixo, referente ao protocolo de comunicação SPI
(Serial Peripherical Interface):
I - O protocolo SPI utiliza comunicação assíncrona, assim como o
protocolo I2C.
II - No caso de existir apenas um escravo na comunicação, a utilização do pino de seleção
do escravo não é necessária.
III - No caso em se utilizar vários escravos, no modelo SPI, as linhas de SCK, SDO e SDI
são individuais para cada escravo.
IV - O padrão SPI possui as mesmas vantagens de transmissão que o RS-232, porém
pode ser utilizado para longas distâncias.
É CORRETO apenas o que se afirma em:
Apenas a sentença II é falsa.
Apenas a sentença II é verdadeira.
Apenas as sentenças I e IV são verdadeiras.
Apenas a sentença III é verdadeira.
Apenas as sentenças II e IV são verdadeiras.
Valor da questão: 1,00 sua pontuação é 1,00
Essa questão foi cancelada e os pontos serão atribuídos para você.
Sobre a parte de comunicação, leia atentamente as sentenças abaixo:
I - Para comunicações efetivas entre sistemas microprocessados, algumas regras devem ser obedecidas para a
transmissão de dados, tais como a taxa, a forma e o protocolo de envio.
II - Utilizando microcontroladores da família PIC, podemos usar qualquer porta de I/O do mesmo para realizar uma
comunicação do tipo RS-232.
III - A comunicação do tipo USB (Universal Serial Bus) utiliza 2 pinos básicos do PIC, sendo eles o TX e o RX.
IV - Na comunicação serial síncrona sempre existe pelo menos um MESTRE e um ou mais ESCRAVOS (SLAVES).
É CORRETO apenas o que se afirma em:
Apenas as sentenças I e III são verdadeiras.
Apenas as sentenças III e IV são verdadeiras.
Apenas a sentença III é falsa.
Apenas a sentença I é verdadeira.
Apenas a sentença II é falsa.
Semana 08
A família STM32F10xxx possui três opções de boot. Assinale a alternativa que contenha essas opções:
pela memória flash interna, pela memória operacional e pela memória PROM interna.
pela memória flash externa, pelo DMA e pela memória ROM interna.
pela memória flash externa, pela memória do sistema e pela memória ROM interna.
pela memória flash interna, pela memória do sistema e pela memória SRAM interna.
pela memória flash externa, pelo DMA e pela memória EPROM interna.
Os microcontroladores da família STM32 possuem circuitos de supervisor de tensão interna.
Esses circuitos estão sempre ativos e garantem a operação correta dos circuitos a partir ou abaixo de 2V.
Esses circuitos são denominados:
Low Power Reset.
Power On Reset e Power Down Reset.
Brown On Reset e Brown Out Reset.
High Power Reset.
Power Down Reset.
Semana 09
O conversor analógico digital do microcontrolador PIC16F87X trabalha com resoluçãode 8 ou 10 bits,
para uma faixa padrão de tensão de entrada analógica de X a Y, onde X é a tensão VSS, a alimentação
negativa e Y é a tensão VDD, alimentação positiva. Porém, é possível alterar os valores de X e Y através
de duas entradas de referência, -VREF (tensão de referência negativa) e +VREF (tensão de referência
positiva). Num circuito, usando o PIC16F87X, tem-se o valor 174 ao ler uma entrada analógica. Assinale
abaixo a alternativa que indica a tensão aproximada de entrada sabendo que X = +1 V e Y = + 4 V, e a
resolução do conversor é de 10 bits.
0.51 V
1.61 V
1.51 V
1.66 V
0.61 V
O conversor analógico digital do microcontrolador PIC16F87x trabalha com resolução de 8 ou 10 bits, para uma faixa
padrão de tensão de entrada analógica de X a Y, onde X é a tensão VSS, a alimentação negativa e Y é a tensão VDD,
alimentação positiva. Porém, é possível alterar os valores de X e Y através de duas entradas de referência, -VREF (tensão
de referência negativa) e +VREF (tensão de referência positiva). Num circuito, usando o PIC16F87x, tem-se o valor
numérico 235 ao ler a entrada analógica. Assinale abaixo a alternativa que indica a tensão de entrada sabendo
que X = +1V e Y = +4V, e a resolução do conversor é de 10 bits.
3,311V
1,688V
0,688V
2,754V
3,754V
ÚltimoSSssss: