¿Separar un puerto de entrada / salida y obtener números aleatorios?

2

Utilizando ATMega1284

Quiero generar un número aleatorio de 0-7 (tal vez más rango). Esta es la principal preocupación. Mientras "se sienta" al azar su multa. Y podría resolver el resto de mis problemas ... de todos modos

¿Mi enfoque? Podría sembrar un número fuera del puerto ADC (PORTA en ATMega1284). Esto me lleva a aclarar PORTA para el ADC. Pero todavía necesito conectar otras 8 salidas.

PORTA tiene ADC (1/8 pines utilizados)
PORTB está lleno (8/8 pines utilizados)
PORTC está lleno (8/8 pines utilizados)
PORTD tiene USART en (2/8 pines utilizados)

Todavía necesito 8 pines para la salida y cada puerto está haciendo lo suyo. Entonces, ¿podría dividir PORTA y PORTD para poder conectar 8 pines más? ¿Cómo haría esto cuando tengo UART y ADC habilitados?

O

Si alguien pudiera proporcionar una forma interna / mejor de obtener un número aleatorio. Podría resolver el problema por completo

    
pregunta John

1 respuesta

2

¿Por qué no está utilizando la función rand () de las bibliotecas estándar de avr?

documentación de la biblioteca, stdlib.h

  

función de anulación () {PORTD = (uint8_t) rand (); }

En la segunda parte de tu pregunta, simplemente divídelos. Si puede usar los pines 2, 3 y 4 de PORTA, haga lo siguiente:

  

PORTA = randonNumber & ((1 < < 1) | (1 < < 2) | (1 < < 3))

Básicamente, le sugiero que estudie las diferentes formas en que puede asignar los bits de origen a los bits de destino en C mediante el uso de operadores bitwise.

    
respondido por el HL-SDK

Lea otras preguntas en las etiquetas