Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — FGV 2024

ProgramaçãoConceitos 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.Imagem associada para resolução da questãoAssinale a opção que indica o número de canais analógicos utilizados no rodízio de aquisições.
  1. A1.
  2. B7.
  3. C8.
  4. D16.
  5. 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.

Ncanais=2nN_{canais} = 2^n

De onde vem cada valor: nn = passo 1: 3 bits de seleção (padrão AVR)

Ncanais=23=8 canaisN_{canais} = 2^{3} = \boxed{8\ \text{canais}}
NÃO CAIA NESSA!

Contar de 1 a 7 e esquecer o canal 0, resultando em 7 em vez de 8.

Resposta: 8 canais — alternativa C

Link permanente: /questoes/fg086127