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

2109 Commits

Author SHA1 Message Date
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
20de046292 Force system to be disarmed when a bad configuration is present 2011-09-04 00:43:33 -05:00
James Cotton
d3de8ff0ef OP-559: Process the arm status when disconnect and allow it to timeout and
disarm
2011-09-03 23:57:51 -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
63f64003e5 INS: Change how the initialization of algorithms is handled to ensure sensor
dat always good
2011-09-02 13:50:36 -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
e0ed82eef0 INS Settings: Use the calibration data on the sensors 2011-09-02 13:28:01 -05:00
James Cotton
1d04715476 INS: Rework how the sensor calibration behaves and clean up the interface a
bit.
2011-09-02 13:24:35 -05:00
Mathieu Rondonneau
ae1dd945b1 Fix win32 sim macro problem
This is to get the macro in pios.win32 in sync with sim posix and
real flight.
2011-09-01 21:50:13 -04:00
James Cotton
3b20df22d1 Updates to config gadget for new INS objects
Make scope gadget check if object exists before using it.  Avoids segfaults
when scoped objects disappear.
2011-09-01 12:21:37 -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
James Cotton
37878ed4e8 Get the OpenPilot compiling again using a previvous pios_board until doing a
proper merge with next
2011-09-01 03:31:23 -05:00
Stacey Sheldon
eea011c53b openpilot: fix compile error on OP 2011-09-01 03:31:23 -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
86ce79af1d openpilot: fix compile error on OP 2011-08-31 21:43:57 -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
Stacey Sheldon
a72c657e21 rcvr activity: Speed up activity acquisition
Activity detection logic can now move through
the active receivers more quickly.
2011-08-27 20:17:56 -04:00
James Cotton
6514fd95c7 Also initialize the ReceiverActivity object in manual control 2011-08-27 16:08:57 -05:00
James Cotton
c5746335c6 Initialize GCSReceiver object if it is being used 2011-08-27 15:57:09 -05: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
Stacey Sheldon
f29b99521e openocd: collapse JTAG rules for STM32F1 and STM32F2 2011-08-27 10:43:02 -04:00
Stacey Sheldon
5a51077493 openocd: add support for RTOS autodetection
This allows things like 'info threads' to work in gdb when
combined with openocd 0.5.0+.
2011-08-27 10:38:50 -04:00
Stacey Sheldon
89d23df8cd openocd: Add default config for stm32f2x
Pulled from origin/james/ins.
2011-08-27 10:37:20 -04:00
Stacey Sheldon
3d22258843 Merge remote branch 'origin/james/openocd' into upgrade-to-openocd-0.5.0 2011-08-27 09:19:46 -04:00
James Cotton
1d77d77832 Merge branch 'stac/use-malloc-failed-hook' into next 2011-08-27 00:24:13 -05:00
James Cotton
274333a9bf Merge branch 'next' into stac/use-malloc-failed-hook 2011-08-27 00:12:45 -05:00
James Cotton
55f64802d1 Also enable malloc error catching on OpenPilot 2011-08-27 00:12:16 -05:00
Corvus Corax
0065842de7 Makefiles: fixed comment line 2011-08-25 16:28:34 +02:00
Corvus Corax
658ae3f809 Modules/System: removed comment line 2011-08-25 16:26:46 +02:00
Corvus Corax
109a58ef30 Modules/GPS: removed comment line 2011-08-25 16:25:19 +02:00
Corvus Corax
8173c7b7c6 Refactor GPS_PURISTIC into GPS_MINIMAL 2011-08-25 15:44:49 +02:00
Corvus Corax
3690586f3a Optional Modules: Forced re-generation of mod init.h when makefile has changed 2011-08-25 15:42:11 +02:00
Corvus Corax
1d797bf004 Fixed error introduced by merge 2011-08-25 15:40:45 +02:00
Corvus Corax
c63a10d05e CopterControl: Fix GPS buffer sizes 2011-08-25 15:37:38 +02: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
Corvus Corax
54ecf233f3 Modules/PS: typo fix 2011-08-25 15:13:50 +02:00
Corvus Corax
7e396efbbf Modules/GPS: Assert buffer creation 2011-08-25 15:11:29 +02:00
Corvus Corax
dfdea16065 Modules/GPS: Make GPS COM unidirectional (rx only) and use smaller, runtime allocated heap buffers 2011-08-25 14:46:30 +02:00
Corvus Corax
8b7fea0d19 Merge branch 'OP-567 GPS com layer fix' into next 2011-08-25 13:35:49 +02:00
Corvus Corax
697ac6067e OP-567 Modules/GPS: Block in PIOS_COM, not in TaskDelay - or we will miss updates! 2011-08-25 13:33:41 +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
1477ea6e94 Make mag updated flag always true when it's updated. Responsibility of INS
algorithm whether to use data.
2011-08-22 03:05:02 -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
Stacey Sheldon
edc0caf521 heap: set memory critical alarm on malloc failures
Activate the FreeRTOS malloc failed hook and use it
to set the memory critical alarm.
2011-08-21 23:14:32 -04:00
Corvus Corax
838149b53f GPS: homelocation init is optional, satellites must be initialized 2011-08-21 18:20:33 +02:00
Corvus Corax
0ce337b42d UAVTalk: fix off by one error preventing the largest UAvObject (gpssatellites) from being sent. 2011-08-21 18:15:10 +02:00
James Cotton
e4e952f270 Manual control settings needs to be initialized in OpenPilot board file for
spektrum to work
2011-08-21 02:21:09 -05:00
James Cotton
04072accd4 Manual control settings needs to be initialized in OpenPilot board file for
spektrum to work
2011-08-21 02:20:10 -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
f756e9cbc8 INS: Swap the mag axis 2011-08-21 01:29:24 -05:00
James Cotton
a642f3672c Report running time per loop in us 2011-08-21 00:54:31 -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
1ad65e0718 Fixed include in sysstemmod. pios_config.h should not be included explicitly. 2011-08-20 15:04:00 +02:00
Corvus Corax
9f03ba178b OpenPilot: Initialize optional modules based on UAVObject 2011-08-20 15:03:31 +02:00
Corvus Corax
4f1f20e801 OpenPilot: Bugfix: For some reason Debugging information didn't work. Symbols are created now 2011-08-20 14:37:53 +02:00
Corvus Corax
d21f6705aa Disabled double definition of pmlib compilation in openPilot/Makefile - target gencode 2011-08-20 13:11:15 +02:00
Corvus Corax
5ea35bb28c Make Diagnostic UAVObjects optional in OP and Sim_Posix (but enabled by default) 2011-08-20 13:06:58 +02:00
Corvus Corax
7395a369a9 Optional Modules: Ported optional module concept to OpenPilot and Sim_Posix 2011-08-20 13:02:44 +02:00
Corvus Corax
53d0732fc6 Enable GPS module as "optional module" in CooterControl 2011-08-20 01:25:49 +02: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
952b4e1809 Have to speed up the comms rate for gyro to handle the oversampling we are
using.
2011-08-19 14:35:13 -05:00
James Cotton
cefc2b8c2e Clean up main INS function a bit. 2011-08-19 14:34:56 -05:00
Corvus Corax
b75890fcd4 Merge branch 'next' into CC_GPS 2011-08-19 21:34:38 +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
Corvus Corax
85aef9c7b4 OpenPilot: bugfix: Add GPS tx buffer by default (needed until GPS has been refactored to not send or only send when configured so) 2011-08-19 20:22:05 +02:00
Corvus Corax
2062ec0aeb AHRS_COM: Initialize transpherred objects before using them 2011-08-19 19:52:27 +02:00
Corvus Corax
5e4941f7cb PiOS.posix: make PiOS.posix bail in case of a Panic with an error message 2011-08-19 18:41:59 +02: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
Corvus Corax
9bba1f7ae9 Posix: fix object initialization where necessary 2011-08-19 18:36:30 +02: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
03a8bd7674 Statically initialize object handles to null to make sure the uavobjectmanager
can catch it and return -1.  Do NOT panic when they are null as this is
something that should be caugth at run time in some cases.

Ideally as a compromise in a task start it could have a set of
PIOS_Assert(ObjectNameHandle()) to make sure the minimal set of objects it
needs are there.
2011-08-19 10:12:39 -05:00
James Cotton
ab7e57ad2b Initialize objects for guidance in the correct place. Init some objects in
pios_board_posix since AHRSComms not around.
2011-08-19 09:52:05 -05:00
James Cotton
ced29e221e Revert "Debugging: Add PIOS_DEBUG_Panic() call wen an UAVObject handle is requested but object is uninitialized, make PiOS.posix bail in case of a Panic with an error message"
We do not want to panic in this case as we want the ability to detect if
objects exist at run time

This reverts commit 78e42470d4.
2011-08-19 09:45:10 -05:00
James Cotton
482bec497b Revert "Fixed modules that didn't initialize used UAVObjects correctly"
Modules should initialize their settings and the objects they source.  Not just
everything.

This reverts commit 9ad85e9b7b.
2011-08-19 09:44:38 -05:00
Corvus Corax
69f10cd6d0 PiOS.posix: bugfix in COM_UDP 2011-08-19 13:54:16 +02:00
Corvus Corax
adfb6eccc2 fixed usage of GPS buffer in sim_posix 2011-08-19 13:20:40 +02:00
Corvus Corax
9ad85e9b7b Fixed modules that didn't initialize used UAVObjects correctly 2011-08-19 13:20:15 +02:00
Corvus Corax
78e42470d4 Debugging: Add PIOS_DEBUG_Panic() call wen an UAVObject handle is requested but object is uninitialized, make PiOS.posix bail in case of a Panic with an error message 2011-08-19 12:56:26 +02:00
Corvus Corax
01a844e0da Fixed redefinition of configCHECK_FOR_STACK_OVERFLOW in OpenPilot/System/inc/FreeRTOSConfig.h 2011-08-19 12:11:05 +02:00
Corvus Corax
f86e53bf91 Merge branch 'OP-536_CorvusCorax_ObjectOrientedFirmwareUAVTalk' into next
Conflicts:
	flight/Modules/Telemetry/telemetry.c
2011-08-19 12:10:40 +02:00
James Cotton
f85ae84ec3 Merge branch 'camera_stabilization' into next
Conflicts:
	flight/OpenPilot/System/pios_board_posix.c
2011-08-19 01:48:24 -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
29026db5d5 Refactor the INS code out a bit but still a mess. 2011-08-17 06:15:14 -05:00
Corvus Corax
6fe495c088 Merge remote branch 'origin/next' into OP-536_CorvusCorax_ObjectOrientedFirmwareUAVTalk
Conflicts:
	flight/Modules/Telemetry/telemetry.c
2011-08-17 08:30:32 +02:00
James Cotton
c0ead372e1 INS: Change LED flashing to indicate connected. 2011-08-16 11:30:38 -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
Corvus Corax
b75653a226 PiOS.posix: small corrections and bugfixes to make pios_com_udp work correctly. Telemetry works now. 2011-08-14 14:21:54 +02:00
Corvus Corax
5b240a2675 PiOS.posix: port pios_udp and pios_com to "next" 2011-08-14 14:21:54 +02:00
Corvus Corax
8a47ade16b flight/Libraries/fifo_buffer: Use platform independent <stdint.h> instead of "stm32xxx.h" to get definition of intX_t types 2011-08-14 14:21:54 +02: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
02d5e27e93 Got SPI IRQ from mainboard firing 2011-08-14 01:44:44 -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
f766ba47aa Increase the size of the eventdispatcher task and lower the maximum queue size. 2011-08-13 19:21:58 -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
ca413415a0 Code to make openocd 0.5.0 work. I'll keep this branch rebased on next. 2011-08-13 18:03:49 -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
e7990f5d43 Got a hint of some data with this code :) 2011-08-13 07:13:43 -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
8929e2f359 Update some of the DMA settings 2011-08-13 02:46:13 -05:00
James Cotton
77cca9ba30 Move EXTI handlers into other drivers 2011-08-13 01:29:17 -05:00
James Cotton
6d018c046e Get BMA180 working. Need to move exti stuff into it until pios_exti
implemented properly
2011-08-13 01:10:33 -05:00
James Cotton
5619e33292 Bootloader now jumps to functioning code for INS. Consistent with AHRS code. 2011-08-12 22:52:47 -05:00
James Cotton
6529b8360f Trying to get linker system working for INS 2011-08-12 21:28:02 -05:00
James Cotton
e993fae463 Fix bootloader 2011-08-12 04:32:02 -05:00
James Cotton
e57f774bb8 F2 INS compiles now 2011-08-12 04:30:14 -05:00
James Cotton
1d1f351233 Pios Delay: Add function for measuring time difference between two cycle counts 2011-08-12 04:29:53 -05:00
James Cotton
b3b4fcd007 Fix linker script and get rid of dead code 2011-08-12 03:44:55 -05:00
James Cotton
f247112090 PiOS F2: Move IMU3000 to device dependent :(. Now they all are. Need to
abstract as much as possible out since init is almost identicalc and protocol
COULD be device independent.
2011-08-12 03:38:45 -05:00
James Cotton
8c1dd7b929 Make BMP085 driver device dependent and update to new driver style. 2011-08-12 03:38:45 -05:00
James Cotton
9d76efa2aa Move BMA180 driver to common architecture style. 2011-08-12 03:38:45 -05:00
James Cotton
1dc08e5cf7 F2 PiOS: Small fix to hmc5883 driver 2011-08-12 03:38:44 -05:00
James Cotton
ba413d5dad F2 StdPeriph: Make the StdPeriph take in config parameters as const.
Unfortunately they don't do this upstream :(
2011-08-12 03:38:40 -05:00
James Cotton
ef0cdae622 PiOS F2: Remove clock initialization from usart since it is in pios_sys.c 2011-08-12 02:28:02 -05:00
James Cotton
6310f46705 HMC5883: Update driver for F2. Move to STM32F2xx directory since it is device
dependent.  Abstract configuration out of board.h file into a standard board.c
structure.
2011-08-12 02:26:51 -05:00
James Cotton
784c7b2646 Merge branch 'next' into ins 2011-08-11 21:52:10 -05:00
James Cotton
ec4e23aff9 Camera Stabilization: Bound outputs to [-1,1] although this should be redundant
with checks in actuator.
2011-08-11 14:34:38 -05:00
James Cotton
9c7799dfe6 UAVObject Init: Get rid of deprecated linker init code 2011-08-10 22:48:42 -05:00
James Cotton
c8313d7b3e Add the camera stabilization files to the Pro build. Not functional though. 2011-08-10 22:31:38 -05:00
James Cotton
bbe3c1533a Merge branch 'next' into camera_stabilization 2011-08-10 21:57:45 -05:00
James Cotton
ab288e95ab Stabilization: Small patch so that by default the integral is zeroed while
throttle is low (good for quads) but can be disabled (good for planes and also
testing helis).
2011-08-10 03:51:46 -05:00
James Cotton
f23eaa8273 Make the Actuator pull from the CameraDesired fields 2011-08-09 21:47:42 -05:00
James Cotton
f11aa80444 CameraStabilization: Make the CameraStabilization module put the desired
position into another object (will help with configuration).
2011-08-09 20:45:38 -05:00
James Cotton
c4e272b9ad Merge branch 'next' into camera_stabilization 2011-08-09 20:16:45 -05:00
James Cotton
0c2c48bee6 F2 PiOS: More changes for spi to work (not completed) 2011-08-09 12:59:10 -05:00
James Cotton
a097ff784b F2 PiOS: Getting the I2C driver working again (copying changes from Zippe,
thanks again man!)
2011-08-09 12:58:46 -05:00
James Cotton
8be9ac9cc9 PiOS: Move driver out of common directory since it makes calls to configure the
EXTI system.
2011-08-09 12:51:26 -05:00
James Cotton
d78450eae8 Move some of the F2 defines into the makefile to make them global. Fixes some
issues with grabbing the wrong stm32 configuration file.
2011-08-09 01:19:05 -05:00
James Cotton
27213c7fd9 F2 PiOS USART: Update to the new driver format for coms 2011-08-09 01:18:25 -05:00
James Cotton
ec2121bca8 Attitude: Keep first element of quaternion positive 2011-08-08 21:16:04 -05:00
James Cotton
d23e13716b dos2unix: fifo_buffer 2011-08-08 08:37:14 -05:00
James Cotton
479ba7c21f OP-378 INS: Continue getting F2 INS to compile 2011-08-08 08:36:40 -05:00
sambas
9f35b6939c Bind IO fix 2011-08-07 10:10:52 +03:00
James Cotton
558bdddeaf INS: Almost got Bootloader compiling *sigh* 2011-08-06 21:27:29 -05:00
James Cotton
a0d77faf4b PiOS: Move pios_iap out of common. It is STM32F1x specific. Created an
STM32F2xx stub version.  This needs cleaning up - there is some common code,
most of which can probably move to the bl_helper function.
2011-08-06 20:24:07 -05:00
James Cotton
f23ec059fe dos2unix 2011-08-06 19:53:46 -05:00
James Cotton
1ccb9a1947 Some changes to BL to get running on F2. Also disables it for now (flash
interface is different).
2011-08-06 19:46:41 -05:00
James Cotton
d1c9ac0705 PiOS F2: Commit the F2 port of PiOS from Zippe. Thanks for doing all the hard
work man :-D
2011-08-06 19:36:56 -05:00
James Cotton
7720f9ff09 Add F2 support for the new OpenOCD for newer targets. Requires compiling
OpenOCD from repo.
2011-08-06 18:21:21 -05:00
James Cotton
0bba13a0e9 Merge branch 'next' into ins
Conflicts:
	flight/INS/Makefile
	flight/INS/pios_board.c
	flight/Modules/Altitude/altitude.c
	flight/PiOS/Boards/STM3210E_INS.h
	flight/PiOS/STM32F10x/link_STM3210E_INS_BL_sections.ld
	flight/PiOS/STM32F10x/link_STM3210E_INS_HD_BL.ld
	flight/PiOS/STM32F10x/link_STM3210E_INS_HD_NB.ld
	flight/PiOS/STM32F10x/link_STM3210E_INS_memory.ld
	flight/PiOS/STM32F10x/link_STM3210E_INS_sections.ld
	flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj
2011-08-06 17:25:56 -05:00
sambas
1e67b5e3b5 DSMx_binder, hw setting 0 disabled, 1-10 bind pulses. Manual disable after successful bind. Only for flexiport. 2011-08-06 22:16:47 +03:00
James Cotton
fd86c25b49 Make sure OP compiles with new object init structure. 2011-08-04 15:01:54 -05:00
sambas
a454cf844b DX8 support, BIND3 only 2011-08-04 19:20:05 +03:00
James Cotton
a592e7d398 ManualControlSettings must be also initialized in pios_board.c 2011-08-04 07:47:50 -05:00
James Cotton
bac7836318 Revert "uavobj: shrink metadata struct to save RAM". I was premature merging
this to next as it changes the on-the-wire representation and thus doesn't
allow GCS to set the metadata.

This reverts commit a641cd7956.
2011-08-04 07:17:36 -05:00
Stacey Sheldon
a641cd7956 uavobj: shrink metadata struct to save RAM
This update saves 448 bytes of RAM with the current
crop of UAVObjects.  It reduces a 19 byte struct to
8 bytes.

Note: This also introduces a limit of 65.534s for the
update periods.
2011-08-03 00:00:50 -04:00
Stacey Sheldon
90b2625deb rcvractivity: Add tracking of Rx channel activity 2011-08-02 01:27:37 -04:00
Stacey Sheldon
06cdeb7b61 rcvr: support multiple simultaneous receivers
Now also supports multiple instances of the Spektrum driver.
These are configured as Spektrum1 and Spektrum2.
2011-08-02 01:22:04 -04:00
Stacey Sheldon
829b8b83f6 rcvr: Add GCS receiver driver for rcvr via telemetry
This allows the GCS to emulate a receiver device via the
telemetry link.

Select "GCS" as your input type in the manualcontrol config
screen and calibrate it as normal.

Note: The expected values for the channels are in microseconds
      just like a PWM or PPM input device.  The channel values
      are validated against minimum/maximum pulse lengths just
      like normal receivers.
2011-08-02 01:22:04 -04:00
Stacey Sheldon
2f79e4fa76 Merge remote branch 'origin/stac/refactor-usart-com' into next 2011-07-31 09:41:06 -04:00
James Cotton
035b4103c4 Need to initialize the HwSettings before using them. 2011-07-31 09:42:15 +09:00
James Cotton
c5bf0ac657 Merge branch 'stac/refactor-usart-com' into camera_stabilization 2011-07-31 09:13:37 +09:00
James Cotton
568ea13471 Merge branch 'next' into stac/refactor-usart-com 2011-07-31 09:13:27 +09:00
Stacey Sheldon
6b1ec9a54e bl: fix LED pwm computation with new stopwatch 2011-07-30 16:59:57 -04:00
James Cotton
3df730c64f Merge branch 'stac/refactor-usart-com' into camera_stabilization 2011-07-30 13:38:43 +09:00
James Cotton
387a22398e Make it possible to optionally enable the CameraStab module 2011-07-30 12:08:47 +09:00
Stacey Sheldon
8c0b60099f rcvr: don't init spektrum and sbus rcvrs twice 2011-07-29 22:59:50 -04:00
James Cotton
cb9c6dfb5e Change the sequencing of telemetry starting to make sure all the objects that
were registered in an initialize and then enumerated by telemetry
2011-07-30 11:31:45 +09:00
James Cotton
132e19d613 Change the makefiles - always compile the optional objects but the flag
indicates whether they are registered
2011-07-30 11:29:29 +09:00
James Cotton
ae67c51632 Register some missing objects with their modules 2011-07-30 11:28:21 +09:00
James Cotton
2e5a36a4db Merge branch 'stac/refactor-usart-com' into camera_stabilization 2011-07-30 10:55:16 +09:00
James Cotton
b2d2114ede Disable auto registration of all objects. Later the uavobj_init linker scripts
should be deleted to not carry around old code.
2011-07-30 10:24:46 +09:00
James Cotton
23e9b56839 Dos2unix flight/CopterControl/System/coptercontrol.c 2011-07-30 10:06:35 +09:00
James Cotton
96c2d24253 Merge branch 'next' into camera_stabilization
Conflicts:
	flight/CopterControl/Makefile
	flight/CopterControl/System/coptercontrol.c
	flight/Modules/Actuator/actuator.c
	flight/Modules/GPS/GPS.c
	flight/Modules/ManualControl/manualcontrol.c
	flight/Modules/Stabilization/stabilization.c
	flight/Modules/System/systemmod.c
	shared/uavobjectdefinition/manualcontrolsettings.xml
	shared/uavobjectdefinition/stabilizationdesired.xml
2011-07-30 10:06:10 +09:00
James Cotton
333ab645ec Dos2unix manualcontrol.c to facilitate merging 2011-07-30 09:55:02 +09:00
Stacey Sheldon
c2fb0d8b43 com: allow run-time allocation of buffers 2011-07-29 15:33:14 -04:00
Stacey Sheldon
8b0415d905 bl: alternate stopwatch for small bootloaders
The small bootloaders (CC and PipX) are out of flash space
so their stopwatch implementation has been swapped out for
one based on the DELAY clock that takes about 500 bytes less
of code space.

Identical functionality is preserved.
2011-07-29 15:33:01 -04:00
Stacey Sheldon
13f9b0e09d Merge remote branch 'origin/OP-498_jwhitlock_add-ppm-to-cc' into next 2011-07-28 22:15:01 -04:00
Stacey Sheldon
a3888ecd48 usart: ensure callbacks are bound in the correct order 2011-07-27 23:21:39 -04:00
Stacey Sheldon
5f8760a55c com: Move buffering out of USART/HID layer and into COM layer
This allows the spektrum and sbus receiver drivers to bind
directly to the usart layer using a properly exported API
rather than overriding the interrupt handler.

Bytes are now pushed directly from the usart layer into the
com layer without any buffering.  The com layer performs all
of the buffering.

A further benefit from this approach is that we can put all
blocking/non-blocking behaviour into the COM layer and not
in the underlying drivers.

Misc related changes:
 - Remove obsolete .handler field from irq configs
 - Adapt all users of PIOS_COM_* functions to new API
 - Fixup callers of PIOS_USB_HID_Init()
2011-07-27 19:45:38 -04:00
James
60136f0464 Add support for PPM transmitters up to 12 channels. Small array indexing issue in PIOS_PPM_Get. 2011-07-27 00:33:32 +01:00
Stacey Sheldon
b70d5ae148 Merge remote branch 'origin/msmith-delay-timer' into next 2011-07-26 09:04:06 -04:00
Mike Smith
df5569c758 Fix a stupid off-by-one that prevented this code from working.
Update to use 32-bit microsecond values.

Remove PIOS_DELAY_DiffuS per consensus (caller can do it easily themselves).

Update the core delay logic per Stac's suggestion to a version that is
resistant to various overflows.
2011-07-25 20:55:48 -07:00
James Cotton
056db1cdda Merge branch 'bugfix-flight' into next 2011-07-24 07:09:42 +09:00
James Whitlock
6a6ec41809 Build fixes 2011-07-23 22:10:17 +01:00
Mike Smith
480f07a264 Typo fix. 2011-07-23 13:58:56 -07:00
Mike Smith
a89092e275 Update to use the delay API to get entropy rather than reading the timer directly. 2011-07-23 13:53:42 -07:00
Mike Smith
0df3bb2c37 Restore functions lost due to inept merging, and refactor to take advantage of them.
Address the following review feedback items:
 - use stdint types
 - avoid the use of magic numbers (define CYCCNTENA)
 - remove expository comment about sneakiness and corresponding code, replace with something simpler based on the API
 - remove commented/#if 0 code
2011-07-23 13:53:16 -07:00
Mike Smith
dae4b44100 Remove commented code that refers to the now-obsolete PIOS_DELAY_TIMER 2011-07-23 13:49:36 -07:00
Mike Smith
c3267a3b53 Remove PIOS_DELAY_TIMER definitions from configuration files, as there is no longer a delay timer to configure. 2011-07-23 13:48:40 -07:00
James Whitlock
11c568ec50 Add in a PPM input frame size tracker.
Move update of capture values to start of new frame.
Fix an issue with setting channels to invalid.
2011-07-23 01:38:51 +01:00
James Whitlock
7a58b4cceb A quick clean of ppm code to remove white space and duplicated comments 2011-07-23 01:32:57 +01:00
James Cotton
abee34e551 Getting posix simulation compatible with init and receiver changes 2011-07-22 07:50:06 -05:00
Mike Smith
6bc5339015 Change the pios_delay implementation to use the CPU cycle counter rather than burning a timer. 2011-07-21 23:21:26 -07:00
Stacey Sheldon
a7cce25252 usart: fix lower usarts clobbering higher ones
The break statements are clearly missing from this
switch statement.

This would lead to problems when using more than one
USART on CC.
2011-07-22 00:30:49 -04:00
James Whitlock
7ce5daef8f Clean up of PPM code in master. 2011-07-19 20:46:24 -04:00
Stacey Sheldon
8dbace5ee2 Merge branch 'rcvr_mem_reduction'
Conflicts:
	flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld
2011-07-17 17:14:40 -04:00
James Cotton
2da65014c7 Fix typo in servo doxygen header 2011-07-16 03:25:33 -05:00
James Cotton
14370b5ac4 Reenable serial telemetry on OP main board 2011-07-15 19:10:00 -05:00
James Cotton
b83f731c03 Remove all references to vTaskDelay in the flash code as it can run before the
FreeRTOS scheduler

Also increaes init stack size from 0x80 to 0x100
2011-07-15 18:16:16 -05:00
James Cotton
01b62cf98f Fix a typo 2011-07-15 15:30:10 -05:00
James Cotton
72e80d407c Change the magic value in the object file table. Forces all objects to be
erased since all ids are changing - this frees up memory.
2011-07-15 11:11:29 -05:00
James Cotton
d41260d54c Make the stabilization settings query correctly now by increasing the TX buffer
on the CC side to 256 bytes instead of 128 to support large objects (max object
size is 256 bytes)
2011-07-15 10:40:21 -05:00
James Cotton
3d35e249c8 Merge branch 'master' into bugfix-flight 2011-07-15 10:33:54 -05:00
Stacey Sheldon
6580462916 rcvr: specify drivers for groups of channels
Each channel was previously tracking a separate driver.
Now, channels are grouped within a channel group to save
RAM used for tracking and to better reflect how channels
are actually mapped.
2011-07-14 23:22:42 -04:00
Stacey Sheldon
442d56c1c5 linker: Add section to record unused RAM
Note that this section will be absorbed by the heap at runtime.
2011-07-14 23:22:42 -04:00
zedamota
b005346fab Windows eclipse workspace. Sorry for the mess, all is good know...I think 2011-07-14 18:16:38 +01:00
zedamota
e559582bb8 Eclipse workspace update 2011-07-14 17:09:58 +01:00
zedamota
c22bc2a675 Merge branch 'bugfix-flight' of ssh://git.openpilot.org/OpenPilot into bugfix-flight 2011-07-14 14:07:28 +01:00
zedamota
16e28900d0 Created new eclipse workspace for windows 2011-07-14 13:34:34 +01:00
sambas
18a5465246 Bugfix: CC flexiport spektrum config
Working spektrum bind routine, depending your TX try BIND_PULSES 3,5,7,9 (5 works with DX7)
Boot process takes too long on MB so bind command misses the window (20-140ms).
2011-07-14 14:43:26 +03:00
Mathieu Rondonneau
612a439199 OP-423: simplify the MODULE_INITCALL macro and remove the ordering loops 2011-07-12 20:44:32 -07:00
James Cotton
0aec3b592c Changing stabilization so that the PIDs are zeroed when not armed, but NOT when
the throttle is < 0.  This will make things like axis-lock work while armed
without throttle.  HOWEVER don't hold your stick in the arming position for a
long time or you can wind up the integrals now.
2011-07-12 14:35:32 -05:00
James Cotton
2c7cfe435f Somehow this task runs quite a few times at the beginning so dT was going to
zero and making the attitude get NaN.  Wrote recovery code for that condition
(should never occur) and also force minimum dT to 1 ms (also shouldn't occur)
2011-07-12 14:18:19 -05:00
James Cotton
53ca934b2b Merge branch 'heli_stabilization'
Conflicts:
	flight/CopterControl/System/inc/pios_config.h
	flight/Modules/Attitude/attitude.c
	flight/Modules/ManualControl/manualcontrol.c
	flight/Modules/Stabilization/stabilization.c
2011-07-12 13:28:20 -05:00
James Cotton
9e94f9fee9 Fix typo from SISE to SIZE 2011-07-12 12:48:06 -05:00
James Cotton
2fe7ee40b1 Merge branch 'OP-423_Mathieu_Change_Init_To_Reduce_Memory_Footprint' 2011-07-12 12:44:59 -05:00
James Cotton
c33d3057cc Dos2unix evendispatcher file 2011-07-12 12:36:20 -05:00
James Cotton
15a2b85729 For OpenPilot use the minimal stack size (512 words) for eventdispatcher as
this is necessary for object saving.  Creating a new define to override this
for CopterControl down to 96.
2011-07-12 12:34:40 -05:00
James Cotton
557771d3ef Change to OP MB code to make it work with input changes. Previously tried to
register every possible input channel.  Slipped through review because
"obviously correct" change fixed previous bug masking this.  Woohoo testing :)
2011-07-12 11:41:21 -05:00
James Cotton
59798701a2 Merge branch 'master' into bugfix-flight
Conflicts:
	flight/CopterControl/System/inc/pios_config.h
2011-07-12 11:40:47 -05:00
James Cotton
3b3b76aa46 Revert "Drop 8 bytes per PID of unecessary information. Also trying to compute"
This reverts commit 9c1e523260.
2011-07-12 11:37:36 -05:00
Mathieu Rondonneau
d38f6167e3 OP-423:
Also reduce heap has it does not fit in SRAM anymore (not with current compiler).
(that's ok since if there is more space available, it will be reclaimed).

Merge branch 'master' into OP-423_Mathieu_Change_Init_To_Reduce_Memory_Footprint

Conflicts:
	flight/CopterControl/System/inc/pios_config.h
	flight/Modules/ManualControl/manualcontrol.c
2011-07-08 06:29:34 -07:00
Stacey Sheldon
b86ef4de82 bootcfg: fix incorrect bounds checking on rcvr registration
This was preventing any receivers from registering their
channels.
2011-07-07 23:59:12 -04:00
Stacey Sheldon
2e8d3a9be3 clean up cut/paste cruft 2011-07-07 23:02:09 -04:00
Stacey Sheldon
1f004ee896 ppm: port PPM driver onto new CC driver layers
This is a port of a work-in-progress by Sambas onto
the new driver infrastructure needed for boot-time
configuration.

PPM and PWM still don't coexist in a build but this
is closer.
2011-07-07 22:27:57 -04:00
Stacey Sheldon
226f095a2e bootcfg: remove baudrate #defines for USARTs
The initial baud rates of each interface are now forced in the
board init code.

Any modules using USARTs should have fields added to
their settings object to allow the user to change the
baud rate from the default by using the COM layer APIs.

Developers requiring custom baud rates before the settings
objects are in place should locally edit the cfg structs
to specify the desired baud rates.
2011-07-06 23:03:54 -04:00
Stacey Sheldon
a8787ee015 bootcfg: Add support for selecting S.Bus receivers in inputtype 2011-07-06 22:38:23 -04:00
Stacey Sheldon
bf39ab7a22 remove left-over comment about compile time configs
No functional changes.
2011-07-06 22:36:15 -04:00
Stacey Sheldon
e82539c654 bootcfg: additional validation during board init 2011-07-06 22:34:59 -04:00
Mathieu Rondonneau
36f28f8037 OP-423: Fixing heap2 (puting back bytes from the post heap stack (used during init) back into the free list).
Tested this heap2 at runtime with CC and new compiler since old one (current) triggers strict alliasing error.
That's ok since strict aliasing is disabled on OP, and CC only use heap1.
2011-07-05 21:45:39 -07:00
James Cotton
2d995dc2f7 OP-539: Don't call the gyro setting callback during init because it clears the
gyro bias estimation.
2011-07-05 22:27:03 -05:00
Mathieu Rondonneau
9b9b5a1367 OP-423: remove ';' at the end of macro 2011-07-05 19:44:54 -07:00
Stacey Sheldon
dbf7574946 bootcfg: use UAVobj to control boot-time HW config
This should mark an end to the compile-time selection of HW
configurations.

Minor changes in board initialization for all platforms:
 - Most config structs are marked static to prevent badly written
   drivers from directly referring to config data.
 - Adapt to changes in .irq fields in config data.
 - Adapt to changes in USART IRQ handling.

Major changes in board initialization for CC:
 - Use HwSettings UAVObj to decide which drivers to attach to
   the "main" port and the flexi port, and select the appropriate
   device configuration data.
 - HwSettings allows choosing between Disabled, Telemetry, SBUS,
   Spektrum,GPS, and I2C for each of the two ports.
 - Use ManualControlSettings.InputMode to init/configure the
   appropriate receiver module, and register its available rx channels
   with the PIOS_RCVR layer.  Can choose between PWM, Spektrum and PPM
   at board init time.  PPM driver is broken, and SBUS will work once
   it is added to this UAVObj as an option.
 - CC build now includes code for SBUS, Spektrum and PWM receivers in
   every firmware image.

PIOS_USART driver:
 - Now handles its own low-level IRQs internally
 - If NULL upper-level IRQ handler is bound in at board init time
   then rx/tx is satisfied by internal PIOS_USART buffered IO routines
   which are (typically) attached to the COM layer.
 - If an alternate upper-level IRQ handler is bound in at board init
   then that handler is called and expected to clear down the USART
   IRQ sources.  This is used by Spektrum and SBUS drivers.

PIOS_SBUS and PIOS_SPEKTRUM drivers:
 - Improved data/API hiding
 - No longer assume they know where their config data is stored which
   allows for boot-time alternate configurations for the driver.
 - Now registers an upper-level IRQ handlerwith the USART layer to
   decouple the driver from which USART it is actually attached to.
2011-07-05 22:03:25 -04:00
Stacey Sheldon
6415fc84a5 rtc: allow registration of callbacks on RTC tick
This separates the RTC device and interrupt handling
from the devices that rely on the tick notifications.

Drivers can now register tick notification functions
that will be called on each RTC tick event.
2011-07-05 22:03:25 -04:00
Stacey Sheldon
740b5f1584 rcvr: convert PWM, PPM, SBUS and Spektrum to use PIOS_RCVR
All receivers now fall under the same driver API provided
by pios_rcvr.c.

This is part of a larger sequence of commits that will
switch the receiver selection over to boot time dynamic
configuration via UAVObjects.
2011-07-05 22:03:25 -04:00
Stacey Sheldon
e77795dc28 rcvr: add generic driver API for receivers
Will be used to collapse PWM, PPM, Spektrum and SBUS so we
can choose between them at boot time instead of at compile time.
2011-07-05 22:02:47 -04:00
Stacey Sheldon
0c4facac46 heap: reduce stack size on IDLE and Event tasks
The FreeRTOS IDLE task was using 512 bytes of stack.
The UAVObject Event task was also using 512 bytes of stack.

Both have been reduced, recovering 400+ bytes of heap.
2011-07-05 20:13:00 -04:00
James Cotton
010f0255a4 OP-543: When the magic header on file system is bad at init, read multiple
times.  It's not written as cleanly as I'd like but works for wiping when magic
value changes.  Testing will reveal if this stops the lost settings.
2011-07-04 21:44:41 -05:00