1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-30 08:24:11 +01:00
Commit Graph

824 Commits

Author SHA1 Message Date
Stacey Sheldon
6c192f67ee gasp: delete clutter 2011-12-31 13:03:49 -05:00
Stacey Sheldon
e7053c77f0 usb config: remove unused macro for number of endpoints
This is no longer referenced and is confusing.
2011-12-31 13:02:43 -05:00
Stacey Sheldon
b91f40eb94 iap: extend API to support read/write of boot counter
Also clean up unused/obsolete definitions.
2011-12-30 23:05:38 -05:00
Stacey Sheldon
2cf1fe93c6 com: don't block forever waiting for a transmitter
Not all transmitters will continue to run when disconnected.
USB is one example of this.  When the USB cable was disconnected,
any transmitter blocked here would wait forever.

This was particularly noticeable when the telemetry Tx task
blocked forever on USB disconnect.  This also resulted in
the telemetry Rx task blocking forever waiting on the UAVTalk
connection lock.

We now block for a max of 5s waiting for space in the transmit
buffer.
2011-12-30 23:05:37 -05:00
Stacey Sheldon
16619584e4 usb cdc: return valid data in response to SetLineCoding 2011-12-30 23:05:36 -05:00
Stacey Sheldon
80e0be3cec com: fragment transmitted buffers to match underlying device
PIOS_COM_SendBufferNonBlocking() will now fragment its buffer
to match the max size of the underlying device.

This allows the buffer size of the underlying device to shrink
below the maximum message size, thus allowing us to use smaller
buffers on memory-constrained platforms.
2011-12-30 23:05:36 -05:00
Stacey Sheldon
407bec0c95 usb cdc: track oversized rx buffers 2011-12-30 23:05:35 -05:00
Stacey Sheldon
b858cf387e com: track dropped bytes on rx for usart and usb com 2011-12-30 23:05:35 -05:00
Stacey Sheldon
2040645171 com: Use all bytes in Tx buffer
Code would previously fail Tx if we happen to send data
that happened to be exactly the size of the available space
in the tx buffer.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
34af9ac92d usb_com: NAK rather than STALL on buffer full
STALL should only be used to indicate an error has occurred.
NAK is the correct mechanism to provide backpressure.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
e2bb7140fe usb cdc: allow use of entire rx buffer
Previously, the code only allowed n-1 bytes of the
available space to be used.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
86aead52ce usb cdc: only pass valid bytes from USB rx up to com layer
Previously, up to 63 random bytes would be passed to the COM
layer and would be delivered to the application as though
the far end had sent them.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
f54c0552ce com: make sure we know when a higher prio task is woken 2011-12-30 23:05:34 -05:00
Stacey Sheldon
202b1bd428 com: Always kick rx_start if we got zero bytes
This will ensure that we kick rx_start at least once every
time that a user tries to receive bytes from the underlying
device.
2011-12-30 23:05:34 -05:00
Stacey Sheldon
64f498e48a com-bridge: add usart to usb vcp bridge 2011-12-30 23:05:34 -05:00
Stacey Sheldon
eebdda6276 usb cdc: make HID/CDC configurable in hwsettings 2011-12-30 23:05:34 -05:00
Stacey Sheldon
59cb489e01 usb: clean up pios hooks into stm32 usb_core
Reduced scope of many variables since they were being
exposed unnecessarily.

Renamed pios_usb_hid_prop code to pios_usbhook to reflect
the fact that it implements all of the callout functions
that are hooked into the stm32 usb library.
2011-12-30 23:05:33 -05:00
Stacey Sheldon
c0259dc616 usb cdc: USB composite device with HID + VCP 2011-12-30 23:05:33 -05:00
James Cotton
25dfb5463e Add option to switch to using the MPU6000 accel instead of BMA180. Disabled by
default.
2011-12-29 02:08:13 -06:00
James Cotton
c080080810 Add ability to change the SPI bus runs at 2011-12-29 00:09:53 -06:00
James Cotton
05da41a79b Get FirmwareIAP object working on revo 2011-12-24 13:15:56 -06:00
James Cotton
569b201b58 Move the bl_helper out of the common directory as it isn't 2011-12-24 13:10:23 -06:00
James Cotton
a9c61845af Create a separate task for sensors and attitude on revo. 2011-12-12 00:47:16 -06:00
James Cotton
33a12d829e Merge branch 'next' into revolution
Conflicts:
	flight/PiOS/Common/pios_flashfs_objlist.c
2011-12-11 22:55:54 -06:00
James Cotton
162b0d7f75 Because the UAVO field sorting required for revo changes all the object IDs,
trigger a flash wipe on all existing boards with this upgrade.
2011-12-10 14:13:28 -06:00
James Cotton
43fa9e702e Move DSM to Flexiport and enable GPS on GPS port. Currently GPS module locks
up though.
2011-11-28 09:11:13 -06:00
James Cotton
1af66fc3d2 Get rid of 500 ms delay in startup for the pios_sys so that servos start
properly but a delay is still needs to get MPU6000 up right.  Fucking POS.
2011-11-27 18:05:20 -06:00
James Cotton
f7f94011ee Damnit. For higher bus speeds MPU6000 chip must be initialized twice in a row.
WTF piece of shit.
2011-11-27 02:35:08 -06:00
James Cotton
f7d13ebd57 Hack to tweak the gyro gain for now although its too far out at the moment so
something isn't configured properly.  Possibly it is staying in 250 deg/s mode.
Also make sure if the MPU6000 fifo backs up to pull extra data.
2011-11-27 01:22:37 -06:00
James Cotton
8bbc767a4e Get the pressure sensor working and reading into Revolution 2011-11-27 00:52:09 -06:00
James Cotton
cd65df013e Merge branch 'next' into revolution
Conflicts:
	flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj
2011-11-26 22:52:32 -06:00
James Cotton
13729f854e PiOS F4: Fix PWM timer interrupts and enable PWM input 2011-11-26 22:41:41 -06:00
James Cotton
21367d3a22 Spektrum support for Revolution 2011-11-26 22:19:42 -06:00
James Cotton
e24c905ff7 F4 PiOS: Reimplement the RTC logic for F4 2011-11-26 22:13:57 -06:00
James Cotton
99123372d0 TO BE REVERTED: Temporary patch to make the w25x driver work with the revo m25p
chip.  Need to abstract out the erase commands into a general pios_spi_flash
driver.
2011-11-26 14:55:16 -06:00
James Cotton
11ad135b27 Some changes to MPU6000 driver to make it start more reliably on fresh powerup 2011-11-26 14:12:12 -06:00
James Cotton
c57acf6459 F4 PiOS: Must use a different remap command on F4 for timer module to command
pin.  Include the remap source in the config structure now.
2011-11-26 03:35:26 -06:00
James Cotton
de9a8453ef Configure the board to use PWM input and servo output 2011-11-26 02:19:56 -06:00
Oleg Semyonov
6d78b97d92 dsm: update DSM protocol binding details in the comments (no code change) 2011-11-19 17:33:04 +02:00
James Cotton
7637e9f669 Get flash chip working and saving to memory. Also get the I2C working with
BMA180 driver.
2011-11-19 00:13:02 -06:00
James Cotton
da75e9fdaf PiOS: Make I2C return an error code for NACK 2011-11-19 00:11:16 -06:00
James Cotton
a7ef5601e0 Update the MPU6000 FIFO code and also fix the temperature code 2011-11-18 00:24:55 -06:00
James Cotton
6d74e96c31 Got attitude working again. MPU6000 FIFO reading needs a bit of work. 2011-11-18 00:00:55 -06:00
James Cotton
79730d5afa Try and get the MPU6000 buffer to run down. Staying high for some reason. 2011-11-17 11:23:31 -06:00
James Cotton
0efffef1fa Work on bringing the Revolution board up 2011-11-17 10:13:34 -06:00
James Cotton
d97e5dbc59 Add SPI MPU6000 driver. Unfortunate hack in HMC5883 EXTI handler to call
MPU6000.  Need to generalize EXTI ASAP.
2011-11-17 10:12:10 -06:00
James Cotton
8477c2229b Using real prototype board now. Move telemetry to GPS port for easy-ness right
now.
2011-11-17 01:58:51 -06:00
James Cotton
1deb799b6f Get simple attitude estimation working on F4 INS. Also make MPU6050 return
scaling that casts to degrees.
2011-11-16 11:36:04 -06:00
James Cotton
aa698f7b0a Increase the CC IRQ stack to avoid some memory warnings 2011-11-16 09:20:30 -06:00
James Cotton
aeb42332d6 Get the MPU6050 fifo running and read by the attitude module 2011-11-14 11:23:14 -06:00
James Cotton
1086df5b21 Correctly configure MPU6050 interrupt. However currently not pushing data to
the buffer as that seems to fail.
2011-11-14 11:11:40 -06:00
James Cotton
da679441ec Duplicate the spektrum (dsm) driver to F4 branch 2011-11-14 10:12:51 -06:00
James Cotton
684715930a Merge branch 'next' into revolution
Conflicts:
	flight/OpenPilot/Makefile
	flight/Revolution/System/inc/openpilot.h
2011-11-14 10:11:53 -06:00
James Cotton
180d84e373 Update the MPU6050 code a bit more to use the right registers. 2011-11-14 10:09:49 -06:00
James Cotton
2eb89e9b81 No reason for the data read flag in pios_bmp085.c to be a semaphore 2011-11-14 10:07:19 -06:00
James Cotton
96a098bf74 Add code for MPU6050 driver 2011-11-13 19:44:56 -06:00
James Cotton
1e2fe77e3f Start migrating the attitude solution to FreeRTOS 2011-11-13 18:51:35 -06:00
James Cotton
0c103f7b2c Delete F2 PiOS port since unused 2011-11-13 17:33:43 -06:00
James Cotton
fffb6449ac Delete the old INS target 2011-11-13 17:31:34 -06:00
James Cotton
c44235494c Update the Revolution board file a bit 2011-11-13 17:23:56 -06:00
James Cotton
938a577d11 Small change to pios_adc so it works when not enabled 2011-11-13 17:14:08 -06:00
James Cotton
ec84fc4058 Get the Revolution bootloader working 2011-11-13 17:13:42 -06:00
Corvus Corax
aa69027cb2 Merge branch 'next' into CC_GPS 2011-11-11 11:44:11 +01:00
Corvus Corax
e03e3c2ed8 removed "special code" to start optional modules 2011-11-11 11:22:54 +01:00
Oleg Semyonov
f5e82b8242 spektrum: rename Spektrum to DSM (DSM2/DSMJ/DSMX used by Spektrum and JR radios)
No code changes, just file, variable and define names are changed.

First, it better describes the serial protocol used by DSMx satellite
receivers. Second, many people using Spektrum radio, assume Spektrum
protocol. This is the attempt to address those inaccuracies.
2011-11-04 21:40:34 +02:00
James Cotton
c0f16d2f44 Revolution: Configure clocks correctly 2011-11-03 20:12:34 -05:00
James Cotton
a2015a4f8d Compiled and flashing 2011-11-02 13:20:39 -05:00
James Cotton
0ce80e02f5 Compiles now 2011-11-02 02:51:20 -05:00
James Cotton
0931a518d4 Bring F4 PiOS up to date with some of our timer conventions 2011-11-01 04:39:51 -05:00
James Cotton
48d2e038bb More work to the revolution build 2011-11-01 04:39:20 -05:00
James Cotton
4d6f810984 Make ADC driver play properly when not included 2011-11-01 03:22:48 -05:00
James Cotton
7eee6bf85b Create revolution board file 2011-11-01 03:22:19 -05:00
James Cotton
9607da9c62 Add some drivers to the device specific library for now until the exti problems
are fixed
2011-11-01 03:19:58 -05:00
James Cotton
2cc0b301ce Make some of the StdPeriph function calls const where appropriate 2011-11-01 03:18:59 -05:00
James Cotton
3388843fb5 Merge in PixHawk F4 work 2011-11-01 01:09:55 -05:00
Oleg Semyonov
0116e6a007 spektrum: rework DSM2/DSMJ/DSMX driver for explicit DSMX resolution support
- both CC serial ports are now disabled by default (no telemetry);
- serial ports now have DSM2, DSMX (10bit) and DSMX (11bit) options;
- ReceiverGroups now have DSM (MainPort) and DSM (FlexiPort) options.

For DSM2 protocol there is an explicit resolution bit in the stream, so
the DSM2 should be selected. For DSMX there is no such bit, and user
should choose the resolution from the list configuring the spektrum port.
ReceiverGroups have single DSM option which is handled by the same driver.

Downside: this implementation saves received frame first, unrolls by the
end of frame. This should be ok, but may be improved by unrolling channels
on the fly in the rx callback.

Another minor difference is that a ChannelGroup is now bound to port:
DSM (MainPort) or DSM (FlexiPort). This was considered as acceptable
solution in order to not have 6 DSM options for each ChannelGroup and
even more in case of new DSM protocol variations.

Known problem: it is not possible to choose same protocols like
DSM2/DSM2 for two ports. It can be enabled by adding an exception to
common rule, though.

The DSMX throttle channel misbehavior (zero value) is not treated
specially yet. It should trigger the failsafe being out of bounds.
More info and data dumps are required to handle this properly.
2011-10-30 19:29:03 +02:00
James Cotton
f019412209 Various tweaks to get the F4 working 2011-10-26 21:56:00 -05:00
James Cotton
d786c152e3 Merge F4 files from PixHawk branch 2011-10-26 18:23:35 -05:00
James Cotton
0f8ae1e076 Merge branch 'next' into ins
Conflicts:
	flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj
2011-10-26 13:18:44 -05:00
Oleg Semyonov
a19bbba858 Merge branch 'next' into os/alternative_spektrum_driver 2011-10-25 11:55:05 +03:00
Oleg Semyonov
f71361ca83 Merge branch 'next' into os/GPS-on-CopterControl_next_v2
Conflicts:
	flight/Modules/System/systemmod.c
2011-10-22 23:00:47 +03:00
Oleg Semyonov
58d0812309 sbus: better frame syncronization, some cosmetic changes
In the previous version the decoder could in rare cases get synced from
the middle of data stream in case of data byte equal to the S.Bus start
of frame (SOF) byte (wrong data will be rejected but it was not perfect).
Now it waits for the real start of frame and then checks the SOF byte.
2011-10-22 00:44:09 +03:00
Oleg Semyonov
62bca651d5 spektrum: alternative DSMx (DSM2/DSMJ/DSMX) driver
- does not glitch when used in 2-frame mode (DM9, 9503, etc)
- does NOT provides yet DSMX stream decoding - do NOT merge
- uses a bit more time in the interrupt, but frees 16 bytes of RAM.
  This is done to help decoding the weird DSMX stream which does not
  contain explicit resolution/frame/lost frames info and needs special
  processing (to be done yet).
2011-10-21 23:35:17 +03:00
Oleg Semyonov
92b81e3f88 sbus: refactor the code using unified PIOS RCVR driver structure
- allow more than one S.Bus receiver (needs hardware support)
- use dynamic memory allocation (frees around 72 bytes of RAM when unused)
2011-10-20 18:23:23 +03:00
James Cotton
5dc0f397a6 OP-499 Erase settings bug: Make hte flash chip read a wrong value for 1 second
before wiping settings.
2011-10-07 14:08:56 -05:00
Oleg Semyonov
ed8cf89888 Initcall: fix compilation errors for firmware which does not use Initcalls 2011-09-28 22:57:18 +03:00
Oleg Semyonov
53c098dd08 Merge branch 'next' into os/GPS-on-CopterControl_next_v2
Conflicts:
	flight/OpenPilot/System/pios_board.c
	flight/OpenPilot/UAVObjects.inc
	shared/uavobjectdefinition/hwsettings.xml
2011-09-28 22:02:02 +03:00
James Cotton
400ba3bd47 Merge branch 'next' into ins 2011-09-12 18:57:11 -05:00
James Cotton
6457276438 Merge branch 'input_configuration' into next 2011-09-11 18:52:35 -05:00
Oleg Semyonov
f5369f9338 Input Configuration: support all 18 S.Bus input channels 2011-09-12 02:06:50 +03:00
James Cotton
4847a04db8 Mainboard: Get PWM working again. Had to add extra timer IRQ handlers for
TIM5-8.  Also TIM1 was not handled probably (for CC either) as the name of the
IRQ is TIM1_CC and TIM1_UP for the capture compare versus update.  I haven't
checked the downstream code that the registers it uses to map from a context to
event is invariant under timer channel.
2011-09-10 14:20:40 -05:00
James Cotton
eb191d869a Mainboard: Get spektrum working again. 2011-09-10 14:19:54 -05:00
James Cotton
2871c75a79 Mainboard: Get PWM working again. Had to add extra timer IRQ handlers for
TIM5-8.  Also TIM1 was not handled probably (for CC either) as the name of the
IRQ is TIM1_CC and TIM1_UP for the capture compare versus update.  I haven't
checked the downstream code that the registers it uses to map from a context to
event is invariant under timer channel.
2011-09-10 13:53:38 -05:00
James Cotton
1d2a424296 Mainboard: Get spektrum working again. 2011-09-09 09:42:13 -05:00
James Cotton
3239fdf21b Merge branch 'next' into ins
Conflicts:
	flight/CopterControl/Makefile
	flight/OpenPilot/System/pios_board.c
	flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj
2011-09-09 08:33:34 -05:00
James Cotton
552022250b INS: Disable power up checks until these are made more reliable and remove some
debugging outputs.
2011-09-08 21:44:27 -05:00
James Cotton
0eb4fd113b PiOS BMA180: Increase the comms speed for BMA180 and perfom SPI without
callback.  This takes less time.
2011-09-08 03:28:32 -05:00
James Cotton
d7ea1fc306 PiOS I2C: Swap the expected return value of the F2 pios i2c calls 2011-09-08 01:32:27 -05:00
James Cotton
72625d9971 PiOS RCVR: Make the public API use a 1 based indexing for channel numbers.
This may or may not get into next, but if so anyone following it MUST
reconfigure their inputs.
2011-09-06 16:39:08 -05:00
James Cotton
8f7712435f Merge branch 'safer_failsafe' into next 2011-09-06 16:23:11 -05:00
James Cotton
627c931c79 PiOS I2C: Swap the convention of returned values for I2C 2011-09-06 03:27:20 -05:00
Sambas
a8ef57c6d6 Redo DX8 changes 2011-09-06 08:40:10 +03:00
James Cotton
82c5f9f0f4 PIOS_RCVR: Document return values better and use enum for them 2011-09-04 12:37:39 -05:00
James Cotton
533ae9bb41 SBUS: Missed handling the S.Bus failsafe. Now returns PIOS_RVCR_TIMEOUT for
either SBus failsafe mode or when no data for 100 ms.
2011-09-04 12:15:34 -05:00
James Cotton
89e640ae7f Make sure all receiver drivers return correct constants for invalid channels. 2011-09-04 01:24:16 -05:00
James Cotton
51967ae63f OP-571 PIOS_PWM: Add back the PWM supervisor 2011-09-04 01:17:40 -05:00
James Cotton
697dbf4f5f OP-568 PIOS_RCVR: Standardize the values that are returned from the PIOS_RCVR and make
them symbolic constants.
- A timeout is 0
- A missing driver is 65534
- An invalid channel is 65535

ManualControl: Make it deal with the values explicitly.  A timed out value
should not be treated like a minimum duration signal.  Instead it does not
updated the scaled value but marks the data window as invalid to trigger the
failsafe.
2011-09-03 23:50:56 -05:00
James Cotton
dae11cf877 INS Logging: Enable temperature reading from gyro and accel (may be removed in
future), push it into UAVO and introduced a logging mode for INS that outputs
all sensor data from aux port.
2011-09-03 15:10:47 -05:00
James Cotton
5eaebac8d8 INS: Get the aux uart working. All F2 GPIO pins need to be remapped to work. Good thing to remember. 2011-09-02 17:04:39 -05:00
James Cotton
c40e5800ab BMA180: Enable the EEPROM writing on startup so settings take the first time. 2011-09-02 13:28:36 -05:00
James Cotton
612d3336b4 This patch breaks backward compatibility with AHRS solidly.
Move the configuration files for INS from AHRS* to INS*.  Strip out unused
fields in settings and merge calibration and settings since settings has
basically no information.
2011-09-01 12:21:33 -05:00
Stacey Sheldon
43b31efb76 pios: allocate driver instance data from heap
Allocate per-instance data for drivers from the heap
rather than as static variables from the .data segment.

This converts > 800 bytes of RAM from being always consumed
as static data into being allocated from the heap only when
a particular feature is enabled in the hwsettings object.

A minimal config (no receivers, flexi port disabled, main port
disabled) leaves 2448 bytes of free heap.  That's our new baseline.

Approximate RAM (heap) costs of enabling various features:
 + 632 Serial Telemetry (includes 400 bytes of Rx/Tx buffers)
 + 108 PWM Rcvr
 + 152 PPM Rcvr
 + 112 Spektrum Rcvr
 + 24  S.Bus (Should be closer to 68 since driver is still using
              static memory)

There are still some drivers that pre-allocate all of their memory
as static data.  It'll take some work to convert those over to
dynamically allocating their instance data.
2011-08-31 22:35:03 -04:00
Stacey Sheldon
2f86e4dd4f Make PWM/PPM and Servo drivers play nicely together
PWM and PPM can now coexist in the same load and be
selected at boot time via the hwsettings UAVObject.

This is basically a complete restructuring of the
way the drivers interact with the TIM peripheral in
the STM32.

As a side effect, the PWM and PPM drivers are now
ready to support multiple instances of each.

This also provides the first step toward being able
to reassign some of the PWM input pins to be servo
output pins.  Still more work required, but this is
a good start.
2011-08-27 21:39:56 -04:00
Stacey Sheldon
b3c43da90a stdperiph: Make TIM related APIs use const pointers
This allows the configuration parameters to be stored in
flash instead of copied to RAM.
2011-08-27 21:39:17 -04:00
James Cotton
dc340596f5 Merge branch 'next' into GCS_ChangesToUI-RuntimeCFG
Conflicts:
	flight/CopterControl/Makefile
	flight/OpenPilot/System/pios_board.c
	flight/OpenPilot/UAVObjects.inc
	flight/PiOS/STM32F10x/pios_spektrum.c
	ground/openpilotgcs/src/plugins/config/config.pro
	ground/openpilotgcs/src/plugins/config/configgadget.qrc
	ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro
	shared/uavobjectdefinition/hwsettings.xml
2011-08-27 15:26:05 -05:00
Corvus Corax
4bd72923e5 Merge branch 'CorvusCorax_unidirectional-GPS-com' into CC_GPS
Conflicts:
	flight/Modules/GPS/GPS.c
	flight/Modules/GPS/GTOP_BIN.c
	flight/Modules/GPS/NMEA.c
	shared/uavobjectdefinition/hwsettings.xml
2011-08-25 15:33:23 +02:00
James Cotton
5f7a9b513a Merge branch 'sambas/dsmx_stuff' of ssh://git.openpilot.org/OpenPilot into next
Conflicts:
	shared/uavobjectdefinition/hwsettings.xml
2011-08-24 11:37:30 -05:00
James Cotton
4e59e697af IMU3000: Sometimes the irq is called before previous I2C transaction. This
isn't good but for now just deal with it.  Need DMA I2C driver.
2011-08-22 02:34:40 -05:00
James Cotton
8c16f614f2 INS: Use the data from the BMP085 and feed into EKF 2011-08-22 02:32:40 -05:00
James Cotton
b1c522def3 Merge remote-tracking branch 'origin/next' into ins 2011-08-21 01:34:40 -05:00
James Cotton
38d9df8fcb HMC5883: Clean up the mag driver 2011-08-21 01:29:55 -05:00
James Cotton
e1afc9a19a Merge branch 'next' into ins
Conflicts:
	flight/Libraries/inc/fifo_buffer.h
	flight/PiOS/STM32F10x/link_STM3210E_INS_sections.ld
	flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj
2011-08-21 00:47:43 -05:00
James Cotton
c82aa64c53 INS: General clean up to deal with new driver formats. Also automatically
monitors the EKF rate.
2011-08-21 00:42:06 -05:00
James Cotton
af69e0a1a8 BMA180 driver; Don't externalize the fifo buffer but handle it in the driver
layer.  General driver cleanup.
2011-08-21 00:40:10 -05:00
James Cotton
8ae53a4f97 PiOS: Cleanup IMU3000 driver a fair bit. 2011-08-21 00:39:20 -05:00
James Cotton
368323fd59 Merge remote-tracking branch 'origin/james/erase_settings' into next 2011-08-20 13:07:01 -05:00
Corvus Corax
dfd301571a HWSettings: Allow late Initialization and Start of Modules as defined in Makefile(available modules) and UAVObject(actually started modules) 2011-08-20 01:24:06 +02:00
James Cotton
d103541970 IMU3000: Make the IRQ trigger the callback based I2C read. Drop the
temperatured data from the FIFO stream.  Add some flags to stop the callbacks
trampling over the configuration.
2011-08-19 14:28:33 -05:00
James Cotton
3465eb2f30 PiOS F2 I2C: Add a callback based transfer. This needs merging into the main
transfer function like SPI but I will leave that for now to avoid creating a
lot of changes in the main code.
2011-08-19 13:38:11 -05:00
James Cotton
7444337418 F2 PiOS I2C: Add a poor man semaphore here in case we start calling I2C
transfers from IRQ.  Also catch the double 0x70084 event which was locking up
the FSM with -Os enabled.  I did this in a cheating way (filtering the event
based on state) but it's the cleanest I can see.  Hopefully a DMA version of
I2C will fix this.
2011-08-19 11:39:50 -05:00
James Cotton
b0e04e5f79 PIOS SPI: Make sure the non-freertos busy flag inits to zero 2011-08-19 10:52:50 -05:00
James Cotton
c7034ef8a6 IMU3000: Fix a constant that made the sampling rate 1kh instead of 8 internaly.
No downsample that (in IMU3000) by 8 to get gyros at 1khz.  Well about 256 Hz
nyquist and shouldn't cause substantial issues for EKF.
2011-08-18 13:01:51 -05:00
James Cotton
bdb9dc0a54 BMA180: Use DMA for getting the accels and use callback to push it onto the
stack.
2011-08-18 12:51:22 -05:00
James Cotton
3b6ffc8afa PiSO SPI: Implement a poor mans semaphore for non-freertos systems. 2011-08-18 12:51:00 -05:00
James Cotton
294e0cbdff IMU3000: Change IMU3000 api right now so it only reads one element from the
fifo but swaps the endian appropriately.
2011-08-18 11:03:56 -05:00
James Cotton
11ac0707da BMA180: Reset BMA180 chip at reconfiguration. 2011-08-17 06:49:56 -05:00
James Cotton
71a1cdff62 PiOS SPI: For F2 need to have the same receive and transmit length when using
CRC.  This wasn't the case on F1.  With CRC the last byte of the buffer passed
to PIOS_SPI_TransferBlock is NOT USED.  This is the case on both F1 and F2.

Also need to DeInit DMA before enabling or it doesn't enable successfully.

Finally added a timeout which sets a fail on the pios spi transfer in the case
that either of the dma channels fails to enable.
2011-08-16 11:29:15 -05:00
James Cotton
bcca705750 Disable beta hardware bmp085 driver until it's updated. Not necessary anyway
since on the INS.
2011-08-16 08:55:02 -05:00
James Cotton
35eef66bfe OP-557: Add a UAVO access method to erase the entire flash chip. Normally not
needed by users because if too much changes I change the FS magic and trigger a
wipe.

Possibly the erase should require a particular "magic" object id value to
execute?  This would make it harder to do manually through UAVOs though.
2011-08-15 10:33:27 -05:00
James Cotton
db9c73db45 Get SPI closer to working. The flags in the pios_config should match the
stream number, not channel number.  Also DeInit DMA section in the init process
which makes debugging and init behavior more reliable.
2011-08-15 04:47:53 -05:00
James Cotton
86b652bbab Merge branch 'next' into camera_stabilization 2011-08-14 18:07:57 -05:00
zedamota
e736b17cc4 Merge remote-tracking branch 'remotes/origin/next' into GCS_ChangesToUI-RuntimeCFG
Conflicts:
	ground/openpilotgcs/src/plugins/config/config_cc_hw_widget.cpp
	ground/openpilotgcs/src/plugins/config/configgadgetwidget.h
	ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp
2011-08-14 15:48:16 +01:00
James Cotton
c5ed82086d Configure the interrupt information before enabling. Still looping in IRQ so
configuration needs work.
2011-08-14 02:00:52 -05:00
James Cotton
80c2d45d93 Fix the BMP085 interrupt handler and get it producing data. Driver needs some
work to abstract away the actual calculation of altitude from pressure and
temperature.
2011-08-13 20:49:07 -05:00
James Cotton
a2b76adc33 Attitude: Do not start attitude estimation until accel data appears. This
fixes the NaN when AttitudeSettings not available.
2011-08-13 18:53:42 -05:00
James Cotton
62f51fc92d Some improvements to the HMC5883 driver. Still getting funny values but I
suspect the chip at this point.
2011-08-13 11:20:32 -05:00
James Cotton
13e5f4123a Reading gyro registers directly working. 2011-08-13 08:33:46 -05:00
James Cotton
f82e5dde33 Fix the EXTI IRQ handlers 2011-08-13 07:13:21 -05:00
James Cotton
e1f7a5003d Fix up SPI DMA streams 2011-08-13 04:54:19 -05:00
James Cotton
77cca9ba30 Move EXTI handlers into other drivers 2011-08-13 01:29:17 -05:00