Prévia do material em texto
1. Mesmo com várias fontes diferentes de interrupção, alguns microcontroladores têm apenas um endereço reservado para o tratamento delas. Se, por exemplo, você tentar utilizar um contador e um conversor analógico simultaneamente, terá de lidar com essa limitação. De que forma as máscaras e os sinalizadores podem auxiliá-lo na gestão das interrupções para esse problema? Permitem que as fontes geradoras de interrupção sejam ignoradas e sem remover a indentificação da fonte. · As máscaras podem habilitar ou não a interrupção e grupos de interrupção, mas não definir a ordem com que serão tratradas. E caso nenhuma outra interrupção ocorra, um sinalizador ativado sem que sua máscara também o esteja não desviará o programa e nunca terá o evento tratado. Os sinalizadores não indicam quais interrupções podem ocorrer, e, sim, as máscaras que devem filtrar estes, e só indicam uma interrupção após a ocorrência do evento. Porém, caso a máscara esteja desabilitada, o sinalizador não irá disparar uma interrupção, mas ainda estará disponível para tratamento caso outra interrupção seja gerada com um vetor único de tratamento. 2. Assim como qualquer outra operação em um microcontrolador, as interrupções têm seus próprios registradores, endereços de memória reservados para seu uso. Dado o diagrama lógico a seguir, e considerando as configurações da tabela, o que deve ocorrer quando os sinalizadores T0IF e ADIF mudarem para nível lógico alto simultaneamente em um microcontrolador sem controle de prioridade? A interrupção ocorre e ambos os sinalizadores podem ser identificados. 3. As interrupções são ferramentas muito utilizadas em praticamente todos os microcontroladores comerciais, assim como também nos microcontroladores PIC. Desta forma, para o microcontrolador PIC16F877A, o registador INTCON é: Este registrador mascara as interrupções do temporizador Timer0 e das entradas digitais na porta B (bits de nome RBIE e INTE), assim como os sinalizadores de interrupção destes módulos (TMR01F para o Timer0, RBIF e INTF para a porta B) · No PIC16F877A, o registrador INTCON não estão mascaradas todas as interrupções principais e os controles gerais de interrupção deste microcontrolador, pois aqui somente estão emascara as interrupções do temporizador Timer0 e das entradas digitais na porta B (bits de nome RBIE e INTE), assim como os sinalizadores de interrupção destes módulos (TMR01F para o Timer0, RBIF e INTF para a porta B). O endereço deste registro não é 0xb00 e sim 0x0b. Dentro do INTCON o bit GIE é quem emascara interrupções globais do microcontrolador, e não o PEIE. Da mesma forma, o bit PEIE deve estar ativado para que sejam habilitadas todas as interrupções de periféricos do microcontrolador, e não o GIE. 4. A pilha mantém um registro dos desvios de memória recentes para que, ao término, seja possível retornar ao endereço original. Em um microcontrolador com uma pilha de oito níveis, supondo que as interrupções ocorram em sequência e sem controle de prioridade de interrupção, quantas funções aninhadas, ou seja, uma dentro da outra, podem ser chamadas dentro do vetor de interrupção sem ocasionar a sobrecarga da pilha após a ocorrência de quatro interrupções? Sete. · O microcontrolador recorre à pilha durante a chamada de uma função e também na ocorrência de uma interrupção. Assim, sem o controle de prioridade, haverá apenas um salto de memória para o endereço do vetor global de interrupção. A partir daí, somente os sinalizadores podem guiar o programador em qual interrupção deverá ser tratada, não ocorrendo mais desvios por conta de outras interrupções. · Assim, para um microcontrolador sem controle de prioridades, somente um nível de pilha será consumido independentemente de quantas interrupções ocorram, restando mais sete níveis a serem utilizados por sete funções aninhadas. 5. Embora as interrupções sejam um recurso muito útil na área de programação de microcontroladores, o que acontece se mais de uma interrupção acontece em forma simultânea? Ou se ainda não foi finalizado o processo de uma interrupção, e já foi registrada uma nova interrupção, quem tem prioridade de execução? Para isto, acontecem as hierarquias das interrupções. Quando falamos sobre hierarquias de interrupções, podemos dizer que: 1. A estrutura lógica do diagrama hierárquico de interrupções de um PIC16F877A é diferente à estrutura do PIC18F4550; 2. No PIC16F877A, uma interrupção no CPU irá acontecer somente se o bit GIE e o bit PEIE do registro de instruções INTCON, são ativos em forma simultânea, isto é, ambos são iguais a um; 3. O PIC18F4550 possui duas posições de memória para o registro de interrupções, isto se deve ao fato que possui dois níveis hierárquicos de prioridade de interrupções; 4. Os microcontroladores PIC de mais alta gama, como é o caso da linha dsPIC33 e PIC24, possuem mais níveis hierárquicos de interrupções do que o PIC18F4550; Das opções acima, indique as alternativas incorretas: Somente a opção 2; · Se pode afirmar que a estrutura lógica do diagrama hierárquico de interrupções de um PIC16F877A é diferente à estrutura do PIC18F4550. Também consideramos como verdadeiro que o PIC18F4550 possui duas posições de memória para o registro de interrupções, pois possui dois níveis hierárquicos de prioridade de interrupções. Ainda, é correto que microcontroladores PIC linha dsPIC33 e PIC24, possuem mais níveis hierárquicos de interrupções do que o PIC18F4550. No entanto, é falso que o a interrupção no PIC16F877A irá acontecer unicamente se o bit GIE e o bit PEIE do registro de instruções INTCON, são ativos em forma simultânea. Uma das formas e verificar este fato, é analisando graficamente o diagrama lógico de interrupções do PIC16F877A. image6.png image1.png image2.png image3.png image4.png image5.png