diff --git a/conf/airframes/funjeteth1.xml b/conf/airframes/funjeteth1.xml index c05cfd20c6..d0094d0072 100644 --- a/conf/airframes/funjeteth1.xml +++ b/conf/airframes/funjeteth1.xml @@ -79,7 +79,9 @@
- + + + @@ -176,9 +178,25 @@
-
- -
+
+ + + + + + + + + + + + + + + + + +
CONFIG = \"tiny_2_1.h\" @@ -205,11 +223,10 @@ ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c #ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 -DDATALINK=PPRZ -DUART1_BAUD=B9600 #ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c - ap.CFLAGS += -DINTER_MCU ap.srcs += inter_mcu.c -ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 +ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_6 ap.srcs += $(SRC_ARCH)/adc_hw.c ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 -DGPS_USE_LATLONG @@ -225,14 +242,16 @@ ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c ap.srcs += nav_line.c ap.srcs += nav_survey_rectangle.c + +ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MICROMAG_FW +ap.srcs += micromag_fw.c $(SRC_ARCH)/micromag_fw_hw.c + ap.srcs += humid_sht.c -ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=3 -DSCK_PIN=2 +ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=30 -DSCK_PIN=4 -ap.srcs += baro_scp.c -ap.CFLAGS += -DUSE_BARO_SCP +ap.srcs += i2c.c arm7/i2c_hw.c baro_scp_i2c.c +ap.CFLAGS += -DUSE_I2C0 -DUSE_BARO_SCP -ap.srcs += joystick.c -ap.CFLAGS += -DUSE_JOYSTICK # Config for SITL simulation include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile diff --git a/conf/airframes/logger_sd_adc.xml b/conf/airframes/logger_sd_adc.xml index 3ca8a9095e..fa5309a4a3 100644 --- a/conf/airframes/logger_sd_adc.xml +++ b/conf/airframes/logger_sd_adc.xml @@ -35,23 +35,18 @@ -
+
- - - - + + + + - - - - - - - - - - + + + + +
@@ -64,7 +59,7 @@ include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile FLASH_MODE=IAP ap.CFLAGS += -DBOARD_CONFIG=$(CONFIG) -DLED -DLOGGER -ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_logger_adc.c +ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_logger.c #choose one ap.CFLAGS += -DLOG_XBEE @@ -75,6 +70,9 @@ ap.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B57600 -DUSE_UART0_RX_ONLY ap.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600 -DUSE_UART1_RX_ONLY ap.srcs += $(SRC_ARCH)/uart_hw.c +#set SPI interface for SD card (0 or 1) +ap.CFLAGS += -DHW_ENDPOINT_LPC2000_SPINUM=0 + #efsl ap.CFLAGS += -I $(SRC_ARCH)/efsl/inc -I $(SRC_ARCH)/efsl/conf @@ -98,7 +96,7 @@ ap.srcs += $(SRC_ARCH)/usb_msc_hw.c ap.srcs += $(SRC_ARCH)/lpcusb/usbhw_lpc.c $(SRC_ARCH)/lpcusb/usbcontrol.c $(SRC_ARCH)/lpcusb/usbstdreq.c $(SRC_ARCH)/lpcusb/usbinit.c ap.srcs += $(SRC_ARCH)/lpcusb/examples/msc_bot.c $(SRC_ARCH)/lpcusb/examples/msc_scsi.c $(SRC_ARCH)/lpcusb/examples/blockdev_sd.c $(SRC_ARCH)/lpcusb/examples/lpc2000_spi0.c -ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=9 -DSSP_VIC_SLOT=11 -DUSE_MAX11040 +ap.CFLAGS += -DMAX11040_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MAX11040 ap.srcs += max11040.c $(SRC_ARCH)/max11040_hw.c diff --git a/sw/airborne/arm7/efsl/conf/config.h b/sw/airborne/arm7/efsl/conf/config.h index a5f7872eea..73d2d4ac78 100644 --- a/sw/airborne/arm7/efsl/conf/config.h +++ b/sw/airborne/arm7/efsl/conf/config.h @@ -20,8 +20,8 @@ #define HW_ENDPOINT_LPC2000_SD /* defines the interface for LPC213x (0=SPI0 1=SPI1) */ - // #define HW_ENDPOINT_LPC2000_SPINUM (0) - #define HW_ENDPOINT_LPC2000_SPINUM (1) + //#define HW_ENDPOINT_LPC2000_SPINUM (0) + //#define HW_ENDPOINT_LPC2000_SPINUM (1) /*#define HW_ENDPOINT_DSP_TI6713_SD*/ diff --git a/sw/airborne/baro_scp_i2c.c b/sw/airborne/baro_scp_i2c.c index 7bf7aa1970..a2e813b9bb 100755 --- a/sw/airborne/baro_scp_i2c.c +++ b/sw/airborne/baro_scp_i2c.c @@ -8,6 +8,7 @@ #include "baro_scp_i2c.h" +#include "sys_time.h" #include "i2c.h" #include "led.h" @@ -30,13 +31,15 @@ static void baro_scp_start_high_res_measurement(void) { } void baro_scp_init( void ) { - baro_scp_status = BARO_SCP_IDLE; + baro_scp_status = BARO_SCP_UNINIT; baro_scp_i2c_done = FALSE; - baro_scp_start_high_res_measurement(); } void baro_scp_periodic( void ) { - if (baro_scp_i2c_done) { + if (baro_scp_status == BARO_SCP_UNINIT && cpu_time_sec > 1) { + baro_scp_start_high_res_measurement(); + baro_scp_status = BARO_SCP_IDLE; + } else if (baro_scp_i2c_done) { if (baro_scp_status == BARO_SCP_IDLE) { /* initial measurement */ @@ -96,205 +99,3 @@ void baro_scp_periodic( void ) { } } - - - - - - - - - - - - - - - - - - - - - - - -////////// -#if 0 - - -#include "std.h" -#include "init_hw.h" -#include "sys_time.h" -#include "led.h" -#include "interrupt_hw.h" - -#include "uart.h" -#include "messages.h" -#include "downlink.h" - -#include "spi_hw.h" - -#include "baro_scp.h" - -#define STA_UNINIT 0 -#define STA_INITIALISING 1 -#define STA_IDLE 2 - -uint8_t baro_scp_status; -uint32_t baro_scp_pressure; -uint16_t baro_scp_temperature; -bool_t baro_scp_available; - -static void baro_scp_start_high_res_measurement(void); -static void baro_scp_read(void); -static void EXTINT_ISR(void) __attribute__((naked)); -static void SPI1_ISR(void) __attribute__((naked)); - -void baro_scp_periodic(void) { - if (baro_scp_status == STA_UNINIT && cpu_time_sec > 1) { - baro_scp_start_high_res_measurement(); - baro_scp_status = STA_INITIALISING; - } -} - -/* ssp input clock 468.75kHz, clock that divided by SCR+1 */ -#define SSP_CLOCK 468750 - -/* SSPCR0 settings */ -#define SSP_DDS 0x07 << 0 /* data size : 8 bits */ -#define SSP_FRF 0x00 << 4 /* frame format : SPI */ -#define SSP_CPOL 0x00 << 6 /* clock polarity : data captured on first clock transition */ -#define SSP_CPHA 0x00 << 7 /* clock phase : SCK idles low */ -#define SSP_SCR 0x0F << 8 /* serial clock rate : divide by 16 */ - -/* SSPCR1 settings */ -#define SSP_LBM 0x00 << 0 /* loopback mode : disabled */ -#define SSP_SSE 0x00 << 1 /* SSP enable : disabled */ -#define SSP_MS 0x00 << 2 /* master slave mode : master */ -#define SSP_SOD 0x00 << 3 /* slave output disable : don't care when master */ - -#define SS_PIN 20 -#define SS_IODIR IO0DIR -#define SS_IOSET IO0SET -#define SS_IOCLR IO0CLR - -#define ScpSelect() SetBit(SS_IOCLR,SS_PIN) -#define ScpUnselect() SetBit(SS_IOSET,SS_PIN) - -void baro_scp_init( void ) { - /* setup pins for SSP (SCK, MISO, MOSI) */ - PINSEL1 |= 2 << 2 | 2 << 4 | 2 << 6; - - /* setup SSP */ - SSPCR0 = SSP_DDS | SSP_FRF | SSP_CPOL | SSP_CPHA | SSP_SCR; - SSPCR1 = SSP_LBM | SSP_MS | SSP_SOD; - /* set prescaler for SSP clock */ - SSPCPSR = PCLK/SSP_CLOCK; - - /* initialize interrupt vector */ - VICIntSelect &= ~VIC_BIT(VIC_SPI1); // SPI1 selected as IRQ - VICIntEnable = VIC_BIT(VIC_SPI1); // SPI1 interrupt enabled - VICVectCntl7 = VIC_ENABLE | VIC_SPI1; - VICVectAddr7 = (uint32_t)SPI1_ISR; // address of the ISR - - /* configure SS pin */ - SetBit(SS_IODIR, SS_PIN); /* pin is output */ - ScpUnselect(); /* pin idles high */ - - /* configure DRDY pin */ - /* connected pin to EXINT */ - SPI1_DRDY_PINSEL |= SPI1_DRDY_PINSEL_VAL << SPI1_DRDY_PINSEL_BIT; - SetBit(EXTMODE, SPI1_DRDY_EINT); /* EINT is edge trigered */ - SetBit(EXTPOLAR,SPI1_DRDY_EINT); /* EINT is trigered on rising edge */ - SetBit(EXTINT,SPI1_DRDY_EINT); /* clear pending EINT */ - - /* initialize interrupt vector */ - VICIntSelect &= ~VIC_BIT( SPI1_DRDY_VIC_IT ); /* select EINT as IRQ source */ - VICIntEnable = VIC_BIT( SPI1_DRDY_VIC_IT ); /* enable it */ - VICVectCntl11 = VIC_ENABLE | SPI1_DRDY_VIC_IT; - VICVectAddr11 = (uint32_t)EXTINT_ISR; // address of the ISR - - baro_scp_status = STA_UNINIT; -} - -void SPI1_ISR(void) { - ISR_ENTRY(); - - if (baro_scp_status == STA_INITIALISING) { - uint8_t foo1 = SSPDR; - uint8_t foo2 = SSPDR; - baro_scp_status = STA_IDLE; - foo1=foo2; - } - else if (baro_scp_status == STA_IDLE) { - - uint8_t foo0 = SSPDR; - baro_scp_temperature = SSPDR<<8; - baro_scp_temperature += SSPDR; - if (baro_scp_temperature & 0x2000) { - baro_scp_temperature |= 0xC000; - } - baro_scp_temperature *= 5; - - uint8_t foo1 = SSPDR; - uint32_t datard8 = SSPDR<<16; - uint8_t foo2 = SSPDR; - baro_scp_pressure = SSPDR<<8; - baro_scp_pressure += SSPDR; - baro_scp_pressure += datard8; - baro_scp_pressure *= 25; - baro_scp_available = TRUE; - foo1=foo2; - foo0=foo2; - } - - ScpUnselect(); - SpiClearRti(); - SpiDisable(); - - VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ - ISR_EXIT(); -} - -void EXTINT_ISR(void) { - ISR_ENTRY(); - baro_scp_read(); - - SetBit(EXTINT,SPI1_DRDY_EINT); /* clear EINT2 */ - VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ - ISR_EXIT(); -} - -/* write 0x0A to 0x03 */ -static void baro_scp_start_high_res_measurement(void) { - uint8_t cmd = 0x03<<2|0x02; - uint8_t data = 0x0A; - ScpSelect(); - SSPDR = cmd; - SSPDR = data; - SpiEnableRti(); - SpiEnable(); -} - -/* read 0x21 (TEMP), 0x1F (MSB) and 0x20 (LSB) */ -static void baro_scp_read(void) { - uint8_t cmd0 = 0x21 << 2; - uint8_t cmd1 = 0x1F << 2; - uint8_t cmd2 = 0x20 << 2; - ScpSelect(); - SSPDR = cmd0; - SSPDR = 0; - SSPDR = 0; - SSPDR = cmd1; - SSPDR = 0; - SSPDR = cmd2; - SSPDR = 0; - SSPDR = 0; - SpiEnable(); -} - -#endif -////////// - - diff --git a/sw/airborne/baro_scp_i2c.h b/sw/airborne/baro_scp_i2c.h index 0aecf6c3bb..b635086e8b 100755 --- a/sw/airborne/baro_scp_i2c.h +++ b/sw/airborne/baro_scp_i2c.h @@ -3,10 +3,11 @@ #include "std.h" -#define BARO_SCP_IDLE 0 -#define BARO_SCP_RD_TEMP 1 -#define BARO_SCP_RD_PRESS_0 2 -#define BARO_SCP_RD_PRESS_1 3 +#define BARO_SCP_UNINIT 0 +#define BARO_SCP_IDLE 1 +#define BARO_SCP_RD_TEMP 2 +#define BARO_SCP_RD_PRESS_0 3 +#define BARO_SCP_RD_PRESS_1 4 extern uint8_t baro_scp_status; extern uint32_t baro_scp_pressure; diff --git a/sw/airborne/i2c.c b/sw/airborne/i2c.c index 16e6b8ceb8..4f46d524d1 100644 --- a/sw/airborne/i2c.c +++ b/sw/airborne/i2c.c @@ -24,6 +24,7 @@ void i2c0_init(void) { void i2c0_receive(uint8_t slave_addr, uint16_t len, volatile bool_t* finished) { + i2c0_trx = 0; i2c0_len_r = len; i2c0_slave_addr = slave_addr | I2C_RECEIVE; i2c0_finished = finished; diff --git a/sw/airborne/main_logger.c b/sw/airborne/main_logger.c index 66c912502b..a218d6599c 100644 --- a/sw/airborne/main_logger.c +++ b/sw/airborne/main_logger.c @@ -102,7 +102,7 @@ #endif /* BUTTON that stops logging (BUTTON = P0.7, INT1 = P0.14) */ -#define STOP_KEY 7 +#define STOP_KEY 14 /* USB Vbus (= P0.23) */ #define VBUS_PIN 23 @@ -380,22 +380,29 @@ int do_log(void) { #ifdef USE_MAX11040 - if (max11040_data == MAXM_DATA_AVAILABLE) { + if (max11040_data == MAX11040_DATA_AVAILABLE) { // LED_TOGGLE(3); int i; - log_buffer[LOG_DATA_OFFSET+0] = 42; // sender_id; - log_buffer[LOG_DATA_OFFSET+1] = 59; // message_id; + 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 + i + 0] = (max11040_values[i] << 24) & 0xFF; + 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; + +#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 = MAXM_IDLE; + max11040_data = MAX11040_IDLE; } #endif