[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4484] Add MAX11040 buffer to fix data underrun.
From: |
Martin Mueller |
Subject: |
[paparazzi-commits] [4484] Add MAX11040 buffer to fix data underrun. |
Date: |
Sun, 24 Jan 2010 14:51:29 +0000 |
Revision: 4484
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4484
Author: mmm
Date: 2010-01-24 14:51:29 +0000 (Sun, 24 Jan 2010)
Log Message:
-----------
Add MAX11040 buffer to fix data underrun.
Modified Paths:
--------------
paparazzi3/trunk/AUTHORS
paparazzi3/trunk/sw/airborne/arm7/max11040_hw.c
paparazzi3/trunk/sw/airborne/main_logger.c
paparazzi3/trunk/sw/airborne/max11040.c
paparazzi3/trunk/sw/airborne/max11040.h
Modified: paparazzi3/trunk/AUTHORS
===================================================================
--- paparazzi3/trunk/AUTHORS 2010-01-24 02:45:52 UTC (rev 4483)
+++ paparazzi3/trunk/AUTHORS 2010-01-24 14:51:29 UTC (rev 4484)
@@ -13,7 +13,7 @@
jpdumont = jpdumont <address@hidden>
marcuswolschon = Marcus Wolschon <address@hidden>
markgriffin = Mark Griffin <address@hidden>
-mmm = Martin Mueller <address@hidden>
+mmm = Martin Mueller <address@hidden>
nzjrs = John Stowers <address@hidden>
olri = Oliver Riesener <address@hidden>
osam = OSAM-UAV Team <address@hidden>
Modified: paparazzi3/trunk/sw/airborne/arm7/max11040_hw.c
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/max11040_hw.c 2010-01-24 02:45:52 UTC
(rev 4483)
+++ paparazzi3/trunk/sw/airborne/arm7/max11040_hw.c 2010-01-24 14:51:29 UTC
(rev 4484)
@@ -50,7 +50,7 @@
//LED_TOGGLE(3);
#ifdef LOGGER
- max11040_timestamp = getclock();
+ max11040_timestamp[max11040_buf_in] = getclock();
#endif
MaxmSelect();
Modified: paparazzi3/trunk/sw/airborne/main_logger.c
===================================================================
--- paparazzi3/trunk/sw/airborne/main_logger.c 2010-01-24 02:45:52 UTC (rev
4483)
+++ paparazzi3/trunk/sw/airborne/main_logger.c 2010-01-24 14:51:29 UTC (rev
4484)
@@ -294,7 +294,7 @@
for (i = 0; i < xbeel_payload_len-XBEE_RFDATA_OFFSET; i++) {
log_buffer[i+LOG_DATA_OFFSET] = xbeel_payload[i+XBEE_RFDATA_OFFSET];
}
- log_payload(xbeel_payload_len-XBEE_RFDATA_OFFSET, source, xbeel_timestamp);
+//mmm log_payload(xbeel_payload_len-XBEE_RFDATA_OFFSET, source,
xbeel_timestamp);
LED_TOGGLE(3);
goto restart;
}
@@ -383,29 +383,28 @@
{
#ifdef USE_MAX11040
- if (max11040_data == MAX11040_DATA_AVAILABLE) {
+ if (max11040_buf_in != max11040_buf_out) {
// LED_TOGGLE(3);
int i;
+ max11040_data = MAX11040_IDLE;
+
log_buffer[LOG_DATA_OFFSET+0] = 100; // sender_id;
log_buffer[LOG_DATA_OFFSET+1] = 61; // message_id;
- for (i=0; i<16; i++) {
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 0] = (max11040_values[i] )
& 0xFF;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 1] = (max11040_values[i] >> 8 )
& 0xFF;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 2] = (max11040_values[i] >> 16)
& 0xFF;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 3] = (max11040_values[i] >> 24)
& 0xFF;
+ while(max11040_buf_in != max11040_buf_out) {
+ for (i=0; i<16; i++) {
+ log_buffer[LOG_DATA_OFFSET+2 + i*4 + 0] =
(max11040_values[max11040_buf_out][i] ) & 0xFF;
+ log_buffer[LOG_DATA_OFFSET+2 + i*4 + 1] =
(max11040_values[max11040_buf_out][i] >> 8 ) & 0xFF;
+ log_buffer[LOG_DATA_OFFSET+2 + i*4 + 2] =
(max11040_values[max11040_buf_out][i] >> 16) & 0xFF;
+ log_buffer[LOG_DATA_OFFSET+2 + i*4 + 3] =
(max11040_values[max11040_buf_out][i] >> 24) & 0xFF;
-#if 0
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 0] = i*4;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 1] = i*4+1;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 2] = i*4+2;
- log_buffer[LOG_DATA_OFFSET+2 + i*4 + 3] = i*4+3;
-#endif
-
- }
- log_payload(2 + 16 * 4, LOG_SOURCE_UART0, max11040_timestamp);
- max11040_data = MAX11040_IDLE;
+ }
+ log_payload(2 + 16 * 4, LOG_SOURCE_UART0,
max11040_timestamp[max11040_buf_out]);
+ i = max11040_buf_out+1;
+ if (i >= MAX11040_BUF_SIZE) i=0;
+ max11040_buf_out = i;
+ }
}
#endif
Modified: paparazzi3/trunk/sw/airborne/max11040.c
===================================================================
--- paparazzi3/trunk/sw/airborne/max11040.c 2010-01-24 02:45:52 UTC (rev
4483)
+++ paparazzi3/trunk/sw/airborne/max11040.c 2010-01-24 14:51:29 UTC (rev
4484)
@@ -1,12 +1,13 @@
#include "max11040.h"
-
volatile uint8_t max11040_status;
volatile uint8_t max11040_data;
-volatile int32_t max11040_values[MAXM_NB_CHAN] = {0};
+volatile int32_t max11040_values[MAX11040_BUF_SIZE][MAXM_NB_CHAN] = {{0}};
+volatile uint32_t max11040_timestamp[MAX11040_BUF_SIZE] = {0};
volatile uint8_t max11040_count = 0;
-volatile uint32_t max11040_timestamp = 0;
+volatile uint32_t max11040_buf_in = 0;
+volatile uint32_t max11040_buf_out = 0;
static void SSP_ISR(void) __attribute__((naked));
@@ -162,19 +163,19 @@
if (max11040_count == 0) foo = SSPDR;
- max11040_values[max11040_count] = SSPDR << 16;
- max11040_values[max11040_count] |= SSPDR << 8;
- max11040_values[max11040_count] |= SSPDR;
- if (max11040_values[max11040_count] & 0x800000)
- max11040_values[max11040_count] |= 0xFF000000;
+ max11040_values[max11040_buf_in][max11040_count] = SSPDR << 16;
+ max11040_values[max11040_buf_in][max11040_count] |= SSPDR << 8;
+ max11040_values[max11040_buf_in][max11040_count] |= SSPDR;
+ if (max11040_values[max11040_buf_in][max11040_count] & 0x800000)
+ max11040_values[max11040_buf_in][max11040_count] |= 0xFF000000;
max11040_count++;
- max11040_values[max11040_count] = SSPDR << 16;
- max11040_values[max11040_count] |= SSPDR << 8;
- max11040_values[max11040_count] |= SSPDR;
- if (max11040_values[max11040_count] & 0x800000)
- max11040_values[max11040_count] |= 0xFF000000;
+ max11040_values[max11040_buf_in][max11040_count] = SSPDR << 16;
+ max11040_values[max11040_buf_in][max11040_count] |= SSPDR << 8;
+ max11040_values[max11040_buf_in][max11040_count] |= SSPDR;
+ if (max11040_values[max11040_buf_in][max11040_count] & 0x800000)
+ max11040_values[max11040_buf_in][max11040_count] |= 0xFF000000;
max11040_count++;
@@ -182,6 +183,13 @@
{
MaxmUnselect();
max11040_data = MAX11040_DATA_AVAILABLE;
+ i = max11040_buf_in+1;
+ if (i >= MAX11040_BUF_SIZE) i=0;
+ if (i != max11040_buf_out) {
+ max11040_buf_in = i;
+ } else {
+ max11040_buf_in = i;
+ }
}
}
break;
Modified: paparazzi3/trunk/sw/airborne/max11040.h
===================================================================
--- paparazzi3/trunk/sw/airborne/max11040.h 2010-01-24 02:45:52 UTC (rev
4483)
+++ paparazzi3/trunk/sw/airborne/max11040.h 2010-01-24 14:51:29 UTC (rev
4484)
@@ -7,6 +7,7 @@
#define MAXM_NB_CHAN 16
#define MAXM_NB_ADCS ((MAXM_NB_CHAN+3)/4)
+#define MAX11040_BUF_SIZE 320
extern void max11040_init_ssp(void);
extern void max11040_init( void );
@@ -18,9 +19,11 @@
extern volatile uint8_t max11040_status;
extern volatile uint8_t max11040_data;
-extern volatile int32_t max11040_values[MAXM_NB_CHAN];
+extern volatile int32_t max11040_values[MAX11040_BUF_SIZE][MAXM_NB_CHAN];
+extern volatile uint32_t max11040_timestamp[MAX11040_BUF_SIZE];
extern volatile uint8_t max11040_count;
-extern volatile uint32_t max11040_timestamp;
+extern volatile uint32_t max11040_buf_in;
+extern volatile uint32_t max11040_buf_out;
#define MAX11040_RESET 0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4484] Add MAX11040 buffer to fix data underrun.,
Martin Mueller <=