Logo Passei Direto
Buscar

Programação de microcontroladores II

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Prévia do material em texto

1. A programação em Assembly é uma linguagem de baixo nível e é considerada umas das mais eficientes pois é mais próxima do código máquina. Agora, considerando a programação de interrupções em Assembly de um PIC16F877A.
Qual comando utilizo para habilitar as interrupções globais? 
Resposta:
Utilizo: BSF INTCON,GIE.
· O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
2. Quando programamos um microcontrolador PIC16F877A em linguagem Assembly, quantos endereços de memória são necessários emascarar para habilitar as interrupções?
Resposta:
Um único endereço.
· O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
3. Seja um microcontrolador PIC18F4550, que trabalha com um diagrama lógico com dois níveis de prioridade de interrupções, interrupções de alto nível e de baixo nível, tal como apresentado na figura: 
Quais configurações dos registros habilitados podem acionar uma interrupção de baixo nível?
Resposta:
Os registros TMR0IF, TMR0IE e GIE devem ser iguais a 1; os demais registros devem ser 0.
· O diagrama lógico com dois níveis de prioridade auxilia a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa, as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isso é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE; os demais registros devem ser necessariamente 0. Quanto aos registros TMR0IP, TMR0IE e GIE iguais a 1, e os demais registros iguais a 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE é ativo.
4. Considere a programação de um microcontrolador para realizar a contagem de tempo para um relógio digital. Para esta atividade, foi utilizado um PIC18F4550, e a programação foi realizado em Assembly. Qual é registro do microcontrolador que é ativo quando o contador do timer finalizou a contagem?
Resposta:
TMR0IF.
· O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
5. Um depurador é uma ferramenta utilizada para testar programas e encontrar defeitos assim como testar as interrupções e outras funções de nosso código. Os microcontroladores PIC possuem várias alternativas de depuradores ou debuggers que realizam esta tarefa. Respeito dos depuradores, podemos dizer que:
1. A depuração pode ser realizada mediante a utilização de um osciloscópio, um led ou o auxílio de um software de depuração;
2. As interrupções necessariamente devem ser avaliadas mediante a utilização de um software e de um hardware depurador para esta finalidade;
3. O software MPLAB é uma ferramenta de programação e depuração para microcontroladores da Microchip;
4. Em ciertas ocasiões a funções PWM dos microcontroladores não podem ser depuradas, devido ao risco potencial de danificar a carga; Das opções acima, indique as alternativas incorretas: 
Resposta:
Somente a opção 2.
· A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendo da situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
Desafio
No estudo de sistemas embarcados costuma-se considerar os componentes elétricos e eletrônicos externos em seu comportamento ideal. Um dos problemas mais comuns nesse tipo de abordagem é com a mudança de estado de chaves e contatos manuais,que durante a transição de um contato aberto para fechado, oscilam durante um pequeno intervalo de tempo, criando falsos disparos no sistema.
Veja as seguintes informações:
Proponha o uso de um módulo com interrupção que seja capaz de contornar o problema, explicando a sua solução e como chegou a ela. 
Resposta:
Conforme a imagem apresentada, é possível ver que após a primeira mudança de estado, deverão ser aguardados até 50µs, até que seja possível detectar um sinal estável.
Uma vez que o microcontrolador está rodando a 4MHz, cada ciclo de máquina é executado a 1MHz, demandando um tempo de 1µs. A rotina após o label LOOP, por sua vez, tem 2 instruções de 1 ciclo (BTFSC e COMF) e 1 instrução de 2 ciclos (GOTO). Logo, seriam necessários ainda desperdiçar 46 ciclos de máquina para poder avaliar corretamente o estado do pino 0, ao qual se liga o botão.
Para evitar esse desperdício, é possível recorrer a um temporizador que seja ativado após o primeiro sinal do botão para contar a quantidade de tempo necessária. Ao final da contagem, no tratamento da interrupção, será avaliado se o estado do pino ainda é o mesmo, para só então ordenar a mudança de estado.
Para configurar o temporizador, basta limpar todo o registrador OPTION_REG e ligar apenas o PSA, que define um temporizador sem prescaler. Assim, o Timer0 irá interromper a cada 1us, se iniciar do valor 206 (0x00CE) para o registrador do temporizador, fazendo com que ele execute apenas 50 contagens até o seu máximo (256).
O flag é desativado, mas a interrupção é habilitada quando o LOOPdetectar que o botão foi pressionado.
image6.png
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image13.png
image1.png
image2.png
image3.png
image4.png
image5.png

Mais conteúdos dessa disciplina