Você está na página 1de 9

Prova de Sistemas Microprocessados

ENE0056 – Sistemas Microprocessados – 2021/1


Prova B1
Início em 06 de setembro de 2021, às 12:00 horas
Término em 07 de setembro de 2021, às 18:00 horas
(não haverá prorrogação do prazo de entrega, não enviem arquivos após este prazo)

A solução da prova é individual. Os alunos não devem conversar ou trocar informações entre
si durante o período de resolução da prova.

1) Sobre a prova
A prova tem a duração de até 30 horas. Ela é composta por quatro questões. Dentro deste prazo, cada aluno deve resolver e enviar
a solução de apenas duas questões, de acordo com as regras a seguir.
• Os alunos de matrícula ímpar devem fazer a Questão 1 e escolher uma dentre as Questões 3 e 4.
• Os alunos de matrícula par devem fazer a Questão 2 e escolher uma dentre as Questões 3 e 4.
Todas as questões possuem o mesmo peso.

2) Regras a nomeação das soluções


Cada aluno deve enviar somente 2 arquivos, um arquivo solução para cada questão resolvida. Os arquivos devem ser
autocontidos, ou seja, não faça uso de bibliotecas. Os arquivos devem ser nomeados de acordo com a seguinte regra:
B1qn-XXXXXXXXX.c, onde
n = número da questão (de 1 até 4) e
XXXXXXXXX = somente os números de sua matrícula.

Atenção: os arquivos com nomes errados serão simplesmente recusados.

3) Regras para preparação e compactação dos arquivos


Não envie todo o projeto do CCS. Envie apenas o arquivo com seu programa fonte, seguindo a regra de nomeação acima citada.
Não compacte individualmente os arquivos. Porém, para facilitar a entrega, junte suas duas soluções em um único arquivo
compactado no formato “zip”. Será recebido apenas um pacote “zip” por aluno. Não compacte no formato “rar”. Este arquivo
compactado deverá ter o seguinte nome:
B1-XXXXXXXXX.zip, onde XXXXXXXXX = somente os números de sua matrícula.
Cada um dos dois arquivos deverá ter na primeira linha do programa fonte (linha de número 1) a matrícula e o nome do aluno, no
formato indicado abaixo, onde XXXXXXXXXX representa o número de matrícula (apenas números)
// XXXXXXXXX – nome do aluno

4) Entrega da resolução
Cada aluno deverá enviar sua solução (um arquivo compactado) usando o Moodle da disciplina. Em caso de problemas, a solução
poderá ser enviada por mensagem o endereço zele@unb.br, antes do término do prazo. O assunto desta mensagem deve ser “B1-
XXXXXXXXX”, onde XXXXXXXXXX representa o número de matrícula (apenas números).

Procure enviar sua solução meia hora antes do término do prazo. Isto vai evitar problemas. Não serão aceitas mensagens que
chegarem após o término do prazo.

É proibido usar delay_cycles() ou laços de programa para gerar


atrasos. Existem os timers que desempenham essa tarefa. Eles
são o motivo principal desta prova.

1
Prova de Sistemas Microprocessados

Questão 1
A ser feita pelos alunos com número de matrícula ímpar

Seu número de matrícula é composto por 9 dígitos.


Reescreva este número, substituindo todos os dígitos “0”
pelo dígito “1”.
Período do PWM Carga
S1 S2
Por exemplo: a matrícula hipotética 09/4504036 é reescrita mseg mseg
como 194514136, que será representada de forma genérica A A 100 30
pelas 9 letras abcdefgh, onde a=1, b=9, c=4, ..., h=6.
A F bcd ef
(50%) Pedido 1) Use o TA0.4 acionado pelo ACLK F A def gh
(32.768 Hz) para gerar pelo pino P1.5 um sinal PWM,
F F def 4*gh
comandado pelas chaves S1 e S2 com as características
apresentadas na tabela ao lado. Não use os divisores. Se A = enquanto a chave está aberta
você quiser, use um cabo para conectar o pino P1.5 ao led F = enquanto a chave está fechada
vermelho para vê-lo piscando.

Tabela com o resumo dos sinais a serem gerados

S1 = A e S2 = A S1 = A e S2 = F

S1 = F e S2 = A S1 = F e S2 = F

(50%) Pedido 2) Usando um cabo, conecte o pino P1.5 (TA0.4) ao pino P2.4 (TA2.1) e use os recursos de
captura de TA2 para medir o período em ms e o ciclo de carga em % do PWM gerado e apresente o
resultado nas variáveis “int periodo” e “int carga” (veja o arquivo B1q1_esq.c). Use o TA2 acionado pelo
SMCLK (1.048.576 Hz) dividido por 16 (ID_3 e TAIDEX_1). A correção, será baseada nos valores
apresentados por essas variáveis. Não se esqueça de habilitar “PxSEL” dos pinos usados.
O uso de interrupção na captura vale 20%!

2
Prova de Sistemas Microprocessados

Exemplo: considerando a matrícula 123456789, separamos os dígitos da forma abaixo.

a b c d e f g h i
1 2 3 4 5 6 7 8 9

Assim temos os parâmetros do PWMs a serem gerados e que estão tabelados abaixo.

Período do PWM Carga Período Carga


S1 S2
Mseg mseg ms %
A A 100 30 100 30
A F bcd = 234 ef = 56 234 24
F A def = 456 gh = 78 456 17
F F def = 456 4*gh = 312 456 68

Você recebeu um programa executável (B1q1.out) correspondente à solução desta questão usando a
matrícula 123456789. É claro que você não terá como acessar suas variáveis. Com este programa rodando,
você pode conectar o pino P1.5 ao led vermelho para ver que o led pisca como foi pedido. Para não deixar
dúvidas sobre o que se pede, apresenta-se abaixo os valores esperados que foram coletados durante sua
execução deste programa. Note que há uma pequena discrepância nos valores exibidos, devido à imprecisão
dos relógios e porque as contas e o resultado são representados em inteiros.

S1 = A e S2 = A S1 = A e S2 = F

S1 = F e S2 = A S1 = F e S2 = F

3
Prova de Sistemas Microprocessados

Questão 2
A ser feita pelos alunos com número de matrícula par

Seu número de matrícula é composto por 9 dígitos.


Reescreva este número, substituindo todos os dígitos “0”
pelo dígito “1”.
Frequência do Carga
S1 S2
Por exemplo: a matrícula hipotética 09/4504036 é reescrita PWM (Hz) (%)
como 194514136, que será representada de forma genérica
pelas 9 letras abcdefgh, onde a=1, b=9, c=4, ..., h=6. A A 10 30
A F c de
(50%) Pedido 1) Use o TA0.4 acionado pelo ACLK
(32.768 Hz) para gerar pelo pino P1.5 um sinal PWM, F A f gh
comandado pelas chaves S1 e S2 com as características F F 4*f gh
apresentadas na tabela ao lado. Não use os divisores. Se A = enquanto a chave está aberta
você quiser, use um cabo para conectar o pino P1.5 ao led F = enquanto a chave está fechada
vermelho para vê-lo piscando.

Tabela com o resumo dos sinais a serem gerados

S1 = A e S2 = A S1 = A e S2 = F

S1 = F e S2 = A S1 = F e S2 = F

(50%) Pedido 2) Usando um cabo, conecte o pino P1.5 (TA0.4) ao pino P2.4 (TA2.1) e use os recursos de
captura de TA2 para medir a frequência em Hz e o ciclo de carga em % do PWM gerado e apresente o
resultado nas variáveis “int frequencia” e “int carga” (veja o arquivo B1q2_esq.c). Use o TA2 acionado
pelo SMCLK (1.048.576 Hz) dividido por 16 (ID_3 e TAIDEX_1). A correção, será baseada nos valores
apresentados por essas variáveis. Não se esqueça de habilitar “PxSEL” dos pinos usados.
O uso de interrupção na captura vale 20%!

4
Prova de Sistemas Microprocessados

Exemplo: considerando a matrícula 123456789, separamos os dígitos da forma abaixo.

a b c d e f g h i
1 2 3 4 5 6 7 8 9

Assim temos os parâmetros do PWMs a serem gerados e que estão tabelados abaixo.

Frequência do Carga frequência Carga


S1 S2
PWM (Hz) (%) Hz %
A A 10 30 10 30
A F c=3 de = 45 3 45
F A f=6 gh = 78 6 78
F F 4*f = 24 gh = 78 24 78

Você recebeu um programa executável (B1q2.out) correspondente à solução desta questão usando a
matrícula 123456789. É claro que você não terá como acessar suas variáveis. Com este programa rodando,
você pode conectar o pino P1.5 ao led vermelho para ver que o led pisca como foi pedido. Para não deixar
dúvidas sobre o que se pede, apresenta-se abaixo os valores esperados que foram coletados durante sua
execução. Note que há uma pequena discrepância nos valores exibidos, devido à imprecisão dos relógios e
porque as contas e o resultado são representados em inteiros. No caso deste exemplo, os valores ficaram
uma unidade abaixo do valore esperado (isto poderia ser corrigido com um arredondamento, mas aqui se
preferiu a solução mais simples)

S1 = A e S2 = A S1 = A e S2 = F

S1 = F e S2 = A S1 = F e S2 = F

5
Prova de Sistemas Microprocessados

Questão 3
No texto abaixo foi usado a seguinte representação:
“AF”: representa a passagem da chave do estado de aberta para o estado de fechada.
“A”: representa a chave no estado de aberta.
“F”: representa a chave no estado de fechada.
Na vida moderna é muito comum o uso de temporizadores, por exemplo, para controlar o tempo de
preparação da pipoca no micro-ondas ou cozimento de ovo. Nesta questão vamos criar um temporizador de
segundos, controlado pelas teclas S1 e S2. A quantidade de segundos é indicada pelos acionamentos (AF)
de S1. O acionamento (AF) de S2 dá partida ao temporizador e o led verde acende para indicar o final do
período especificado (contagem). Durante a contagem, a cada segundo, o led vermelho por acende por 0,2
segundo, para indicar a passagem dos segundos. O programa “B1q3.out” está disponível para esclarecer as
possíveis dúvidas. Além disso, as figuras abaixo ilustram alguns casos.

Controle do temporizador:
S1  quantidade de acionamentos de S1 (AF) indica a quantidade de segundos desejada.
S2  seu acionamento (AF) dá partida à contagem dos segundos.
Led vermelho  durante a contagem, indica a passagem dos segundos (0,8 s apagado e 0,2 s aceso).
Led verde  indica que se chegou ao final do período desejado.
Atenção: o led vermelho pisca somente durante a contagem. Para que o led vermelho seja acionado por este
timer, use um cabo para conectar P1.5 ao led vermelho (JP8, pino 2)

Detalhes do temporizador:
1) Se já se chegou ao final da contagem, o led verde estará aceso. Neste caso, o primeiro acionamento de S1
(AF) deve apagar o led verde;
2) Após o início da contagem, cada acionamento S1 (AF) soma 1 segundo ao intervalo desejado. Com
isso o intervalo pode ser estendido mesmo com o temporizador já iniciado.
3) Após o início da contagem, S2 funciona como uma pausa, ou seja, a contagem fica em pausa enquanto S2
for mantida pressionada (S2=F). Para facilitar a questão, tolera-se um erro de +/- 1 segundo ao reassumir a
contagem.
4) Mesmo com S2 pressionada (S2=F), ou seja, com a contagem em pausa, o acionamento de S1 (AF)
deve somar 1 segundo ao intervalo desejado.

Restrição:
Somente pode ser usado o timer TA0.4 (P1.5) acionado pelo ACLK (32.768 Hz). Soluções com interrupção
são valorizadas.

Ao lado está exemplificado o caso de


temporização de 3 segundos.
Com o temporizador parado, S1 foi acionado
(AF) três vezes para selecionar o período de
três segundos. A temporização foi iniciada com
o acionamento de S2 (AF). Três segundos
após o acionamento de S2, o led verde acende
para indicar o final dos três segundos. Durante
a contagem de tempo, o led vermelho acendeu
por 0,2 s a cada 1 segundo.

6
Prova de Sistemas Microprocessados

Exemplo de de temporização estendida. Com o temporizador parado, S1 foi acionado (AF) 3 vezes para
selecionar o período de 3 segundos. A temporização foi iniciada com o acionamento de S2 (AF). Durante
a contagem de tempo, S1 foi acionada (AF) uma vez, o que estendeu o intervalo para 4 segundos.

Exemplo de temporização pausada. Com o temporizador parado, S1 foi acionado (AF) 3 vezes para
selecionar o período de 3 segundos. A temporização foi iniciada com o acionamento de S2 (AF). Durante
a contagem de tempo, S2 permaneceu acionada (fechada) durante dois segundos (pausa de 2 segundos), o
que resultou no intervalo total de 5 segundos. Mesmo em pausa, led vermelho continuou sinalizando os
segundos. Para simplificar, nos casos de pausa, tolera-se um erro de +/- um segundo.

7
Prova de Sistemas Microprocessados

Questão 4
Nesta questão vamos variar o brilho dos leds vermelho e verde com dois PWMs gerados pelo Timer B, que
para efeitos desta questão, pode ser considerado idêntico ao timer A.

O brilho do led vermelho será controlado pelo PWM gerado por TB0.2, por
isso use um cabo fêmea-fêmea para conectar o pino P7.4 (TB0.2) ao led
vermelho (JP8, pino 2). O brilho do led verde será controlado pelo PWM
gerado por TB0.1 e por isso será necessário fazer o mapeamento de P4.7. As
instruções para esse mapeamento são fornecidas em seguida.
P4DIR |= BIT7; //P4.7 = Saída
P4SEL |= BIT7; //P4.7 saída alternativa
PMAPKEYID = 0X02D52; //Liberar mapeamento
P4MAP7 = PM_TB0CCR1A; //TB0.1 sair por P4.7 (LED2)
Ao lado está a figura que identifica o pino para acionar o led vermelho.
A figura abaixo torna claro todo este esquema.

Timer B usa o SMCLK (1.048.576 Hz), sem divisores, para gerar dois PWM na frequência de 128 Hz. Estes
PWM vão controlar o brilho dos leds. A cada segundo, o brilho (a carga de cada PWM) será variado em
20%. A variação irá alternar entre ascendente e descendente, como mostrado na figura abaixo.

Ilustração do controle do brilho dos leds vermelho e verde. Os números indicam a percentagem (%) do ciclo
de carga. Cada degrau (passo) tem a duração de 1 segundo. Note que o brilho dos dois leds está
sincronizado.

Lembre-se que nosso olho tem pouca sensibilidade quando o brilho é intenso. Por isso, é comum notarmos
pouca diferença de brilho entre carga de 80% e de 100%.
8
Prova de Sistemas Microprocessados

O acionamento de uma das chaves produz uma pausa nos passos do PWM como ilustrado na figura abaixo.

Nesta figura, o brilho dos leds estava em 40% quando a chave S1 foi acionada, por isso, o brilho foi mantido
em 40% até a chave ser liberada. A chave S2 produziria o mesmo efeito.

A combinação das duas chaves permite variar o brilho de um dos leds, mesmo com o sistema em pausa. O
acionamento da primeira chave coloca o sistema em pausa e cada acionamento da segunda chave, avança-se
um passo no brilho de um dos leds.
• Enquanto S1 está pressionada, pulsos em S2 irão variar o brilho do led verde.
• Enquanto S2 está pressionada, pulsos em S1 irão variar o brilho do led vermelho.
Com este recurso, a variação do brilho dos leds deixa de estar em fase. Veja exemplo a abaixo.

Neste caso, S1 foi mantida pressionada e os dois acionamentos de S2 provocaram duas variações de brilho
no led verde.

Interessante: caso uma chave esteja pressionada, 5 acionamentos da outra chave irão colocar o brilho dos
leds em oposição: quando um estiver em 100% o outro estará em 0%.

Restrições: É permitido usar apenas o timer TB0. As soluções com interrupção têm um valor maior.
O programa B1q4.out é disponibilizado para esclarecer as dúvidas.

Você também pode gostar