Interrupções com NRF24LE1 (Parte 3/14)

Interrompe com NRF24LE1

Em nossa vida diária muitas vezes somos distraídos ou interrompidos por outras pessoas. Nessa condição suspendemos o nosso trabalho contínuo e prestamos atenção ao que os outros têm a dizer. Somente retomamos nosso trabalho anteriormente suspenso após a conclusão da tarefa interrompida. O mestre que controla o processamento dos pensamentos em nós é o nosso cérebro. O cérebro para de processar os pensamentos em andamento quando somos interrompidos e começa a processar a outra tarefa. Ele retoma o processamento anterior em andamento quando a tarefa é concluída. O controlador funciona de maneira semelhante. Aqui estudaremos as interrupções associadas à nossa NRF.

Interrupção Final

Fig. 1: Protótipo de Demonstração de Interrupção NRF24LE1

Todos nós conhecemos a tarefa das interrupções em qualquer controlador. Ele diz ao microcontrolador para suspender a execução atual do código, salvar o estado atual e processar a solicitação de interrupção. O controlador processa a solicitação de interrupção saltando para a Rotina de Serviço de Interrupção (ISR) ou o Manipulador de Interrupção. ISR é uma função ou procedimento definido no código que é executado quando ocorre uma interrupção. O mesmo acontece com a NRF.

No NRF24LE1, há um total de 18 fontes de interrupções, das quais 4 são baseadas em hardware e as demais são baseadas em software. Cada fonte de interrupção possui um endereço de vetor no qual o ISR deve ser escrito. Essas interrupções podem ser acionadas por nível (baixo/alto) ou acionadas por borda (ascensão/queda).
A imagem anexada consiste em diferentes fontes, endereço vetorial, polaridade e sua descrição.
No pacote de 32 pinos, existem 2 interrupções de hardware externas: INT0 e INT1. O pino de interrupção para INT0 é P0.5 e para INT1 é P0.6.
Imagem da demonstração de interrupção NRF24LE1
Figura 2: Imagem da demonstração de interrupção NRF24LE1
As interrupções podem ser controladas através de vários registros detalhados abaixo:
• Registro Interrupt Enable 0 (IEN0) – Um registro de 8 bits usado para ativar/desativar interrupções globais e interrupções individuais de Timer0, Timer1, Timer2, Porta 0 e Porta Serial.
• Registro de ativação de interrupção 1 (IEN1) – Um registro de 8 bits usado para ativar/desativar interrupções de RF, SPI e Timer2.
• INTEXP – Este registro habilita/desabilita interrupções SPI de 2 fios, mestre e escravo. Este registro também é utilizado para escolher entre INT0, INT1 e INT2.
• IP0 e IP1 (Prioridade de interrupção) – Dois registradores de 8 bits usados ​​para definir os níveis de prioridade entre diferentes fontes.
• Registro de controle de solicitação de interrupção (IRCON) – Um registro de 8 bits que contém sinalizadores de solicitação de interrupção.
Para interrupções de software, precisamos habilitá-los de acordo com as funcionalidades que estamos utilizando. Por exemplo, se estivermos usando Timers então habilitaremos a interrupção do Timer que está associada aos timers internos do nosso módulo.
Imagem da demonstração de interrupção NRF24LE1
Figura 2: Imagem da demonstração de interrupção NRF24LE1
Atualmente estamos focados em discutir interrupções de hardware INT0. Algumas etapas simples através das quais podemos configurar o INT0 são:
• Primeiro escreva 1 no bit7 do IEN0 para habilitar interrupções globais e 1 no bit0.
• Escreva 1 no bit3 do INTEXP para selecionar INT0.
• Temos que escrever ISR para INT0
Também escrevemos um código para explicar o funcionamento da interrupção INT0. Além disso, um programa de piscamento de LED foi escrito em nossa rotina de serviço de interrupção. Portanto, o LED piscará sempre que ocorrer uma interrupção. Confira o código comentado para mais detalhes. Fique ligado para mais artigos da série.

Código-fonte do projeto

###

//Program to 

#include"reg24le1.h" // Arquivo de cabeçalho de E/S para NRF24LE1
#incluir // arquivo de cabeçalho contendo funções de E/S padrão #include"hal_delay.h" // arquivo de cabeçalho contendo funções de atraso #include"isrdef24le1.h" //arquivo de cabeçalho contendo definição de rotina de serviço de interrupção para NRF24LE1 // Código principal vazio principal { P0DIR = 0xf0; //torna os 4 bits superiores de Port0 como entrada P1DIR = 0; //define a porta1 como saída P1=0x00; // torna todos os pinos da Porta1 baixos IEN0 = 0x81; // habilita a interrupção do pino INTEXP = 0x08; // habilita INT0 enquanto(1); //loop infinito, espera pela interrupção } // Rotina de serviço de interrupção EXT_INT0_ISR { P1 = 0xff; //torna todos os pinos da Port1 altos atraso_ms(1000); //atraso de 1 segundo P1=0x00; //faz com que todos os pinos da Port1 sejam baixos atraso_ms(1000); //atraso de 1 segundo }

###

Diagramas de circuito

Diagrama de Circuito-NRF24LE1-Demonstração de Interrupção

Vídeo do projeto

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。