paparazzi-commits
[Top][All Lists]
Advanced

[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
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]