2022-05-08 00:16:20 +00:00
|
|
|
#include <avr/io.h>
|
2022-04-17 04:43:50 +00:00
|
|
|
|
|
|
|
#ifndef __BASE_H__
|
|
|
|
#define __BASE_H__
|
|
|
|
|
|
|
|
typedef struct IO_PIN {
|
|
|
|
volatile uint8_t *port;
|
|
|
|
uint8_t pin;
|
|
|
|
} io_pin_t;
|
|
|
|
|
|
|
|
inline void set_pin(io_pin_t *pin) {
|
|
|
|
*(pin->port) |= 1 << pin->pin;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void clear_pin(io_pin_t *pin) {
|
|
|
|
*(pin->port) &= 0xff ^ (1 << pin->pin);
|
|
|
|
}
|
|
|
|
|
2022-05-07 23:49:54 +00:00
|
|
|
typedef struct RNG {
|
|
|
|
uint8_t mod;
|
|
|
|
int8_t a;
|
|
|
|
int8_t c;
|
|
|
|
uint8_t seed;
|
|
|
|
} rng_t;
|
|
|
|
|
|
|
|
rng_t rng_new(uint8_t seed);
|
|
|
|
|
|
|
|
uint8_t rng_sample(rng_t *state);
|
2022-04-17 04:43:50 +00:00
|
|
|
|
|
|
|
#endif
|