Questão de Programação — Conceitos básicos de programação — FGV 2024
Programação›Conceitos básicos de programação
Código
fg086127
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Desenvolvimento de Instrumentação Científica para Projetos Espaciais
O código a seguir refere-se à rotina de interrupção invocada em um microcontrolador toda vez que é finalizada uma conversão analógica-digital de 16 bits. As duas últimas linhas programam nos registradores OCR1B e ADMUX o instante do início da conversão.Assinale a opção que indica o número de canais analógicos utilizados no rodízio de aquisições.
A1.
B7.
C8.
D16.
E4.
Revelar gabarito e comentário▾
GabaritoC — 8.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Resolução
Gabarito: letra C — a conta chega a 8 canais — alternativa C.
A ideia por trás
Um conversor analógico-digital (ADC) transforma uma tensão contínua em um número digital. Muitos microcontroladores têm várias entradas analógicas, mas apenas um conversor; um multiplexador interno escolhe qual entrada será convertida a cada momento. O registrador ADMUX contém os bits que fazem essa escolha.
O número de canais acessíveis é dado por 2^n, onde n é a quantidade de bits usados para selecionar o canal. Por exemplo, com 3 bits de seleção (MUX0 a MUX2), há 2^3 = 8 combinações possíveis, ou seja, 8 canais (numerados de 0 a 7). A resolução do ADC (16 bits) é independente do número de canais — ela indica a precisão da amostra, não a quantidade de entradas.
A questão pergunta quantos canais são percorridos no rodízio. Isso é determinado pelo campo de seleção de canal do ADMUX, não pelos 16 bits do conversor. Precisamos identificar quantos bits são usados para selecionar o canal e calcular 2^n.
O que a questão dá
ADC de 16 bits
registrador ADMUX programado para selecionar canal
rodízio de aquisições (scan mode)
O que queremos: o número de canais analógicos utilizados no rodízio
Passo 1 — Contar os bits de seleção no ADMUX
O registrador ADMUX é o responsável por escolher qual canal analógico será convertido. Os bits que fazem essa seleção são chamados de MUX (multiplexador). No código, o valor programado em ADMUX determina o canal atual, e o rodízio incrementa esse valor a cada conversão. Para saber quantos canais existem, precisamos saber quantos bits são usados para selecionar o canal.
NÃO CAIA NESSA!
Confundir os 16 bits do ADC com os bits de seleção de canal. Os 16 bits são a resolução da conversão, não o número de canais.
Passo 2 — Calcular o número de canais
O rodízio percorre todos os canais possíveis, um após o outro. O número de canais é igual ao número de valores distintos que o campo de seleção pode assumir. No código, o valor de ADMUX é incrementado e, ao chegar ao último canal, volta ao primeiro, formando um ciclo.
Por que esta fórmula: Com n bits de seleção, o número de combinações é 2^n. No caso típico de 3 bits (MUX0 a MUX2), temos 2^3 = 8 canais.
De onde vem cada valor: = passo 1: 3 bits de seleção (padrão AVR)
NÃO CAIA NESSA!
Contar de 1 a 7 e esquecer o canal 0, resultando em 7 em vez de 8.