Gerador de números aleatórios com NRF24LE1 (Parte 8/14)

Gerador de números aleatórios com NRF24LE1

O número aleatório às vezes desempenha um papel importante em nossa vida. Pense em um bilhete de loteria que você comprou. Agora, e se um número aleatório retirado do sorteio corresponder ao número do seu bilhete? Ficaremos felizes se isso acontecer. Geradores de números aleatórios também são usados ​​para tornar os jogos mais intrigantes e não determinísticos. Você sabia que os microcontroladores também podem gerar números aleatórios? Hoje vamos discutir um recurso interessante do NRF24LE1 que é Gerador de números aleatórios (RNG).
O NRF24LE1 contém um gerador de números aleatórios baseado em ruído térmico que produz uma sequência não determinística. Para torná-lo mais poderoso e aleatório, podemos usar um algoritmo de correção digital que remove qualquer tendência para 0 ou 1. Este também é um recurso embutido. O RNG gera um número de 8 bits que é armazenado em um registro de 8 bits. Portanto, o intervalo de números será de 0 a 255.
Algumas características do RNG são:
• Taxa de geração de números de até 10 kilobytes por segundo
• Sequência não repetitiva
• Funciona mesmo quando o NRF está no modo de espera
• Não é necessário nenhum valor de entrada inicial para geração (autogeração)
• Arquitetura não determinística baseada em ruído térmico
O RNG é controlado por dois registradores:
1. Registro RNGCTL (Random Number Generator Control) – É um registro de 8 bits. A finalidade de vários bits é:
• Bit 7 – usado para ligar o RNG
• Bit 6 – usado para ativar o corretor de polarização
• Bit 5 – flag de geração concluída. 1: Dados prontos
• Bit 4:0 – não utilizado
2. Registro RNGDAT (Random Number Generator Data) – É um registro de 8 bits que classifica o número gerado.
Protótipo de gerador de números aleatórios baseado em módulo NRF24LE1
Fig. 1: Protótipo do Gerador de Números Aleatórios baseado no Módulo NRF24LE1
Abordaremos agora o processo de RNG em etapas simples.
• Primeiro temos que ligar o gerador. Para isso temos que escrever 1 no bit 7 do RNGCTL.
• Se quisermos habilitar o corretor de polarização podemos escrever 1 no bit 6 do RNGCTL.
• Podemos verificar se o número foi gerado lendo o bit 5 RNGCTL. Uma interrupção RNGIRQ também é produzida após uma geração bem-sucedida. Demora cerca de 0,1 mS para gerar um número quando o corretor de polarização está desabilitado e quatro vezes mais tempo quando o corretor está habilitado. Além disso, leva cerca de 0,25 ms para a primeira geração após o RNG ser ligado.
• Os dados de um byte gerados podem ser acessados ​​através do registro RNGDAT.
Também podemos usar funções fornecidas pelas bibliotecas nórdicas:
Tabela de listagem de funções do módulo sem fio NRF24LE1
Fig. 2: Tabela de listagem de funções do módulo sem fio NRF24LE1
Função Parâmetro de entrada Descrição de saída
hal_rng_power_up 0/1 – Para alimentar o RNG
0:DESLIGADO
1:LIGADO
hal_rng_bias_corr_enable 0/1 – Para usar o corretor de polarização
0: Desativar
1: Habilitar
hal_rng_read – dados de 8 bits para ler o número gerado
hal_rng_data_ready – 0/1 Para verificar o status do RNG
0: Dados não prontos
1: Dados prontos
Imagem do gerador de números aleatórios baseado no módulo NRF24LE1
Fig. 3: Imagem do gerador de números aleatórios baseado no módulo NRF24LE1
Escrevemos um código para que os usuários entendam seu funcionamento. O número de 1 byte gerado foi enviado para a Porta0, onde os LEDs estão conectados. Como o número gerado é aleatório, esses LEDs piscarão de forma aleatória.

Código-fonte do projeto

###

//Program to 

#include"reg24le1.h" // Arquivo de cabeçalho de E/S para NRF24LE1

#include"hal_delay.h" // arquivo de cabeçalho contendo funções de atraso
// função principal vazio principal { RNGCTL = 0xC0; //ativa o gerador de números aleatórios P0DIR = 0; //Porta 0 como saída // Loop infinito enquanto(1) { enquanto(!(RNGCTL & 0x20)); // verifica se um número aleatório é gerado ou não P0 = RNGDAT; // envia o número para a porta 0 atraso_ms(500); //atraso de 500ms } }

###

Diagramas de circuito

Diagrama de Circuito-NRF24LE1-Módulo-Gerador de Números Aleatórios

Vídeo do projeto

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.