diff --git a/src/ad5933.c b/src/ad5933.c index 5ce592206448e6973017f1c2b3596611b40e220e..d51761d6ae172dfbad4a0620f5c07f8a1aaec5f5 100644 --- a/src/ad5933.c +++ b/src/ad5933.c @@ -14,9 +14,10 @@ #include #include #include "settings.h" -#include "config/conf_board.h" +#include "config/dstat_config.h" + +#define EIS_TWI EXT_TWI0 -#define EIS_TWI TWIC #define AD5933_ADDR 0x0D #define ADDR_PTR 0xB0 // Control Register @@ -103,34 +104,21 @@ #define INTERNAL_CLK_HZ 16776000 -uint8_t read_byte(uint8_t address); -void read_block(uint8_t address, uint8_t length, uint8_t* buffer); -void write_byte(uint8_t address, uint8_t value); -void write_block(uint8_t address, uint8_t length, uint8_t* buffer); -void reset(void); -void internal_clock_set(bool); -bool set_start_frequency(uint32_t); -bool set_increment_frequency(uint32_t); -bool set_num_increments(uint16_t); -bool set_settling_cycles(uint16_t cycles); -void set_gain(uint8_t pga_gain, uint8_t o_range); -void set_control_mode(uint8_t); - - - -void eis_init(void){ - ioport_set_port_mode(IOPORT_PORTC, PIN0_bm|PIN1_bm, IOPORT_MODE_WIREDANDPULL); - sysclk_enable_peripheral_clock(&EIS_TWI); - twi_master_enable(&EIS_TWI); - twi_master_options_t opt = { - .speed = 50000, - .chip = 0x42 - }; - twi_master_setup(&EIS_TWI, &opt); - printf("#INFO: TWI master enabled\n\r"); -} +static uint8_t read_byte(uint8_t address); +static void read_block(uint8_t address, uint8_t length, uint8_t* buffer); +static void write_byte(uint8_t address, uint8_t value); +static void write_block(uint8_t address, uint8_t length, uint8_t* buffer); +static void reset(void); +static void internal_clock_set(bool); +static bool set_start_frequency(uint32_t); +static bool set_increment_frequency(uint32_t); +static bool set_num_increments(uint16_t); +static bool set_settling_cycles(uint16_t cycles); +static void set_gain(uint8_t pga_gain, uint8_t o_range); +static void set_control_mode(uint8_t); -uint8_t read_byte(uint8_t address) { + +static uint8_t read_byte(uint8_t address) { /** * Reads one byte from AD5933 * @@ -150,11 +138,9 @@ uint8_t read_byte(uint8_t address) { twi_master_read(&EIS_TWI, &twi_pack); return value; - read_block(address, 1, &value); - return value; } -void read_block(uint8_t address, uint8_t length, uint8_t* buffer) { +static void read_block(uint8_t address, uint8_t length, uint8_t* buffer) { /** * Reads a block of data * @@ -185,7 +171,7 @@ void read_block(uint8_t address, uint8_t length, uint8_t* buffer) { } -void write_byte(uint8_t address, uint8_t value) { +static void write_byte(uint8_t address, uint8_t value) { /** * Writes one byte to AD5933. * @@ -206,7 +192,7 @@ void write_byte(uint8_t address, uint8_t value) { printf("#ERR: AD5933 TWI write fail\r\n"); } -void write_block(uint8_t address, uint8_t length, uint8_t* buffer) { +static void write_block(uint8_t address, uint8_t length, uint8_t* buffer) { /** * Writes a block of data * @@ -261,12 +247,12 @@ void ad5933_set_params(uint32_t start, uint32_t increment, uint16_t n_increments } -void reset(void) { +static void reset(void) { uint8_t current = read_byte(CTRL_REG2); write_byte(CTRL_REG2, current | CTRL_RESET); } -void internal_clock_set(bool internal) { +static void internal_clock_set(bool internal) { //set the control register to internal or external clock uint8_t current = read_byte(CTRL_REG2); @@ -278,7 +264,7 @@ void internal_clock_set(bool internal) { write_byte(CTRL_REG2, current); } -void test(uint32_t freq){ +void ad5933_test(void){ ad5933_set_params(0x0f5c28, 0x14f, 10, 100, 1); cuint16_t result[10]; @@ -289,7 +275,7 @@ void test(uint32_t freq){ } } -bool set_start_frequency(uint32_t start) { +static bool set_start_frequency(uint32_t start) { if (start > 0xFFFFFF) { printf("#ERR: AD5933: Start frequency too high.\r\n"); return false; @@ -301,7 +287,7 @@ bool set_start_frequency(uint32_t start) { return true; } -bool set_increment_frequency(uint32_t increment) { +static bool set_increment_frequency(uint32_t increment) { if (increment > 0xFFFFFF) { printf("#ERR: AD5933: Increment too high.\r\n"); return false; @@ -313,7 +299,7 @@ bool set_increment_frequency(uint32_t increment) { return true; } -bool set_num_increments(uint16_t num) { +static bool set_num_increments(uint16_t num) { if (num > 511){ printf("#ERR: AD5933: Increment number too high.\r\n"); return false; @@ -325,7 +311,7 @@ bool set_num_increments(uint16_t num) { return true; } -bool set_settling_cycles(uint16_t cycles) { +static bool set_settling_cycles(uint16_t cycles) { uint16_t output = 0; if (cycles <= 0x1ff) { @@ -347,7 +333,7 @@ bool set_settling_cycles(uint16_t cycles) { return true; } -void set_gain(uint8_t pga_gain, uint8_t o_range) { +static void set_gain(uint8_t pga_gain, uint8_t o_range) { uint8_t val = 0; switch (pga_gain) { @@ -384,7 +370,7 @@ void set_gain(uint8_t pga_gain, uint8_t o_range) { return; } -void set_control_mode(uint8_t mode) { +static void set_control_mode(uint8_t mode) { uint8_t val = read_byte(CTRL_REG1); val &= 0b00001111; // clear out the top 4 bits diff --git a/src/ad5933.h b/src/ad5933.h index 96c96a9f8d70f22f74df6cf3df8bda531a06e799..f1aa7fe39eb21534ffd631f652dc60e8e574f0b3 100644 --- a/src/ad5933.h +++ b/src/ad5933.h @@ -18,12 +18,11 @@ typedef struct c_uint16_t { uint16_t imag; } cuint16_t; -void eis_init(void); void ad5933_set_params(uint32_t start, uint32_t increment, uint16_t n_increments, uint16_t settle_cycles, uint8_t gain); void ad5933_sweep(cuint16_t imp[], int n); cuint16_t ad5993_get_complex_data(void); -void test(uint32_t freq); +void ad5933_test(void); #endif /* ad5933_h */