panda/board/drivers/dac.h

21 lines
579 B
C

void puth(unsigned int i);
void puts(const char *a);
void dac_init(void) {
// No buffers required since we have an opamp
register_set(&(DAC->DHR12R1), 0U, 0xFFFU);
register_set(&(DAC->DHR12R2), 0U, 0xFFFU);
register_set(&(DAC->CR), DAC_CR_EN1 | DAC_CR_EN2, 0x3FFF3FFFU);
}
void dac_set(int channel, uint32_t value) {
if (channel == 0) {
register_set(&(DAC->DHR12R1), value, 0xFFFU);
} else if (channel == 1) {
register_set(&(DAC->DHR12R2), value, 0xFFFU);
} else {
puts("Failed to set DAC: invalid channel value: 0x"); puth(value); puts("\n");
}
}