Skip to content
Snippets Groups Projects
Commit 90e2a62c authored by Michael DM Dryden's avatar Michael DM Dryden
Browse files

ad5933: Add single stepping measurement function.

parent 2b060838
Branches
No related merge requests found
......@@ -265,13 +265,13 @@ static void internal_clock_set(bool internal) {
}
void ad5933_test(void){
ad5933_set_params(0x0f5c28, 0x14f, 10, 100, 1);
ad5933_set_params(0x0f5c28, 0x9f4f, 10, 2000, 1);
cuint16_t result[10];
cint16_t result[10];
ad5933_sweep(result, 10);
for (uint8_t n = 0; n < 10; n++) {
printf("%u + %ui\r\n", result[n].real, result[n].imag);
printf("%i + %ii\r\n", result[n].real, result[n].imag);
}
}
......@@ -378,7 +378,7 @@ static void set_control_mode(uint8_t mode) {
return;
}
void ad5933_sweep(cuint16_t imp[], int n) {
void ad5933_sweep(cint16_t imp[], int n) {
reset();
set_control_mode(CTRL_STANDBY_MODE);
set_control_mode(CTRL_INIT_START_FREQ);
......@@ -401,11 +401,51 @@ void ad5933_sweep(cuint16_t imp[], int n) {
return;
}
cint16_t ad5933_measure_one(uint8_t measure_type) {
cint16_t data;
if ((read_byte(STATUS_REG) & STATUS_SWEEP_DONE) == STATUS_SWEEP_DONE) {
data.real = 0;
data.imag = 0;
printf("#INFO: AD5933: Reached end of sweep.\r\n");
set_control_mode(CTRL_POWER_DOWN_MODE);
return data;
}
switch (measure_type) {
case AD5933_MEASURE_FIRST:
reset();
set_control_mode(CTRL_STANDBY_MODE);
set_control_mode(CTRL_INIT_START_FREQ);
delay_ms(400);
set_control_mode(CTRL_START_FREQ_SWEEP);
break;
case AD5933_MEASURE_NEXT:
set_control_mode(CTRL_INCREMENT_FREQ);
break;
case AD5933_MEASURE_REPEAT:
set_control_mode(CTRL_REPEAT_FREQ);
break;
default:
printf("#ERR: AD5933: Invalid frequency mode selected.\r\n");
data.real = 0;
data.imag = 0;
return data;
}
return(ad5993_get_complex_data());
}
cuint16_t ad5993_get_complex_data(void) {
cint16_t ad5993_get_complex_data(void) {
// poll the status register to check for data to receive
while ((read_byte(STATUS_REG) & STATUS_DATA_VALID) != STATUS_DATA_VALID){
delay_ms(30);
// delay_ms(30);
delay_ms(10);
}
uint16_t real;
......@@ -414,7 +454,7 @@ cuint16_t ad5993_get_complex_data(void) {
read_block(REAL_DATA_1, 2, (uint8_t*)&real);
read_block(IMAG_DATA_1, 2, (uint8_t*)&imag);
cuint16_t result;
cint16_t result;
result.real = swap16(real);
result.imag = swap16(imag);
......
......@@ -13,15 +13,20 @@
#include <math.h>
#include <stdio.h>
typedef struct c_uint16_t {
uint16_t real;
uint16_t imag;
} cuint16_t;
#define AD5933_MEASURE_FIRST 0
#define AD5933_MEASURE_REPEAT 1
#define AD5933_MEASURE_NEXT 2
typedef struct c_int16_t {
int16_t real;
int16_t imag;
} cint16_t;
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 ad5933_sweep(cint16_t imp[], int n);
cint16_t ad5993_get_complex_data(void);
cint16_t ad5933_measure_one(uint8_t measure_type);
void ad5933_test(void);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment