Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Questão 1 - As interrupções são muito utilizadas no mundo dos microcontroladores e dos microprocessadores. Um exemplo típico são nossos microcomputadores PC. Sempre que pressionamos uma tecla, uma interrupção é gerada para o microprocessador, solicitando o tratamento desta. Assim, o PC não é obrigado a varrer constantemente o teclado em busca de uma tecla. Porém é claro que para que isso seja feito, “alguém ou alguma coisa” deve fazer esta varredura por ele. Isso é feito por um microcontrolador dedicado, interno em todos os teclados de PC. Assim temos a geração de uma interrupção no processamento central por parte de um “periférico”. Porém, para utilizar interrupções, é necessário que o projetista compreenda o ciclo de ações implementadas pelo microcontrolador a partir do momento em que uma interrupção aciona o microcontrolador. Desta forma, apresente todos os passos implementados pelo microcontrolador desde o momento em que uma interrupção ocorre, explicando cada um desses passos.
. 
1- Detecção da Interrupção:
· hardware detecta condição de interrupção na borda de subida ou descida dependendo da configuração
· Um sinal de interrupção é gerado e enviado ao controlador de interrupção interno do microcontrolador.
1- Reconhecimento da Interrupção:
· Controlador de interrupção verifica se a interrupção está habilitada.
· Checagem de prioridade da interrupção
· Sinaliza ao micro se a interrupção for válida
2- Suspensão do Código principal
· Micro desativa temporariamente interrupções adicionais (para evitar interrupções aninhadas).
· Salva o contexto atual do CPU, tipicamente empilhando os registradores atuais e o PC.
3- Mudança para o Vetor de Interrupção:
· endereço da ISR é carregado a partir da tabela de vetores de interrupção.
· PC é atualizado para apontar para este endereço.
4- Execução da ISR:
· A ISR é executada para tratar a interrupção.
· A ISR realiza tarefas específicas, como ler dados, processar sinais, ou alterar estados de periféricos.
 6 - Restauração do Contexto:
· Após a execução do ISR, o contexto salvo é restaurado.
· Registradores e o PC são recuperados da pilha.
7- Retorno à Execução Normal:
· A execução do programa principal é retomada a partir do ponto de interrupção.
· Interrupções adicionais são reativadas, e o sistema continua a operação normal.
Questão 2 - Considere que um aluno de Sistemas Embarcados II deseja realizar um pequeno programa para compreender a comunicação serial USART de um microcontrolador STM32VL Discovery.
a) Faça o fluxograma do projeto de um microcontrolador que faça a leitura do estado de um led acionado por um botão, e envie a palavra “ON” quando o led estiver aceso. 
b) Desenhe o frame da palavra “ON” considerando uma comunicação Serial com as configurações 19200/8-N-2, em transmissão RS-232. 
c) Determine o Bef e o Overhead. 
a)
b)
Frame para "O" (0x4F):
	Start
	D0
	D1
	D2
	D3
	D4
	D5
	D6
	D7
	Stop
	0
	1
	1
	1
	0
	1
	1
	1
	0
	11
Frame para "N" (0x4E):
	Start
	D0
	D1
	D2
	D3
	D4
	D5
	D6
	D7
	Stop
	0
	0
	1
	0
	1
	1
	1
	0
	0
	11
c)
Overhead = Total Bits - Bits Efetivos
Para um caractere:
· Total de Bits = 11
· Bits Efetivos = 8 (BEF)
Overhead = 11 - 8 = 3 bits
Overhead em percentagem: 
BEF/Total de Bits = 3/11 = 27,27%
Portanto:
· Bef: 8 bits por caractere
· Overhead: 3 bits por caractere ou aproximadamente 27,27%
Questão 3 - Um engenheiro pretende realizar a comunicação entre dois microcontroladores e dois diferentes periféricos, contando com o seguinte sistema representado em hardware Represente o comportamento de todos os pinos do master ao longo de uma comunicação do master 1 com o slave 2 para escrita de 1 byte. A Tabela 1 representa o byte presente no registrador de saída de cada dispositivo no momento do início da transmissão. Despreze os intervalos de transição de sinal.
	Ciclo de Clock
	MOSI
	1
	1
	1(meio)
	1
	2
	0
	2 (meio)
	0
	3
	0
	3 (meio)
	0
	4
	1
	4 (meio)
	1
	5
	1
	5 (meio)
	1
	6
	1
	6 (meio)
	1
	7
	0
	7 (meio)
	0
	8
	0
	8 (meio)
	0
Questão 4 - Considere um sistema com múltiplos microcontroladores se comunicando por meio de uma rede zigbee. Um determinado microcontrolador informa o valor de temperatura lido em uma determinada caldeira, que deve ser devidamente escrito em um display conectado a outro microcontrolador da mesma rede. Após alguns erros de controle, um determinado engenheiro percebeu que a informação escrita no display era consideravelmente diferente daquela enviada originalmente (vide Tabela 1, das últimas dez medições realizadas). Escreva qual serviço do Kernel de um RTOS é capaz de solucionar este problema e explique como é realizada a solução.
	Temperatura enviada (ºC)
	Temperatura Display (ºC)
	098
	099
	099
	000
	100
	109
	099
	098
	098
	000
	100
	102
	102
	104
"Mailbox" ou "Message Queue". Estes serviços são usados para a comunicação segura e sincronizada entre tarefas, garantindo que as mensagens trocadas entre elas não se percam ou sejam corrompidas.
Criação da Message Queue:
No início do sistema, cria-se uma Message Queue com tamanho adequado para armazenar as mensagens de temperatura.
Envio de Mensagens pelo Microcontrolador de Leitura:
Sempre que uma nova leitura de temperatura é feita, a tarefa correspondente coloca (envia) essa temperatura na Message Queue.
Recepção de Mensagens pelo Microcontrolador de Exibição:
A tarefa responsável pelo display fica esperando por novas mensagens na Message Queue. Quando uma nova mensagem é recebida, a tarefa lê o valor da fila e o exibe no display.
Pseudocódigo para o microcontrolador de leitura
void leituraTemperaturaTask() {
 while (true) {
 int temperatura = lerSensorTemperatura();
 enviarParaMessageQueue(queue, temperatura);
 delay(intervaloDeLeitura);
 }
}
// Pseudocódigo para o microcontrolador de exibição
void exibirTemperaturaTask() {
 while (true) {
 int temperatura;
 if (receberDeMessageQueue(queue, &temperatura)) {
 exibirNoDisplay(temperatura);
 }
 delay(intervaloDeExibição);
 }
}
Explicação do Exemplo
Leitura de Temperatura:
lerSensorTemperatura() lê a temperatura do sensor.
enviarParaMessageQueue(queue, temperatura) coloca a temperatura na Message Queue.
Exibição de Temperatura:
receberDeMessageQueue(queue, &temperatura) bloqueia até que uma nova mensagem esteja disponível na fila, garantindo a sincronização.
exibirNoDisplay(temperatura) exibe a temperatura lida no display.
Questão 5 - Dois microcontroladores estão operando como mestre e devem realizar uma comunicação I²C para dois periféricos, um sensor de temperatura que escreve informações no microcontrolador que requisitou e um painel de LCD que lê informações do microcontrolador que requisitou. Considere que, simultaneamente, um microcontrolador faça uma requisição para leitura do sensor de temperatura (end. 0xA0) enquanto o segundo microcontrolador realiza uma operação de escrita no painel de LCD (end. 0x9F). Faça um diagrama de tempo representando o processo de arbitragem da comunicação realizada, apontando qual dos microcontroladores ganha o processo de arbitragem
Para representar o processo de arbitragem em uma comunicação I²C envolvendo dois microcontroladores que atuam como mestres e dois periféricos (um sensor de temperatura e um painel de LCD), precisamos entender como a arbitragem funciona no protocolo I²C. O I²C utiliza uma linha de dados (SDA) e uma linha de clock (SCL). Quando dois mestres tentam controlar o barramento ao mesmo tempo, o processo de arbitragem ocorre.
· Microcontrolador 1 (M1) quer ler do sensor de temperatura (endereço 0xA0).
· Microcontrolador 2 (M2) quer escrever no painel de LCD (endereço 0x9F).
Endereço em Binário
· Sensor de Temperatura: 0xA0 (10100000 em binário, considerando 7 bits de endereço e o bit de leitura/escrita).
· Painel de LCD: 0x9F (10011111 em binário, considerando 7 bits de endereço e o bit de leitura/escrita).
Vamos desenhar o diagrama de tempo considerando os primeiros bits dos endereços para ver como a arbitragemocorre.
1. Start Condition: Ambos os mestres geram uma condição de início (Start Condition).
2. Arbitragem: Os mestres começam a transmitir os endereços dos periféricos bit a bit.
3. Detecção de Conflito: No momento em que um mestre tenta transmitir um bit diferente do outro e detecta que a linha SDA não está no estado que ele espera, ele perde a arbitragem.
Questão 6 - Descreva cada instrução do código abaixo da linguagem Assembly do ARM e explique a função que o código executa.
(x, y e z estão mapeados na memória)
0x00	inicio:	ldr		r1,x > Carrega o valor armazenado na posição x da memória pra o registrador 1
0x04			ldr		r2,y > Carrega o valor armazenado na posição y da memória pra o registrador 2
0x08	loop:		cmp		r1,r2 > Compara o valor de registrador 1 com o valor de registrador 2. Atualiza os flags de condição baseados no resultado da comparação (se registrador 1 é maior, menor ou igual a registrador 2.).
0x0C			subgt		r1,r1,r2		 > Se registrador 1 for maior que registrador 1 (condição gt - greater than), subtrai registrador 2 de registrador 1 e armazena o resultado em registrador 1.
0x10			sublt		r2,r2,r1 > Se registrador 2 for menor que registrador 1 (condição lt - less than), subtrai registrador 1 de registrador 2 e armazena o resultado em r2.
0x14			bne		loop > Se os valores em registrador 1 e registrador 2 ainda não são iguais (desvia a execução de volta para o rótulo loop
0x18			str		r1,z > Armazena o valor de registrador 1 na posição de memória z
0x1C			.end > fim do código
Questão 7 - O trecho do programa a seguir é um exemplo de função que calcula o n-ésimo termo da sequência de Fibonacci, dada por (1,1,2,3,5,8,13,21,...), na qual cada termo subsequente corresponde à soma dos dois termos anteriores (com exceção dos dois primeiros termos, 1 e 1). O valor de entrada é n (n>0) e o valor de saída é x, que é o n-ésimo termo.
(n e x estão mapeados na memória)
0x00	inicio:	ldr	r0,n			@Carrega o valor de n no registrador r0			
0x04			cmp 	r0,0x01		@Compara r0 com 0x01
0x08			beq	termo1		@Desvia para termo1 caso positivo
0x0C			sub	r0,r0,0x01	@r0 = r0 - 0x01
0x10			mov	r1,0x01		@r1 = 0x01
0x14			mov	r2,0x01		@r2 = 0x01
0x18			mov	r3,0x01		@r3 = 0x01
0x1C	loop:	cmp	r0,0x01		@Compara r0 com 0x01
0x20			beq	fim			@Desvia para fim caso positivo
0x24			sub	r0,r0,0x01	@r0 = r0 - 0x01
0x28			add	r3,r1,r2		@r3 = r1 + r2
0x2C			mov	r2,r1		@r2 = r1
0x30			mov	r1,r3		@r1 = r3
0x34			b	loop			@desvia para loop
0x38	termo1:	mov	r3,0x01		@r3 = 0x01
0x3C	fim:		str	r3,x			@armazena o valor de r3 em x
0x40			nop				@nenhuma operação
0x44			nop				@nenhuma operação
Para n = 4, pede-se:
a) Realize a execução do programa, indicando, para cada ciclo de relógio:
	i) O estágio de cada instrução utilizando a técnica de pipeline (veja o exemplo), com a seguinte legenda: B=busca, D=decodificação, X=execução.
	ii) O endereço de instrução armazenado no registrador PC (hexa)
	iii) Os valores dos registradores r0, r1, r2 e r3 (decimal) ao final do ciclo de relógio
(Utilize a tabela seguinte para escrever sua resolução)
Na tabela do Excel
b) Quantos ciclos de relógio são necessários para executar o trecho de programa utilizando a técnica de pipeline? E se não fosse utilizado o pipeline?
35 ciclos. Se não fosse executado pipeline, a instrução poderia demorar até 8 ciclos de clock, dando em torno de umas 100 ciclos de clock
image1.png
image2.png

Mais conteúdos dessa disciplina