44 lines
1019 B
C
44 lines
1019 B
C
#pragma once
|
|
#include <stdarg.h>
|
|
#include "libscomp_amalg.h"
|
|
#define DACS 4
|
|
#define V_MAX 0x3FFFF
|
|
#define V0 0x1FFFF
|
|
|
|
struct dagon_ch {
|
|
bool used;
|
|
uint32_t volt;
|
|
uint32_t end, step;
|
|
};
|
|
|
|
struct dagon {
|
|
bool conn[DACS];
|
|
struct dagon_ch ch[DACS];
|
|
};
|
|
|
|
extern volatile struct dagon dg;
|
|
|
|
bool serial_vprintf(const char *fmt, va_list va);
|
|
bool serial_printf(const char *fmt, ...);
|
|
bool print_start(struct libscomp_line *l, const char *fmt, ...);
|
|
|
|
#define unused __attribute__((unused))
|
|
#define declhandler(nm) \
|
|
int dagon_##nm(struct libscomp_line *, void *p unused)
|
|
|
|
declhandler(con);
|
|
declhandler(idn);
|
|
declhandler(rmp);
|
|
declhandler(rst);
|
|
declhandler(set);
|
|
declhandler(vlt);
|
|
|
|
uint32_t spi_write(uint32_t v, size_t dac);
|
|
uint32_t spi_transfer(uint32_t v, size_t dac);
|
|
void spi_init();
|
|
void spi_reset();
|
|
|
|
#define spi_register(v) ((v) << 20)
|
|
#define spi_set(v,d) spi_write(((v) & 0x3FFFF) << 2 | spi_register(1), d)
|
|
#define spi_get(d) spi_transfer(spi_register(0b1001) << 20, d)
|