[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4264] SCP1000 I2C fixes
From: |
Martin Mueller |
Subject: |
[paparazzi-commits] [4264] SCP1000 I2C fixes |
Date: |
Sat, 17 Oct 2009 22:29:24 +0000 |
Revision: 4264
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4264
Author: mmm
Date: 2009-10-17 22:29:24 +0000 (Sat, 17 Oct 2009)
Log Message:
-----------
SCP1000 I2C fixes
Modified Paths:
--------------
paparazzi3/trunk/conf/airframes/funjeteth1.xml
paparazzi3/trunk/conf/airframes/logger_sd_adc.xml
paparazzi3/trunk/sw/airborne/arm7/efsl/conf/config.h
paparazzi3/trunk/sw/airborne/baro_scp_i2c.c
paparazzi3/trunk/sw/airborne/baro_scp_i2c.h
paparazzi3/trunk/sw/airborne/i2c.c
paparazzi3/trunk/sw/airborne/main_logger.c
Modified: paparazzi3/trunk/conf/airframes/funjeteth1.xml
===================================================================
--- paparazzi3/trunk/conf/airframes/funjeteth1.xml 2009-10-17 15:19:12 UTC
(rev 4263)
+++ paparazzi3/trunk/conf/airframes/funjeteth1.xml 2009-10-17 22:29:24 UTC
(rev 4264)
@@ -79,7 +79,9 @@
</section>
<section name="BAT">
- <define name="MILLIAMP_PER_PERCENT" value="0.86"/>
+ <!--define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/-->
+ <define name="ADC_CHANNEL_CURRENT" value="ADC_6"/>
+ <define name="MilliAmpereOfAdc(adc)" value="(88*adc)"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
<!-- 0.0247311828 -->
<!-- 0.02432905 -->
@@ -176,10 +178,26 @@
<define name="DEVICE_ADDRESS" value="...."/>
</section>
- <section name="SIMU">
- <define name="YAW_RESPONSE_FACTOR" value="0.5"/>
- </section>
+ <section name="MICROMAG">
+ <define name="MM_SS_PIN" value="20"/>
+ <define name="MM_SS_IODIR" value="IO0DIR"/>
+ <define name="MM_SS_IOSET" value="IO0SET"/>
+ <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_RESET_PIN" value="29"/>
+ <define name="MM_RESET_IODIR" value="IO0DIR"/>
+ <define name="MM_RESET_IOSET" value="IO0SET"/>
+ <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+ <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+ <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+ <define name="MM_DRDY_EINT" value="0"/>
+ <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+ </section>
+
<makefile>
CONFIG = \"tiny_2_1.h\"
@@ -205,11 +223,10 @@
#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_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
Modified: paparazzi3/trunk/conf/airframes/logger_sd_adc.xml
===================================================================
--- paparazzi3/trunk/conf/airframes/logger_sd_adc.xml 2009-10-17 15:19:12 UTC
(rev 4263)
+++ paparazzi3/trunk/conf/airframes/logger_sd_adc.xml 2009-10-17 22:29:24 UTC
(rev 4264)
@@ -35,24 +35,19 @@
<airframe name="Logger">
- <section name="MICROMAG">
+ <section name="MAX11040">
- <define name="MM_SS_PIN" value="20"/>
- <define name="MM_SS_IODIR" value="IO0DIR"/>
- <define name="MM_SS_IOSET" value="IO0SET"/>
- <define name="MM_SS_IOCLR" value="IO0CLR"/>
+ <define name="MAXM_SS_PIN" value="20"/>
+ <define name="MAXM_SS_IODIR" value="IO0DIR"/>
+ <define name="MAXM_SS_IOSET" value="IO0SET"/>
+ <define name="MAXM_SS_IOCLR" value="IO0CLR"/>
- <define name="MM_RESET_PIN" value="29"/>
- <define name="MM_RESET_IODIR" value="IO0DIR"/>
- <define name="MM_RESET_IOSET" value="IO0SET"/>
- <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+ <define name="MAXM_DRDY_PINSEL" value="PINSEL1"/>
+ <define name="MAXM_DRDY_PINSEL_BIT" value="0"/>
+ <define name="MAXM_DRDY_PINSEL_VAL" value="1"/>
+ <define name="MAXM_DRDY_EINT" value="0"/>
+ <define name="MAXM_DRDY_VIC_IT" value="VIC_EINT0"/>
- <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
- <define name="MM_DRDY_PINSEL_BIT" value="0"/>
- <define name="MM_DRDY_PINSEL_VAL" value="1"/>
- <define name="MM_DRDY_EINT" value="0"/>
- <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
-
</section>
<makefile>
@@ -64,7 +59,7 @@
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_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)/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
</makefile>
Modified: paparazzi3/trunk/sw/airborne/arm7/efsl/conf/config.h
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/efsl/conf/config.h 2009-10-17
15:19:12 UTC (rev 4263)
+++ paparazzi3/trunk/sw/airborne/arm7/efsl/conf/config.h 2009-10-17
22:29:24 UTC (rev 4264)
@@ -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*/
Modified: paparazzi3/trunk/sw/airborne/baro_scp_i2c.c
===================================================================
--- paparazzi3/trunk/sw/airborne/baro_scp_i2c.c 2009-10-17 15:19:12 UTC (rev
4263)
+++ paparazzi3/trunk/sw/airborne/baro_scp_i2c.c 2009-10-17 22:29:24 UTC (rev
4264)
@@ -8,6 +8,7 @@
#include "baro_scp_i2c.h"
+#include "sys_time.h"
#include "i2c.h"
#include "led.h"
@@ -30,13 +31,15 @@
}
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 @@
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//////////
-#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
-//////////
-
-
Modified: paparazzi3/trunk/sw/airborne/baro_scp_i2c.h
===================================================================
--- paparazzi3/trunk/sw/airborne/baro_scp_i2c.h 2009-10-17 15:19:12 UTC (rev
4263)
+++ paparazzi3/trunk/sw/airborne/baro_scp_i2c.h 2009-10-17 22:29:24 UTC (rev
4264)
@@ -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;
Modified: paparazzi3/trunk/sw/airborne/i2c.c
===================================================================
--- paparazzi3/trunk/sw/airborne/i2c.c 2009-10-17 15:19:12 UTC (rev 4263)
+++ paparazzi3/trunk/sw/airborne/i2c.c 2009-10-17 22:29:24 UTC (rev 4264)
@@ -24,6 +24,7 @@
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;
Modified: paparazzi3/trunk/sw/airborne/main_logger.c
===================================================================
--- paparazzi3/trunk/sw/airborne/main_logger.c 2009-10-17 15:19:12 UTC (rev
4263)
+++ paparazzi3/trunk/sw/airborne/main_logger.c 2009-10-17 22:29:24 UTC (rev
4264)
@@ -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 @@
{
#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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4264] SCP1000 I2C fixes,
Martin Mueller <=