77 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef PWRNOISE_H
 | 
						|
#define PWRNOISE_H
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <stdbool.h>
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	bool enable;
 | 
						|
	bool am;
 | 
						|
 | 
						|
	uint16_t period;
 | 
						|
	uint16_t period_counter;
 | 
						|
 | 
						|
	uint8_t octave;
 | 
						|
	uint16_t octave_counter;
 | 
						|
 | 
						|
	uint8_t tapa;
 | 
						|
	uint8_t tapb;
 | 
						|
	bool tapb_enable;
 | 
						|
 | 
						|
	uint16_t lfsr;
 | 
						|
	uint8_t vol;
 | 
						|
 | 
						|
	uint8_t out_latch;
 | 
						|
	uint8_t prev;
 | 
						|
} noise_channel_t;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	bool enable;
 | 
						|
	uint8_t flags;
 | 
						|
 | 
						|
	uint16_t period;
 | 
						|
	uint16_t period_counter;
 | 
						|
 | 
						|
	uint8_t octave;
 | 
						|
	uint16_t octave_counter;
 | 
						|
 | 
						|
	uint8_t alength;
 | 
						|
	uint8_t blength;
 | 
						|
	uint16_t a;
 | 
						|
	uint16_t b;
 | 
						|
	bool portion;
 | 
						|
 | 
						|
	uint8_t aoffset;
 | 
						|
	uint8_t boffset;
 | 
						|
 | 
						|
	uint8_t accum;
 | 
						|
	uint8_t vol;
 | 
						|
 | 
						|
	uint8_t out_latch;
 | 
						|
  uint8_t prev;
 | 
						|
} slope_channel_t;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	uint8_t flags;
 | 
						|
	uint8_t gpioa;
 | 
						|
	uint8_t gpiob;
 | 
						|
	
 | 
						|
	noise_channel_t n1;
 | 
						|
	noise_channel_t n2;
 | 
						|
	noise_channel_t n3;
 | 
						|
	slope_channel_t s;
 | 
						|
} power_noise_t;
 | 
						|
 | 
						|
void pwrnoise_reset(power_noise_t *pn);
 | 
						|
void pwrnoise_step(power_noise_t *pn, uint16_t cycles, int16_t *left, int16_t *right);
 | 
						|
void pwrnoise_write(power_noise_t *pn, uint8_t reg, uint8_t val);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif |