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...
Tillbaka till blogg

Lämna en kommentar

Notera att kommentarer behöver godkännas innan de publiceras.