Leitura de dados do acelerômetro MPU6050: interrupções e etapas
Gabarito: letra C. A leitura das informações do MPU6050 foi realizada em 19 interrupções, pois cada etapa do protocolo de leitura é disparada por uma interrupção individual, e não por uma sequência contínua de etapas dentro de uma única interrupção ou sem o uso delas. Essa é a interpretação correta do fluxo de execução do código apresentado.
O MPU6050 é um sensor inercial (acelerômetro + giroscópio) muito usado em projetos com microcontroladores, como Arduino. A comunicação com ele é feita via protocolo I2C, e a leitura dos dados envolve uma sequência de operações: configurar o sensor, solicitar a leitura dos registradores, aguardar a resposta e processar os dados. Em sistemas embarcados, é comum usar interrupções para não bloquear o processador enquanto o sensor responde. Uma interrupção é um sinal que pausa a execução do programa principal para executar uma rotina específica (ISR – Interrupt Service Routine).
A questão apresenta um código que faz parte de um protocolo de leitura. A análise correta depende de entender como as interrupções são usadas nesse código. O gabarito indica que a leitura foi feita em 19 interrupções, ou seja, cada etapa do protocolo (cada leitura de um registrador, por exemplo) é tratada como uma interrupção separada. Isso é diferente de ter 19 etapas dentro de uma única interrupção (alternativa B) ou 19 etapas sequenciais sem interrupções (alternativa A).
A pegadinha da questão está em confundir o número de etapas com o número de interrupções. O candidato pode contar 19 etapas no código e achar que são 19 passos sequenciais, mas o uso de interrupções muda a natureza da execução: cada etapa é disparada por um evento (interrupção), e não por uma sequência linear de instruções. A alternativa C captura exatamente essa distinção.
Para resolver questões como essa, é fundamental observar no código:
A presença de chamadas a funções de configuração de interrupção (como attachInterrupt no Arduino).
A estrutura do código: se cada leitura é feita dentro de uma rotina de interrupção (ISR) ou se há um loop principal que executa as etapas sequencialmente.
A contagem de interrupções: quantas vezes a ISR é chamada ou quantos eventos de interrupção são configurados.
No caso, a leitura foi realizada em 19 interrupções, o que significa que o protocolo foi projetado para que cada etapa de leitura seja acionada por uma interrupção individual. Isso é comum em sistemas que precisam de sincronização precisa com o sensor, evitando que o processador fique ocupado esperando por dados.
Alternativa A — ❌ Incorreta
Afirma que a leitura foi feita em 19 etapas seguidas, sem o uso de interrupções. Isso contraria o gabarito, que indica o uso de interrupções. Se o código não usasse interrupções, a leitura seria uma sequência linear de instruções, mas a questão deixa claro que há interrupções envolvidas. O erro está em ignorar o mecanismo de interrupção presente no código.
Alternativa B — ❌ Incorreta
Diz que foram 19 etapas em uma única interrupção. Isso seria possível se todas as etapas estivessem dentro de uma única ISR, mas o gabarito indica que são 19 interrupções, ou seja, cada etapa é uma interrupção separada. A alternativa confunde o número de etapas com o número de interrupções, assumindo que todas as etapas estão agrupadas em uma única rotina de interrupção.
Alternativa C — ✅ Correta ⟵ GABARITO
Afirma que a leitura foi feita em 19 interrupções. Isso significa que cada etapa do protocolo de leitura é disparada por uma interrupção individual. Essa é a interpretação correta do código, que usa interrupções para cada etapa da leitura dos dados do MPU6050. A alternativa está correta porque reflete a estrutura do código, onde cada leitura é tratada como uma interrupção separada.
Alternativa D — ❌ Incorreta
Propõe uma divisão específica: 5 etapas na primeira interrupção, 12 em 12 interrupções e duas em outra interrupção. Essa divisão não corresponde ao gabarito, que indica 19 interrupções de forma uniforme. A alternativa inventa uma distribuição que não é suportada pelo código, confundindo o candidato com números específicos.
Alternativa E — ❌ Incorreta
Sugere que as 5 primeiras etapas foram em 5 interrupções, as 12 seguintes em uma única interrupção e as duas últimas em duas interrupções. Essa distribuição também não é correta, pois o gabarito indica 19 interrupções, sem essa divisão em blocos. A alternativa tenta criar uma estrutura complexa que não existe no código, sendo um distrator.
Gabarito: letra C