diff --git a/pins.drawio b/pins.drawio index 40b50ac..f236c62 100644 --- a/pins.drawio +++ b/pins.drawio @@ -1,6 +1,6 @@ - + @@ -896,9 +896,6 @@ - - - @@ -908,14 +905,6 @@ - - - - - - - - @@ -936,14 +925,6 @@ - - - - - - - - @@ -1086,9 +1067,6 @@ - - - @@ -1164,25 +1142,34 @@ - + - - + + - + - + - + - + - + + + + + + + + + + diff --git a/servo_controller/src/adc.c b/servo_controller/src/adc.c index 7f0ff74..8290867 100644 --- a/servo_controller/src/adc.c +++ b/servo_controller/src/adc.c @@ -35,6 +35,12 @@ struct k_msgq adc_mask_msgq; // ADC TIMER struct k_timer adc_timer; +// ADC BUFFER +#define ADC_BUFFER_SIZE 10 +struct command_message_t adc_msg_buffer[ADC_BUFFER_SIZE]; +struct command_message_t *adc_msg_buffer_ptr; +int *adc_data_type; + static void adc_timer_handler(struct k_timer *timer) { // Timer trigger @@ -67,9 +73,13 @@ static void adc_thread(void *p1, void *p2, void *p3) { } // Send to USB - struct command_message_t *msg = usb_get_next_tx_buf(); - command_create_message(msg, sizeof(values), ADC_READ_ALL, (uint8_t *)values); - usb_send_command(msg); + command_create_message(adc_msg_buffer_ptr, sizeof(values), ADC_READ_ALL, (uint8_t *)values); + usb_send_command(adc_msg_buffer_ptr); + adc_msg_buffer_ptr++; + + if (adc_msg_buffer_ptr > &adc_msg_buffer[ADC_BUFFER_SIZE-1]) { + adc_msg_buffer_ptr = adc_msg_buffer; + } } } @@ -82,6 +92,10 @@ int adc_init_all(void) { // TIMER k_timer_init(&adc_timer, adc_timer_handler, NULL); + // BUFFER + memset(adc_msg_buffer, 0, sizeof(adc_msg_buffer)); + adc_msg_buffer_ptr = adc_msg_buffer; + // MUX init ret = mux_init(); if (ret != 0) { @@ -137,7 +151,6 @@ int adc_init_all(void) { return 0; } - int adc_read_id(int id) { int ret; int val_mv = 0; @@ -209,4 +222,15 @@ int adc_timer_set(int interval_ms) { } return 0; +} + +void* adc_get_buffer() { + struct command_message_t *ptr = adc_msg_buffer_ptr; + ptr--; + + if (ptr < &adc_msg_buffer[0]) { + ptr = &adc_msg_buffer[ADC_BUFFER_SIZE-1]; + } + + return (void *)ptr; } \ No newline at end of file diff --git a/servo_controller/src/adc.h b/servo_controller/src/adc.h index 43da7e5..6277c11 100644 --- a/servo_controller/src/adc.h +++ b/servo_controller/src/adc.h @@ -12,6 +12,7 @@ int adc_init_all(); int adc_read_id(int id); int adc_add_mask(uint32_t mask); int adc_timer_set(int interval_ms); +void* adc_get_buffer(); #endif // ADC_H