Você está na página 1de 14

Sistemas Microprocessados

Lista de Exercícios - 1

1) Descreva o que fazem numa CPU: A) a unidade de controle; B) a ULA; e c) os


registradores.
Unidade de controle: gera todos os sinais que habilitam ou inibem barramentos, fazem
seleção de multiplexes, selecionam operações da ULA, controlam pulsos de cópia ou
output enable nos registradores, etc. Enfim, geram todo tipo de sinal de controle interno do
uP;
ULA (unidade de lógica e aritmética): executa todas as operações matemáticas,
aritméticas e lógicas da CPU;
Registradores: são memórias de rascunho usadas como Operadores para as operações
realizadas pela ULA. São memórias rápidas, dentro do núcleo da CPU, por isso permitem
que as operações da ULA sejam executadas sem retardos, na velocidade do clock da
CPU.
(AULA 1 - SLIDES 20-28)

2) Qual a principal diferença entre a arquitetura von Neumann e Harvard?


A arquitetura von Neumann usa apenas um barramento para transferir dados e instruções
da memória para a CPU, enquanto a arquitetura Harvard possui distintos barramentos, um
para dados e outros para instruções.
(AULA 1 - SLIDES 53-54)

3) O que é uma instrução num sistema µProcessado?


Uma instrução é um comando para o µP executar uma determinada tarefa em dados
especificados (Operadores). Ou seja, instrução é um padrão binário que ativa uma certa
máquina de estados finitos, projetada dentro do µP, que executa uma função específica.
(AULA 1 - SLIDE 44)

4) O que é um mnemônico?
Em geral, um mnemônico (do mnemon grego ou “consciente, o que não esquece”) é um
auxílio à memória humana, como uma abreviatura, uma imagem mental, que ajuda a
lembrar de algo. A técnica de desenvolvimento desses dispositivos de memória é chamada
de "mnemônicos". Mnemônicos podem ser usados para lembrar números de telefone,
todos os nomes dos novos colegas da classe, etc. São usadas várias abordagens, e no
caso de µP, para lembrar qual tarefa uma instrução executa. Por exemplo, mover um dado
entre registradores (MOV) ou realizar uma adição (ADD), ou deslocar dado para a
memória (STR – de store) ou da memória (LDR – de load register).
(AULA 1 - SLIDES 65-66)

5) O que são operandos numa instrução?


Em matemática, um operando é o objeto de uma operação matemática. Em
computadores, um operando é parte de uma instrução que especifica dados que devem
ser manipulados (operados) e, por extensão, o próprio dado. Basicamente, uma instrução
de computador descreve uma operação (adicionar, subtrair, mover, etc.) e o operando ou
os operandos nos quais a operação deve ser realizada.

6) Num sistema von Neumann um operando pode ser a memória? E no ARM Cortex?
Sim, nas instruções CISC (sigla para Complex Instruction Set Computer - "Computador
com um Conjunto Complexo de Instruções", tipo computadores von Neumann) o
processadore é capaz de executar centenas de instruções complexas diferentes sendo,
assim, extremamente versátil. Um tipo de instrução é realizar operações tendo como
operando o dado de uma localidade na memória. No ARM isso não ocorre, ou seja, sendo
RISC ( Reduced Instruction Set Computer - "Computador com um Conjunto de Instruções
Reduzido") as instruções têm como operando apenas registradores, que estão internos à
CPU.

7) Qual o número mínimo e máximo de operandos nas instruções ARM?


Nas operações com a ULA, o mínimo será 2 operandos e o máximo 4 operandos. Existem
instruções que não recorrem à ULA (ex: branching) que requer apenas um operando (o
label para o deslocamento).

8) Para que servem os registradores de instrução e o PC (program conter)?


Para armazenar a informação de onde buscar a próxima instrução.

9) O que faz o registrador CPSR no ARM e como ele influencia o programa?


Armazena os dados de flags das últimas operações realizadas na ULA. Modifica o fluxo do
programa e influencia na tomada de decisão controlando o branch de acordo com os flags
(not equal, equal)

10) O que é uma “pilha” num µControlador?


Pilha é uma estrutura de dados na memória que guarda um endereço de retorno de
instrução. Serve também para armazenar valores dos registradores em chamadas de
funções.

11) Como funciona o registrador SP (stack pointer)?


a) deve ser inicializado com endereço inicial da pilha
b) cada vez dermos um push (empurrar a pilha) o SP será decrementado da unidade.
c) cada vez que extraírmos um dado da pilha, o SP será incrementado
d) toda vez que o SP for decrementado um número maior que o tamanho da pilha,
ocorrerá Stack Overflow.

12) Para que serve o sinal de RESET num sistema µProcessado?


Para retornar ao estado inicial em que o microprocessador faz a busca da primeira
instrução do programa. Além disso, vários registradores são reiniciados ou zerados.

13) O que significa RISC e CISC?


Reduced Instruction Set Computer - todas as instruções são executadas usando os
registradores internos da CPU.
Complex Instruction Set Computer - podemos ter instruções complexas executadas
diretamente na memória.

14) O que é interrupção e para que serve?


Um evento externo a CPU, por exemplo, gerado por um dispositivo periférico solicitando a
atenção da CPU. Em resposta, a CPU para a execução normal do programa, e executa a
ISR (interrupt service routine).

15) O que é um ISR (interrupt service routine)?


Função escrita com a finalidade de atender uma interrupção. Nessa função escrevemos o
que a CPU deve executar para responder a solicitação de um pedido de interrupção.

16) O que é assembly e quando é indicado usá-la?


É uma linguagem de máquina onde usamos apenas mnemônicos para representar as
instruções. É linguagem mais básica que podemos usar para escrever um programa,
acima do nível da escrita byte a byte.
É indicada para o desenvolvimento de drivers e sub-rotinas básicas.

17) O que faz esta instrução: ADD R2, R5, R1 LSL #2 ?


R2 = R5 + (R1*4)
Add - operação de soma
O primeiro registrador (R2), sempre será o de destino.
LSL #2 - Logical Shift Left (o valor do registrador R1 é deslocado 2 bits pra esquerda).

18) O que faz esta instrução: STRNEB R2, [R5, R4] ?


Essa é uma instrução de armazenamento na memória (Store) se o flag Not Equal estiver
ativo. O flag NE foi alterado na instrução anteriormente executada na ULA. Se o flag NE
estiver em 0, essa instrução não será executada.
Essa instrução armazena um valor na memória cujo endereço está em R2, resultado de
uma operação de cálculo de endereço entre R4 e R5.

19) Descreva a cadeia de produção de software para um µProcessador moderno (em que
o fabricante já fornece bibliotecas em assembly, obj, e linguagem “C”).
a) Podemos encontrar em bibliotecas (libraries) vários drivers que o fabricante disponibiliza
que cuida das operações básicas de programação dos periféricos. Os arquivos de
biblioteca do fabricante podem já vir compilados no formato .obj.
b) Nos microprocessadores modernos escrevemos nosso código geralmente em
linguagem C, e depois compilamos gerando nosso código .obj.
c) Um programa linker faz a ligação entre todas as chamadas de função que estão nos
códigos .obj e então gera um arquivo executável.
Atualmente todo esse processo é feito dentro de uma IDE (Integrated Development
Environment) que já possui um editor de texto, um compilador, acesso às bibliotecas dos
fabricantes e o linker. As IDE's modernas possuem inclusive o sistema de gravação da
flash dos microcontroladores, além disso as IDE's possuem ainda interface de debug.

20) Qual o papel dos IDEs (Integrated Development Environment ou Ambiente de


Desenvolvimento Integrado) na cadeia de produção de software para µControladores?
As IDE's integram todo o processo de produção de software para microprocessadores,
agregando ainda as funções de depuração.

21) Por que o STM32 tem memória flash, memória RAM estática, e memória EEPROM?
A memória flash é a que retém programa, a memória RAM estática é uma memória de
dados genéricas e volátil (ou seja, vai perder o conteúdo após o desligamento do
microprocessador) e a EEPROM é uma memória de dados genéricos não volátil.

22) O que significa dizer que os periféricos do STM32 estão mapeados no espaço de
memória?
Significa dizer que só tem um mapa de endereços no ARM e que tanto a memória quanto
os periféricos estão alocados dentro desse espaço de memória.

23) O que é um barramento (bus)?


Possui dois significados:
1) conjunto de fios por onde trafegam sinais digitais;
2) conjunto de fios com sinais de controle, dados, endereços, todos associados a um
protocolo.
Sistema de comunicação e transmissão de dados de um microprocessador e periféricos.
(AULA 6 - Slide 7)

24) Em qual barramento estão conectadas as GPIOA...GPIOE no STM32?


No barramento APB2.

25) Descreva como funciona o SYSTICK no STM32 e qual a diferença com um registrador
de tempo integral (registrador RTC) do chip.
O SYSTICK serve pra gerar uma base de tempo para a operação do microprocessador. Já
o RTC é um registrador usado para gerar base de tempo específico para o RTOS (real
time operating system).

26) O timer TIM1, e os timers TIM2, TIM3, e TIM4 estão em quais barramentos do STM32?
Por que razão você acha que eles estão em barramentos separados?
O TIM1 está no APB2, enquanto que os outros estão no APB1. Possivelmente porque as
funções primárias do ARM estão alocadas no barramento APB2 de alta velocidade. Os
outros periféricos estão no barramento APB1 de baixa velocidade.

27) Descreva como funciona um TIMER (e.g. TIM2) nos processadores ARM.
O clock principal do microprocessador (AHB barramento de alta perfomance, ex.: 72 MHz)
é divido por um prescaler (PSC=contador/divisão de frequência). A frequência resultante
dessa divisão é aplicada ao contador do timer (Timer Counter)(slide 23, aula 05). Um
registrador (ARR=auto reload register) é recarregado nesse time counter cada vez que o
contador atingir 0. A partir daí, a frequência de saída desse conjunto pode gerar:
a) pedido de interrupção para CPU = interrupção temporal;
b) PWM (Pulse Width Modulation) quando a frequência é comparada com o valor do CCR
(Compare & Capture Register);
c) outras funções ainda podem ser obtidas desse timer.

28) Na sua placa STM32F103C8 você deseja usar o timer 3 canal 3 para gerar PWM,
porém a linha de interrupção 0 já está usada. Qual seria a solução?
Veja no esquema de pinagem da placa, página 5 da apostila:
O T3C3 está ligado ao pino PB0. O pino PB0 só pode pedir interrupção pela linha/canal de
interrupção 0. Nesse caso existem duas soluções:
a) ou trocamos o canal do timer para T3C1, C2 ou C4;
b) liberamos o canal de interrupção 0, mudando o evento que solicita a interrupção por
esse canal.

29) Na sua placa STM32F103C8 você deseja usar o timer 3 canal 3 para gerar PWM,
porém você já configurou sua placa para ler sinal analógico pelo canal 8. Qual seria a
solução?
a) usar outro canal do timer 3;
b) usar outro timer, ex TIMER2, TIMER1 (EXCETO T1C2), etc...
c) reconfigurar para usar outro canal ANALÓGICO disponível...

30) Na sua placa STM32F103C8 você deseja usar o GPIO PB0 para gerar PWM, porém o
timer 3 canal 3 já está programado para gerar interrupção. Qual seria a solução?
a) reconfigurar a interrupção gerada por T3C3 para T1C2, ENTÃO uso o T3C3 como
PWM;
b) reconfiguro para usar outro canal PWM (qualquer dos timers e canais disponíveis);

31) Qual é a função principal dos pinos 34 e 37 (SWDIO e SWCLK) em sua placa
STM32F103C8?
A principal função é conectar com a interface JTAG (versão SINGLE WIRE - ou SW).
A interface SW serve para: a) gravar a flash com o programa a ser executado; b) serve
para depuração (DEBUGGING) do software enquanto é executado (on-line debugging).

32) Explique o que é watchdog timer e como você o usaria em um superloop que chama 2
funções.
É um subsistema que acusa quando o programa entra em LOOP infinito.
Um contador (WD counter) deve ser resetado (valor máximo) durante cada entrada/saída
de rotina. Esse contador é decrementado automaticamente (hardware). Se o contador
atingir ZERO é porque o programa está travado e NÃO está resetando o contador.
No caso de um superloop com duas funções, basta resetar o WD no início do superloop e
na entrada/(ou saída) de cada função chamada.

33) Você usaria o WDT (watchdog timer) dentro de uma ISR (interrupt service routine)?
Para que?
SIM... para acusar que o programa está travando dentro de uma ISR.
O melhor é testar as ISRs o suficiente para não precisar usar o WD... para tornar as ISRs
mais rápidas.
34) Se o custo de um cristal gerador de clock for alto para uma placa com STM32, você o
faria funcionar assim mesmo? Nessa hipotética placa, teria como ter um RTC?
SIM, o chip STM32F103 tem internamente dois osciladores (HSI-RC ou high-speed
internal clock de 8MHz, e LSI-RC ou low-speed internal clock de 40 KHz). Sim, o real-time
clock (RTC) poderia ser programado para funcionar a partir do LSI.

35) Por que colocamos um cristal de clock no ARM Cortex e quais os valores limites do
cristal para STM32?
Colocamos um cristal de clock para aumentar a precisão da frequência de clock do
sistema. Cristais tem muito pouca variação de frequência comparado a circuitos RC como
os do HSI. Os valores limites para cristais no ARM STM32F103 são: de 4 até 16 MHz no
HSE (high-speed external clock). O sinal LSE (low-speed external clock) aceita apenas
cristais 32.768 KHz.

36) Como conseguimos 72 MHz no sistema se temos apenas um cristal de 8MHz na placa
STM32F103C8?
Um circuito interno PLL (phase-locked loop) multiplica a frequência de entrada por um
valor programado nos registradores do circuito RCC (Reset and Clock Controller).

37) É possível operar sua STM32F103C8 com um clock de 56 MHz? Como fazer isso?
Sim, devemos ajustar os valores do prescaler (divisor da frequência de clock do cristal de
entrada) e ajustar o valor do multiplicador de frequência no PLL. A razão entre prescaler e
multiplicador vezes o clock de entrada deve dar 56.10^6 (56 MHz).

38) Descreva o conceito de clock-gating usado nos ARM, para que servem, e dê um
exemplo de como você já configurou um clock em uma das aulas práticas.
Em eletrônica embarcada "potência ou consumo de energia" é extremamente importante.
Para reduzir o consumo, os circuitos que não estão em uso tem seus clocks desativados.
Esse é o recurso de clock-gating que o ARM STM32 implementou em seus sistemas
microprocessados. Para utilizar qualquer das GPIOs, nas aulas práticas habilitamos o
clock tanto do barramento genérico onde a GPIO está ligada quanto da própria GPIO. São
exemplos de chamada de habilitação de clock:
// habilitar o clock no barramento das GPIOs B e C
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

39) O que é PWM e por que é mais eficiente que sinais analógicos em certas
aplicações (e.g. controle de velocidade de um motor)?
(vai cair na prova...) O PWM é o modulador por largura de pulso. Ele é mais eficiente
pois controla o tempo de ativação do transistor (no caso do exemplo), o que diminui
consideravelmente a potência dissipada nos componentes do circuito.

40) Como você programa (quais registradores você configura) a frequência de


operação do PWM no STM32?
(companheira da anterior... vai cair na prova)

41) Como você programa a resolução (quantos passos) do PWM no STM32?


(companheira da anterior... vai cair na prova)
Outro fator a ter em conta é a resolução mínima que você precisa do sistema PWM. Ou
seja, quantos passos diferentes no ciclo de trabalho são necessários. As escolhas mais
óbvias podem ser 100 passos, correspondentes a porcentagens, ou 256 etapas,
correspondentes ao intervalo de valores em um inteiro de 8 bits. Talvez você só queira 16
diferentes intensidades de uma luz de fundo. Em geral, é certo ter mais resolução do que
você precisa, mas ter menos pode ser um problema.
42) Se um timer TIMX tem 4 canais no ARM, como você modificaria a resolução do canal 2
e do canal 4?
Modificando o valor do prescaler, ajustando para que o clock do contador (FCK_CNT slide
22 aula 5) seja maior, dentro dos limites possíveis de divisão que o ARR (auto-reload
register) consegue atuar.

43) É possível usar frequências de operação do PWM diferentes no canal 2 e 4 do mesmo


timer TIMX?
Não, porque eles dependem do mesmo ARR (que é o registrador que controla o tempo de
reload do timer counter, que gera a freq de saída). É possível variar o DUTY-CYCLE do
canal 2 e do canal 4 independetemente (variando o registrador do comparador do canal 2
e 4); mas os dois operam na mesma frequência.

44) Quais os possíveis modos de operação para um dos pinos de saída de uma das portas
GPIO?
(slide 50 ... 57 aula 5)

45) Quais os possíveis modos de operação para um dos pinos de entrada de uma das
portas GPIO?
(slides 52...57 aula 5)

46) Como fazemos para programar um pino da GPIO para saída de PWM ou entrada de
RTX da UART?]
(consulte as práticas... tem na apostila...)

47) O que faz a função: GPIO_Init(GPIOB, &GPIO_PtB);


(apostila...)

48) O que faz a função: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,


ENABLE);
Habilita o clock do periféfico GPIOC

49) O que faz a função: GPIO_WriteBit(GPIOC, GPIO_Pin_14, Bit_RESET);


(prática...)

50) O que faz a função: TIM_SetCompare2(TIM4, brilho);


Ajusta o comparador 2 (PWM2) do timer 4 com o valor brilho. o VALOR do brilho deve ser
entre 0 e o vamor máximo do ARR do timer 4. Esse valor (brilho) ajusta o DUTY-CYCLE
do pwm2 do timer 4.

51) Por que declaramos a variável ticks dessa maneira? (volatile e fora da ISR
SysTick_Handler)
// define a var "ticks" (contador atualizado a cada 1ms)
volatile uint32_t ticks;
// rotina de tratamento da interrupcao (ISR) to timer SysTick
void SysTick_Handler(void)
{ ticks++;
}
Porque ela precisa ser uma variável GLOBAL para que outras funções a acessem (por
isso fora da ISR). Por outro lado, ela precisa ser VOLÁTIL porque antes de realizar
qualquer operação nesta variável devemos forçar a buscar o valor na memória - e não
usar um valor que pode estar representado dentro de um registrador no núcleo do ARM.
Volátil indica que o valor da memória pode ter sido modificado por uma rotina externa, por
isso devemos busca-lo sempre na memória.

52) O que faz este trecho de código em ASSEMBLY do ARM?


main:
MOVS R0, #0
B.N ??main_0
??main_1:
ADDS R0, R0, #1
??main_0:
CMP R0, #15
BLT.N ??main_1
??saida:

a) carrega o registrador R0 com um valor direto zero...


b) faz um branch para ??main_0
c) em ??main_0 compara R0 com valor imediato #15
d) se for menor (BLT), volta para o branch ??main_1
e) em ??main_1, soma 1 ao R0 (incrementa ++R0)
f) cai em ??main_0 e compara com #15
Ou seja, o loop incrementa o registrador R0 até atingir 15, caso em que sai pelo label
Lista de Exercícios - 2

1) O que é considerado barramento (bus) em sistemas microprocessados?


1) conjunto de fios por onde trafegam sinais digitais;
2) conjunto de fios com sinais de controle, dados, endereços, todos associados a um
protocolo.
Sistema de comunicação e transmissão de dados de um microprocessador e periféricos.
(AULA 6 - Slide 7)

2) Qual a principal diferença entre comunicação serial e paralela?


A principal diferença entre comunicação serial e paralela é que na comunicação paralela
todos os bits de dados são enviados ao mesmo tempo em um barramento, já na
comunicação serial os dados são enviados um bit por vez, em uma rede de comunicação.
(AULA 6 - Slide 4)

3) Quais fatores comprometem a velocidade de transmissão de dados paralelos?


Velocidade máxima do barramento é limitada por:
comprimento do barramento (longos fios paralelos = capacitâncias maiores, os sinais
digitais começam a levar mais tempo para mudar de estados) –
A regra adequada para barramentos paralelos manter curtas distâncias, para evitar
desalinhamento entre sinais (longos barramentos aumentam as variações das subidas e
descidas dos sinais, isso causa desalinhamento de sinais que deveriam chegar
simultaneamente ao destino); a segunda regra está relacionada com o número de
dispositivos no barramento (mais dispositivos mais distorções nos sinais);
(AULA 6 - Slide 38)

4) Basicamente, o que é um protocolo de comunicação?


Um protocolo é um conjunto de regras que rege a comunicação.
Define, por exemplo, sinais de requisição de dados, tempo que os sinais ficaram
disponíveis, velocidade, multiplexação no tempo, arbitragem entre mestre e escravo, etc…
(AULA 6 - Slide 7 - 11)

5) Considerando que uma comunicação tem um dispositivo mestre e outro escravo, quais
podem ser os métodos de controle de protocolo? Explique cada método
Métodos de controle em protocolos

Protocolo STROBE (strobe protocol)


1. Mestre ativa (REQ) requisitando receber dados;
2. Escravo coloca o dado no bus dentro de um tempo “t” access

3. Mestre recebe o dado e desativa (deasserts) o sinal (REQ)


4. Escravo se torna pronto (ready) para próxima requisição

Protocolo HANDSHAKE (handshake protocol)


1. Mestre ativa (REQ) para receber dados
2. Escravo coloca dado no barramento e ativa (ACK)
3. Mestre recebe dado e desativa (REQ)
4. Escravo se torna pronto para uma próxima requisição
(AULA 6 - Slide 10)

6) Qual a diferença entre comunicação paralela por código e por DMA?


A comunicação por DMA usa um processador dedicado e especializado em transferir
dados rapidamente direto para a memória do sistema; enquanto a comunicação por código
depende de interromper a CPU (ou fazer polling) e a transferência de dados do periféricos
para a memória depende de um programa (de uma rotina, um código, um serviço de
interrupção ISR, etc.).
Chamamos “por código” porque a transferência dos dados recebidos depende de um
programa executado pela CPU.
(Aula 6 - Slides 13 e 23)

7) Explique as etapas de funcionamento do DMA.


a)Para cada periférico, a CPU primeiro configura o DMAc (DMA controller, ou controlador
de DMA – um hardware especializado) com pelo menos 3 parâmetros:
Endereço do periférico de onde os dados devem ser lidos / escritos
Endereço da memória onde os dados devem ser escritos / lidos
A quantidade total de bytes que será transferida na operação.

b)Periféricos geralmente têm buffers de memória; quando cheio, o periférico solicita


serviço ao DMAc acionando DRQx

c)O DMAc solicita controle do barramento ativando DRQ (data request) da CPU... ao final
da instrução atual, a CPU pode liberar o controle do data bus, address bus, e os sinais de
controle. Para avisar ao DMAc a CPU ativa DACK (data acknowledge).

d)O DMAc então avisa o periférico que o serviço dele será atendido ativando DACKx (data
acknowledge)

e)A CPU então coloca todos os sinais dos barramentos em 3-state (nesse momento a
CPU pode executar instruções na cache interna)

f)O DMAc assume o controle do bus de endereços e os sinais de controle – os dados são
fornecidos pelo periférico!

g)Quando chega ao final da transferência do bloco o DMAc desativa DACKx para o


periférico,

h)Pode ser que (padrões antigos) o DMAc peça interrupção à CPU para que ela organize
(fique ciente) dados novos na memória.

i)A CPU atende um ISR do DMA (ou não) e retoma o controle do barramento; assim,
continua a execução do programa principal.
(Aula 6 - Slides 24-26)

8) Como o controlador de DMA resolve uma situação em que 3 periféricos pedem acesso
direto durante o mesmo clock?
As situações de pedidos de ISR simultâneos requerem ARBITRAGEM que podem ser por
prioridade ou por (Dayse Chain) serial linear
(Aula 6 - Slides 32)

9) O que é um árbitro de barramento?


É um circuito que decide/controla a prioridade que um periférico tem sobre outro quando
fazem requisição de (a) interrupção ou de (b) DMA. A arbitragem pode ser feita por
software (via CPU), mas não é usual. O hardware que controla IRQ ou DMA geralmente
possui um árbitro que decide como atender diferentes requisições de interrupção ou DMA
que ocorrem simultaneamente.

10) Por que um árbitro será necessário no controlador de interrupções e no controlador de


DMA?
Pois se houver várias interrupções (ou pedidos de DMA) ao mesmo tempo é necessário
priorizar quais periféricos tem dados mais importantes e/ou requerem atenção mais
imediata.

11) Quais os métodos de arbitragem mais utilizados?


Por prioridade fixa: um ranking (configurado pela CPU no controlador de IRQ ou DMA)
aponta quais periféricos tem maior prioridade. Estratégia preferida quando há clara
diferença na prioridade por periférico. Por exemplo: o pedido de interrupção gerado por
uma tecla que foi acionada em um teclado deve ter menos prioridade que um pedido de
interrupção (ou DMA) gerado pela chegada de um pacote de dados via rede Ethernet. Isso
porque um ser humano provavelmente tocará outra tecla apenas depois de alguns
décimos de segundo, enquanto outro pacote de dados pode chegar num intervalo de
milésimos de segundo.

Por Prioridade rotativa (round-robin): nessa estratégia o árbitro muda a prioridade dos
periféricos baseado no histórico de serviços prestados ao periférico. O último que recebeu
atendimento terá menor prioridade temporariamente, para que outros entrem na ponta da
fila. Por outro lado, os que estão na ponta da fila (alta prioridade) serão deslocados para o
final assim que forem atendidos, fazendo um rodízio de prioridades.
(Aula 6 - Slides 35)

12) Qual o principal problema do método daisy-chain?


O principal problema é que, se algum periférico falhar, toda a cadeia após ele deixa de
funcionar. Um problema adicional é que ele não suporta esquemas avançados de
prioridade, porque a prioridade é fixa e física, determinada na hora da conexão da cadeia.
(Aula 6 - Slides 36)

13) Por que o round-robin pode ser melhor que o método prioridade fixa? Existe aplicação
para o método de prioridade fixa?
Porque ele gerencia as prioridades conforme o programa vai rodando, enquanto o de
prioridade fixa tem valores pré-programados. Uma aplicação do método de prioridade fixa
pode ser quando há poucos periféricos e suas prioridades são facilmente estabelecidas.

14) Qual a principal diferença entre comunicação serial síncrona e assíncrona?


Numa comunicação serial assíncrona, cada bloco de dados inclui um bloco de informação
de controle (chamado flag), para que se saiba exatamente onde começa e acaba o bloco
de dados e qual a sua posição na sequência de informação transmitida.
Numa comunicação serial síncrona, cada bloco de informação é transmitido e recebido
num instante de tempo bem definido e conhecido pelo transmissor e receptor, ou seja,
estes têm que estar sincronizados. Para se manter esta sincronia, é transmitido
periodicamente um bloco de informação que ajuda a manter o emissor e receptor
sincronizados (....não é isso !!! )

(ver slides aula 7 – slide 16/17/18...) RESPOSTA CORRETA:


Na comunicação serial é possível que ocorra duas situações: (a) o controlador da rede
(mestre) pode enviar para o escravo o sinal de sincronização (clock), ou (b) os dois
dispositivos podem ter que sincronizar os dados baseados em seus clocks, internamente.
No primeiro caso (síncrono) a sincronização pode ser feita por um sinal de clock em um
fio (caso do SPI ou I2C) explicitamente conectado entre dispositivos, ou os dispositivos
podem extrair o clock que está modulado no próprio sinal de dados (ver line-coding slide
14/15). No segundo caso (assíncrono) os dois dispositivos devem “ser programados” para
operar em uma determinada taxa de transferência de dados pré-fixada (caso da UART).

15) Nossas placas STM32F103 deverão se comunicar entre si. Elas usam um par de fios
(TX e RX). Que tipo de terminação será usada? (single-ended ou differential)? Precisamos
interligar os terras das duas placas durante a comunicação?
Single-ended (porque precisamos interligar o terra entre elas para servir de referência...
Sim, precisamos interligar os GNDs caso contrário o ruído nos fios ou a diferença de
tensão entre os terras das placas podem fazer os níveis lógicos serem irreconhecíveis.
Portanto, precisamos ter em ambas o mesmo “zero volt”.
16) Quando enviamos dados seriais, quais as técnicas para sincronizarmos transmissão e
recepção de dados?
A sincronização pode ser feita por (a) um fio de clock separado (que geralmente o mestre
controla) e (b) pela modulação da frequência de clock junto com os dados transmitidos
(line-coding).

17) Line coding é uma forma de sincronizar emissor e receptor enviando pelo canal o
dado e um tipo de codificação na qual o receptor pode extrair o clock do próprio canal. Cite
3 métodos de line-coding que você se lembra e explique como funcionam.
Slide 14/15 aula 07
Non-return to zero NRZ (em que o sinal não retorna para o valor zero, está sempre entre
+A e –A); Return to zero RTZ (em que o sinal sempre retorna para o valor zero após ter
ficado ½ bit em +A ou –A); e Bipolar AMI (em que o sinal o sinal retorna ao zero mas usa
uma forma complexa que só muda de estado dependendo do último bit enviado).
(não precisa explicar cada um como eu fiz, apenas citar)

18) Sobre a UART/USART diga o que é V ou F:


a) (V) este tipo de interface pode enviar dados ao mesmo tempo que recebe dados
b) (F) para criar uma UART/USART não precisamos usar registradores de deslocamento
c) (F) como a UART não sabe quando termina o dado (5,8,9 bits) ela não pode pedir
interrupção
d) (V) parâmetros do protocolo da UART tem que ser combinado e configurado
previamente
e) (F) start bit e paridade podem ser eliminados, mas baud rate e tamanho dos dados não.

19) Os sinais RTS (request to send) e CTS (clear to send) são usados para qual
finalidade?
Para instanciar uma camada de HANDSHAKE por hardware.

RTS: request to send - indica que a USART está pronta para receber dados (quando está
em nível low).
CTS: clear to send - habilita o recebimentos de dados (low) indicando que está pronta.
Também serve para bloquear a transmissão de dados ao final da transferência atual,
quando os dados ainda não foram retirados da USART (quando ativo em high).
Estes sinais são utilizados para que se faça handshake por hardware.
(AULA 7 - Slide 23)

Lembrando... um Protocolo Handshake::


1. Mestre ativa req para receber dados
2. Escravo coloca dado no barramento e ativa ack
3. Mestre recebe dado e desativa req
4. Escravo se torna pronto para uma próxima requisição
(AULA 6 - SLIDE 10)

20) Meu grupo escolheu usar RX2 e TX2 na STM32F102, mas outro grupo escolheu RX3
e TX3. Isso pode funcionar? Por que?
Sim, porque RX e TX são apenas os pinos de comunicação, ou seja, onde há a entrada e
saída de dados da sua placa. A configuração dos pinos é feita pelo programa desenvolvido
e independe dos pinos da outra placa pela qual ocorre se deseja comunicar.

21) Qual o papel do SCK, do MOSI, do MISO e do SS nas interfaces SPI


O SS (Slave Select) realiza a seleção do escravo, o SCK é o clock serial do sistema que
sincroniza a transmissão/recepção serial, MOSI (Master Output Slave Input) é o canal (o
fio) pelo qual o mestre envia informação ao escravo e MISO (Master Input Slave Output) é
o canal (o fio) pelo qual o mestre recebe informação do escravo.
22) Interfaces SPI usam conexões single-ended ou diferenciais? O terra pode ser
negligenciado?
Interfaces SPI usam conexões Single-ended, sendo assim o terra não pode ser
negligenciado.

23) Quantos dispositivos no máximo poderiam ser ligados na SPI?


De acordo com o padrão desenvolvido pela Motorola, apenas 4 dispositivos (escravos)
podem ser conectados. O padrão utiliza a seleção de dispositivo por hardware (são
apenas 4 fios de SS0...SS3)

24) Quantos dispositivos no máximo poderiam ser ligados numa rede I2C?
O I2C apesar de utilizar apenas 2 fios de comunicação, no protocolo desenvolvido pela
Philips, o mestre envia SERIALMENTE o endereço do dispositivo logo após o start-bit
(7bits de endereço = 127 dispositivos). Posteriormente, o padrão I2C ampliou para
endereços para 10-bit, permitindo até 1023 dispositivos conectados nos mesmos dois fios
físicos.

25) Por que podemos ligar todos os dispositivos I2C em apenas dois fios? Eles não entram
em curto-circuito? O que acontece se esquecermos de ligar os resistores Rp?
Os dois fios que compõem a linha I2C requerem que os dispositivos conectados a ela
tenham TODOS saídas “open-drain”. Dessa forma, todos as saídas possuem transistores
SEM POLARIZAÇÃO push-pull (apesar de haver um curto-circuito entre todas as saídas,
não significa que os sinais serão ligados ao VCC ou GND por saídas push-pull). O resistor
externo é necessário para polarizar os transistores conectados às linhas. Se esquecermos
de ligar os resistores (a linha) os dois fios ficarão flutuando, e poderão ter níveis lógicos
irreconhecíveis – a rede não funcionará.

26) O mestre baixou a linha SDA na interface I2C e pulsou o sinal de clock 8 vezes. O que
todos os escravos da linha devem fazer durante esse instante e no instante seguinte?
Todos os escravos devem atentar para o endereço mandado pelo mestre. No instante seguinte
(próximo clock) o receptor deve enviar acknowledge.
(AULA 7 - SLIDE 37)

27) Quem é o mestre e quem é escravo na rede I2C?


Qualquer dispositivo da rede pode se tornar mestre, no entanto, durante o processo de
comunicação apenas um mestre pode estar ativo, sendo assim neste instante os demais
dispositivos da rede irão atuar com escravos.

28) O que ocorre se dois dispositivos estiverem assumindo o controle da I2C ao mesmo
tempo?
Ocorrerá conflito, assim havendo a necessidade de se arbitrar a rede. Sendo assim antes
de iniciar a comunicação o dispositivo verifica as linhas (ambas high), assim que detecta
que enviou um valor ‘1’ e a linha não foi para ‘1’ é porque está havendo conflito, então o
mesmo abandona a tentativa de comunicação e tenta mais tarde.
(AULA 7 – SLIDE 39)

29) Como um escravo sabe se deve enviar dados ou ler o dado que o mestre enviou pela
I2C?
Através do bit de comando RD/~WR que foi enviado (também serialmente) depois do
endereço.
(AULA 7 - SLIDE 37)

30) Cite 3 vantagens da I2C sobre a SPI e 3 vantagens da SPI sobre a I2C.
(AULA 7- SLIDE 43)

31) USB usa sinal diferencial. Por que então a interface tem um terminal +V e um GND?
Para prover energia para o periférico em cascata.
(AULA 7 – SLIDE 46)

32) USB usa uma arquitetura HOST e vários HUBs podem ser conectados criando uma
cadeia grande de periféricos. O que significa arquitetura HOST? Quem é o mestre e quem
é escravo na rede?
Host significa que um computador será o mestre de toda a rede. Qualquer HUB que entrar
na rede deve ser reconhecido pelo computador, que procurará um DRIVER para o
periférico (ou seja, uma rotina para prover um protocolo de comunicação com o periférico).
Por exemplo, se você conecta um mouse em um computador, o Windows, ou o Linux deve
reconhecer o periférico e buscar em sua biblioteca um driver para comunicar corretamente
com ele.
O mestre de uma rede USB será sempre o HOST, ou seja, o computador que hospeda ou
aceita a rede USB.

33) A rede CAN usa dois fios apenas CAN+ e CAN-, que eletricamente se comportam
como?
Na rede CAN a mensagem é transmitida a todos os nós da rede pelos dois fios CAN+ e
CAN- ou CAN-HIGH e CAN-LOW, o primeiro tem a tensão entre 2,5 e 3,5v enquanto o
segundo entre 1,5 e 2,5V. Os dois fios transmitem a mesma mensagem; porém um
contrário ao outro: enquanto o Can-High está em nível baixo, o CAN-low estará em Nível
alto e vice-versa. Este recurso dá à rede segurança pois é um modo de verificação de erro
no envio/recebimento de dados.
slide55 - aula7

34) O que é um “frame” em comunicação serial? (como os usados na rede CAN e USB)
Um frame é um pacote de dados que representa uma mensagem. O frame é composto da
informação que se quer enviar e outros itens que vão diferenciar de acordo com o
protocolo usado. Alguns exemplos da rede CAN são: um indicador de início do frame,
prioridade da informação, o número de bits que compõem os dados, bits para identificação
de erros, entre outros. slide57 - aula7

35) Qual a resolução de cada conversor analógico – digital (ADC) no STM32F103?


Manual... ou livro...
12 bits

36) Cada conversor ADC no ARM STM32F103 é do tipo “aproximação sucessiva”. O que é
isso, e qual o tempo (em termos de clks) que o ARM usa para converter um sinal
analógico?
Trata-se de um conversor que tenta encontrar o valor aproximando valores a partir do bit
mais significativo e testando cada um dos bits inseridos.
O conversor aproximação sucessiva tem um conversor D/A embutido. A conversão
começa pelo MSB e um comparador testa para ver se o valor gerado é superior ao valor
de entrada, se for, MSB é desligado e o segundo MSB é então testado. Se o valor gerado
for menor que o valor de entrada então liga-se o segundo MSB e realiza o teste
novamente, assim sucessivamente até o LSB que será ligado e depois desligado. Em cada
clock podemos mudar o valor de um dos bits e testar o valor gerado.
Por isso, serão necessários o número de bits + 1 clocks. Ou seja, para um conversor de 12
bits, gastaremos 13 clocks.

37) O que significa ter 10 canais conversores ADC no ARM STM32F103 se temos apenas
2 circuitos conversores incorporados no chip?
Significa que o sistema microcontrolador tem 10 entradas de sinais analógicos que são
selecionadas por multiplexes (chaves analógicas) como entradas dos 2 conversores ADC
do sistema. (aula 8 slides 17...21)

38) Controlando a frequência do sinal ADCCLK estaremos modificando o que na


conversão de dados dentro do ARM STM32F103?
Vamos alterar o tempo que o conversor leva para executar 14 clocks usados em cada
conversão de A/D. (14 clks = 1 sample + 13 bits do conversor aproximação sucessiva).
Dessa forma, estamos também alterando a taxa máxima de conversão (sample-rate
máximo)

39) O STM32F103 tem 7 canais para DMA1 e 5 canais para DMA2. Quantos periféricos
podem solicitar acesso direto à memória no ARM STM32F103?
Procurar no livro ou no manual seção DMA...

40) Marque nos periféricos abaixo, quais não podem pedir DMA em nenhum canal no ARM
STM32F103:
a) (__) Unidade Lógica e Aritmética,

b) (__) USART (1, 2, 3)

c) (__) I2C

d) (__) SPI

e) (__) Pipeline

f) (__) TIMER 2 (canal 1)

procurar no livro ou no manual – seção DMA;

Você também pode gostar