From 729f2a2c3ebfb2612d873caf453a1d7ca02180d9 Mon Sep 17 00:00:00 2001 From: dmlunar Date: Wed, 22 Jan 2025 16:47:21 +0200 Subject: varpa: initial public commit --- firmware/src/driver/f1956.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 firmware/src/driver/f1956.c (limited to 'firmware/src/driver/f1956.c') diff --git a/firmware/src/driver/f1956.c b/firmware/src/driver/f1956.c new file mode 100644 index 0000000..3af5fba --- /dev/null +++ b/firmware/src/driver/f1956.c @@ -0,0 +1,61 @@ +/** + * + * Author: Dylan Muller + * Copyright (c) 2025 + * All rights reserved. + * + * - Commercial/IP use prohibited. + * - Attribution required. + * See License.txt + * + */ + +#include "setup.h" + +#include "peripheral/spi.h" +#include "driver/f1956.h" + +#include +#include +#include + +void att_init(uint8_t init_value) +{ + F1956_DEV_0_DDR |= (1 << F1956_DEV_0_SS); + F1956_DEV_0_PORT |= (1 << F1956_DEV_0_SS); + + att_set(F1956_ID_INPUT_ATT, init_value); + _delay_ms(10); +} + +void att_set( + uint8_t id, + uint8_t value +) +{ + uint8_t dev_id = 0x0; + uint8_t dev_ss = 0x0; + uint8_t* dev_port = 0x0; + uint8_t cmd_buf[2] = {0x0, 0x0}; + + switch (id) + { + case F1956_ID_INPUT_ATT: + dev_id = F1956_DEV_INPUT_ATT; + break; + } + + switch (dev_id) + { + case F1956_DEV_INPUT_ATT: + dev_ss = F1956_DEV_0_SS; + dev_port = (uint8_t*)&F1956_DEV_0_PORT; + break; + } + + cmd_buf[0] = value & 0x7F; + cmd_buf[1] = F1956_DEV_INPUT_ATT_ADDR; + + spi_start(cmd_buf, cmd_buf, sizeof(cmd_buf), dev_port, dev_ss); + spi_flush(); +} -- cgit v1.2.3-70-g09d2