1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-12 20:08:48 +01:00
Commit Graph

205 Commits

Author SHA1 Message Date
pip
d4c24de556 Updated to use the new fifo_init function
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2172 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-11-28 11:00:20 +00:00
peabody124
e3dd542609 OP-203 PIOS_USART: Make USART Rx code use fifo_buffer
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2141 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-11-23 17:13:44 +00:00
sambas
f94dc41712 OP-73 Flight/PiOS: runtime RC input change, initial files just for review, not integrated to build yet
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2106 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-11-11 19:09:39 +00:00
kokomojoe
20c6e2292a OP-185 Flight helper functions for the firmware IAP object. Allows setting/clearing of back-up registers
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1890 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-10-06 02:02:37 +00:00
les
498f3d0fa6 PIOS SPI: Added a function to detect if the channel is busy
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1829 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-10-01 16:52:20 +00:00
peabody124
3c021c09d9 Flight/PiOS: Whitespace changes
find ./flight/PiOS/inc/ \! \( -name '*~' -a -prune \) -type f    | xargs -I{}
bash -c 'echo {}; dos2unix {}; gnuindent -npro -kr -i8 -ts8 -sob -ss -ncs -cp1
-il0 -hnl -l150 {};'

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1777 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-27 07:28:45 +00:00
peabody124
77b68e5169 Flight/Guidance: Initial template for guidance module
Flight: Create PositionDesired (the active waypoint) UAVObject and make the FlightSituationActual no update since it not used.
Flight: New velocity desired object that passes information between the look computing the desired velocity and the PID loop to get it (updated at different rates)
UAVObjects/PositionActual: Remove unused GPS fields
UAVObjects/PositionActual VelocityActual: Split the velocity into a separate object.  ALso make sure all the information telemetered around is in cm to avoid using floats.
UAVObject/GuidanceSettings: New guidance settings object for the guidance module
Flight/Posix: Add the new objects to the Posix sim
Flight/Guidance: Computes a desired velocity based on position error than runs a PID loop to control roll and pitch to achieve that velocity.  All distances are in cm, and updated the PositionActual fields to reflect this and use int32.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1760 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-26 03:06:27 +00:00
peabody124
a01783b2a8 OP-140 AHRS: Explicilty deal with if it is initialized or not, use that to
determine retransmitting calibration, home location and such.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1755 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-25 21:05:38 +00:00
peabody124
9b28f2d72c OP-167 OP-157 AHRS/Calibration: Added mag scale and really cleaned up calibration.
Calibration should take less time now too (using second moments to estimate
variance in one pass).  Now need to change to multiple messages to get the
calibration in to keep the request message size minimal.  Also currently
running sensor calibrate doesn't store the gyro bias so if you want to use this
you'll have to tweak it manually.  I'll fix that step tomorrow.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1741 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-25 09:20:38 +00:00
zedamota
c9752a6a3a OP-21/Flight Bootloader - some changes for the bootloader to work
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1682 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-18 23:11:42 +00:00
peabody124
885c966e53 AHRS: Added a tracker for number of ADC updates the EKF misses. Also updated the Telemetry autogenerated files to accomodate the 11500 baud rate.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1652 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-16 02:59:00 +00:00
peabody124
19e80da928 AHRS: Update UAVObject with information about AHRS rate
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1650 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-16 01:54:21 +00:00
zedamota
c72a5b1cfe OP-21/Flight Bootloader
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1642 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 17:08:24 +00:00
stac
55d90970ed hmc5843: hide internal #defines and functions
Way too much was being exposed in the API for the
HMC5843.  This commit properly hides internal
details of the driver.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1629 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:21:04 +00:00
stac
0e7a801e9e hmc5843: Add support for DRDY signal from magnetometer
The DRDY signal from the magnetometer is connected to PB8
on the STM32.  This pin is now configured as an external
interrupt and is now used to signal when new data is
available from the magnetometer.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1628 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:21:02 +00:00
stac
4ac001553d hmc5843: convert line endings from CRLF to LF
No functional changes.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1627 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:21:00 +00:00
stac
88e73906d0 i2c: Add recovery code for i2c bus errors
I2C bus errors are now recoverable.  The bus is properly reset
and an error indication is now provided to the caller whenever
a bus error occurs during processing of the transaction list.

For now, the users of the I2C layer just retry infinitely on
failure.  The BMP085 and HMC5843 code should be changed to
report errors to its callers to allow a more sensible retry
strategy.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1625 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:20:57 +00:00
stac
65ad2caf8a i2c: Make transaction initiator available in txn list
The info field in the pios_i2c_txn list can now be used
to provide a const string which describes the context
for this transaction.

This is very helpful when diagnosing an error that occurs
somewhere in the middle of the I2C FSM since the FSM runs
primarily in the ISR where the original context for the
transactions is no longer available in the traceback.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1622 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:20:53 +00:00
stac
85c60479c1 i2c: rename FSM faulted state
Differentiate the _FSM_ faulted from the (soon to
exist _BUS_ faulted state.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1621 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-15 14:20:52 +00:00
pip
cc3860daaf Added 'uint32_t PIOS_SYS_getCPUFlashSize(void)' into pios_sys.c/h files.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1616 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-14 09:18:55 +00:00
pip
8bfaa997d3 made curr_state 'volatile' in pios_i2c_priv.h to prevernt compiler optimization lockup.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1611 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-13 20:52:56 +00:00
stac
d18e0c3ef8 ahrscomms: Add low-level message code for bootloader msgs
Implement low-level utility functions for sending/receiving
the opahrs proto v0 (bootloader) messages.  These are used
by the OP firmware loader and the AHRS bootloader.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1586 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-11 23:06:31 +00:00
stac
6bf3038f3f ahrscomms: provide helper function for simple requests
This cleans up some of the boiler plate code that is
repeasted for simple (empty) requests that expect a
response.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1584 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-11 23:06:28 +00:00
stac
7ecbb5f5b8 opahrs_proto: Add new boot and versions messages
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1583 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-11 23:06:26 +00:00
stac
d1dc300081 ahrscomms: remove unused sync and switch_proto messages
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1582 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-09-11 23:06:25 +00:00
peabody124
b853c392f3 Flight: Was only returning half of the serial number (thanks for catching that Pip)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1476 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-31 02:33:47 +00:00
pip
ba5f1b37ee changed pios watchdog from 8-bit to 16-bit ms capability, plus moved the .h file from the .c folder into the inc folder
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1466 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-30 16:29:36 +00:00
peabody124
f202884ce8 AHRS: Numerous changes. Added CPU load monitoring for AHRS as well as some friendly debugging output options. Also added a new CalibrationMode setting to AHRS (Echo) to speed up sensor calibration. Cleaned up the 6 point calibration interface to make it more friendly, but I think Edouard will clobber it with something nice and sexy :).
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1455 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-29 06:38:30 +00:00
stac
47df1faa8d ahrs: whitespace adjustments
No functional changes.  Whitespace/tab fixups only.
Use TRUE/FALSE instead of 1/0.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1430 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-27 02:14:58 +00:00
peabody124
4ca10e92c7 OP-121 OP-122 Flight: Improved USB HID communication.
1. Added reenumeration function and call it on USB init (device will appear after reprogramming now)
  2. Moved buffer.c to general flight/Libraries location
  3. Removed the 62 byte transmission limitation by adding a transmission buffer
  4. Sped up USB communication by increasing endpoint polling frequency

Note, that the nonblocking and blocking USB send functions are not blocking entirely correcting.  The blocking calls the nonblocking, and the nonblocking blocks until the last chunk has started tranmission if it's a big transmission.  The buffering I added would generalize to non-blocking nicely, but would require using the EP1(IN) callback to handle most of the tranmission.  This creates a lot of issues if one function is pushing data onto the buffer and the interrupt is sending.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1403 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-25 05:32:52 +00:00
peabody124
bd8fffe4d0 AHRS/Flight: Renamed AttitudeSettings to AhrsSettings to make it more intuitive. Added the ability to change the algorithm from GCS.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1383 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-23 03:39:13 +00:00
peabody124
2596f43511 OP-120 AHRS: Moved conversion of quaternion to RPY over from AHRS to OP to minimize transfer and computational load on AHRS.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1381 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-23 02:35:39 +00:00
peabody124
5662d85c4e OP-120 AHRS: Tightened up the communication protocol so it runs more quickly. Looks ok in gdb but GCS not crashing right now (rendering error) so I can't test it properly.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1366 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-22 00:21:54 +00:00
peabody124
8897c441fa OP-118 AHRS: Added AHRSCalibration object and messages associated with that to AHRS. Also made AHRS run calibration only when requested. We will create a GCS plugin that runs through computing the calibration settings. To compute the variances on the AHRS set the measure variances to true, wait ten seconds, then set it to false to read it back.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1363 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-21 21:46:02 +00:00
stac
7b2111e512 baroaltitude: rename AltitudeActual to BaroAltitude
This is to align the object names to matches the UAVObject
architecture doc.  No functional changes.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1351 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-21 16:19:10 +00:00
stac
98822bff98 i2c: force bus free on warm starts
Since the i2c bus is bidirectional, there are certain
states (eg. part way through a read) where the slave
device is in control of driving the SDA line.

On a cold start (power on), the slave devices are all
quiescent and will not drive the bus.  However, on a warm
start (eg. watchdog or jtag restart), it is possible that as
the CPU boots, the slave device may be holding the SDA line
low.  This is a bus busy condition and will prevent the I2C
bus master in the CPU from being able to seize the bus during
init.

The fix for this is to clock the i2c bus sufficiently to ensure
that the the slave device finishes its transaction and releases
the bus.

Once the slave has released the bus, the bus master can properly
initialize and assert a STOP condition on the bus.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1349 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-21 16:19:02 +00:00
peabody124
ef0b307353 [OP-119] Flight/AHRS: Created a HomeLocation object which is updated when the GPS gets an initial 3D fix and populated with the information to convert from LLA from the GPS to NED reference frame. Also added a message for passing the MagneticNorth vector to the AHRS and removed that computation from AHRS.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1337 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-19 20:38:27 +00:00
peabody124
3c4def13cc AHRS: Added message to pass GPS information into AHRS from OP. This is then converted
into NED reference frame and used in the INSGPS algorithm, although currently this
information isn't propagated back to OP.  Data structures related to the GPS position
into the algorithm and the position estimate out will likely be in flux.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1334 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-19 05:18:34 +00:00
peabody124
cfd20922cd AHRS: Added the filtered data to the attitude raw object. Even though this seems like an oxymoron it's still raw to the EKF algorithm, and nice to see the real values after filtering to make sure nothing weird is going on. However, if people don't like this I'm open to suggestions/patches. I'd maybe suggest the whole attituderaw object be converted to ahrsraw anyway since it's more like that (eg. none of the values are actually attitude estimates).
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1325 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-18 14:54:24 +00:00
peabody124
450cf07a89 AHRS: Keeping magnetometer I2C address consistent with change to I2C driver.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1323 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-18 13:54:15 +00:00
FredericG
b46bc68e96 "addr" field of I2C transaction struct now takes real I2C address, and not address that is pre-shifted to accommodate the R/W bit
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1321 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-18 10:04:55 +00:00
stac
3125ecfc4e AHRSComms: altitude sensor data is now sent to AHRS
Altitude/pressure sensor data is sent to the AHRS whenever
the AltitudeActual object is updated.

Altitude, Pressure and Temperature are sent as floats.
Same as in the UAVObject that goes to the GCS.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1291 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-15 01:02:13 +00:00
stac
c3e509c2cb attituderaw: Replace HeadingActual with AttitudeRaw
AttitudeRaw now includes:
 - magnetometers XYZ (in mG)
 - gyros XYZ (raw ADC samples)
 - accelerometers XYZ (raw ADC samples)
 - placeholder for gyro temp sensors (read as zero for now)

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1289 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-14 23:42:14 +00:00
stac
f74c6ffdd5 i2c: rewrite i2c layer
The STM32 I2C block has a number of errata associated with it.
These errata are primarily related to timing sensitivities between
the peripheral and the interrupt handler.  In particular, the
correct generation of the stop bit relies on the I2C IRQ running
immediately and not being held off for any reason.

NOTE: The I2C interrupts must be the highest priority IRQs in the
      system to ensure correct operation.

I2C protocol is now implemented as a formal state machine.
See: stm32_i2c_fsm.{dot,jpg} for FSM description.

I2C init is now expressed by const initializers in pios_board.c
for both OP and AHRS boards.

I2C device drivers (ie. bmp085/hmc5843) now pass in const arrays
of an unlimited number of bus transfers to be done atomically.
The I2C adapter driver now handles all bus-level locking across the
list of transactions.  Generation of start/restart/stop conditions
are handled automatically over the list of transactions.

Timeouts have been removed from the API for now.  May be added
back later.

This driver has run error free on both the OP and AHRS boards for
up to 48hrs but it still sometimes fails earlier than that on the OP
board.  There is another possible set of improvements to the driver
that could employ the DMA engine for transfers of >= 2bytes.  This
change would reduce the timing sensitivities between the peripheral
and the driver but unfortunately, both the SPI and I2C interfaces
share the DMA1 engine.  That means only one of these two peripherals
can use the DMA engine and right now, SPI between OP and AHRS is
already using it.

Failures are currently fatal and will lock up the CPU.  This allows
useful information to be obtained in the failure cases.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1241 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-08 04:15:08 +00:00
peabody124
0fdfbb2ffb Deleting old USB code that I meant to delete a while ago. Also changed names of some functions to OP. Finally fixed the USB taking over PIOS telemetry. Detects the USB cable and that the configuration has been taken by the USB bus.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1217 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-05 23:43:52 +00:00
pip
0331f05e9a Added extra LED's .. now up to 4 LED's .. (PipBee has 4 controllable LED's)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1207 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-04 17:32:42 +00:00
sambas
7f6336d324 OP-22 Flight/PiOS: Spektrum reworked, input is mapped to old aux in receiver connector, works nicely with calibration plugin. Also bind works, just needs config flag to bind on powerup
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1189 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-08-01 10:34:07 +00:00
peabody124
7e6afe5a75 Updated HID code to do packet processing in OS indepdent layer. Should now work on all platforms. Please test and get back to me. Maximum object size of 62 bytes currently.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1174 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-28 18:55:04 +00:00
peabody124
27d429fe18 Got better HID report design with valid data length embedded in report
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1164 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-27 17:41:56 +00:00
peabody124
fe616df48d Further tweaks. Will start trying to get reliable communication with larger report size tomorrow
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1159 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-27 07:56:50 +00:00
peabody124
840f7ff456 A version of the firmware that successfully Acks back and forth over HID. Still need to refine the PIOS interface and make GCS strip out the report ID data (if necessary). Also note: currently if you run too many modules the watchdog timer kicks in. I haven't determined if this is due to an interrupt binding up or what (and why it doesn't happen more often since I can't find any code that explicitly resets the WWDG).
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1157 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-27 06:22:34 +00:00
peabody124
d89cd43cd1 Further tweaks to the HID update
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1156 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-27 05:28:04 +00:00
peabody124
c46dcea73a Pretty major update of the USB HID core. Removed a lot of old code related to custom drivers and BSL (which will be brought back under HID). Device enumerates but still not communicating. Hopefully nothing broken, lots changed.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1155 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-27 03:19:07 +00:00
peabody124
d928676f5e More documentation updates, standardizing format to include addtogroup at the beginning of headers so files are associated with modules
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1121 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-16 19:53:35 +00:00
peabody124
99e94228a9 More doxygen updates
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1106 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-16 05:31:11 +00:00
stac
17bea4cb91 ahrscomms: connect the OP board to the AHRS board
The AHRS comms module now sync's with the AHRS and
exchanges interesting data periodically.  Whenever
the link to the AHRS is down, the AHRSComms alarm is
raised.

This is fairly basic for now but provides the last
piece of the infrastructure to move data back/forth
between the OP and the AHRS.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1014 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:49 +00:00
stac
29a8f05ac9 mag sensor: put some bounds on the parameters
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1012 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:45 +00:00
stac
a3a2dbd634 spi: Add support for hardware CRC generation/checking
PIOS SPI devices may now make use of automatic CRC generation
and checking on block transfers.  Only supports CRC8 for now.

Since the SPI interface CRC calculation continues across message
boundaries (ie. not reset on every transfer), we must manually reset
the CRC registers for every transfer to allow the two sides of the
link to resynchronize.

Unfortunately, resetting the CRC registers requires disabling the
SPI peripheral which must now be done on every block transfer.

Note: The last byte of the tx buffer is never sent and is assumed to
      be a place holder for the tx CRC8.
Note: The last byte of the rx buffer is expected to hold the rx CRC8.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1011 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:42 +00:00
stac
c12b7e3fed spi: tx buffer is now const
Tx buffers should not be modified.  This allows passing const data
to the transfer function.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1010 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:40 +00:00
stac
89a6d6d912 ahrs spi: Add definition of OP<->AHRS SPI protocol
This defines the SPI message format as well as a few
initial messages for moving data across the link.

The v0 messages are place holders for firmware download
in the bootloader.

The v1 messages are to be used by the main application.

Note: This is not the final protocol definition.
      Subject to change without notice.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1004 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:15 +00:00
stac
71e491e3c1 com: mark tx buffer as const throughout API
The com layer transmit functions should provide guarantees
that they will not modify the buffer that you're transmitting.
Declaring the parameter as a pointer to const keeps the underlying
implementations honest.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1001 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:08 +00:00
FredericG
5d9a718430 Made pios_com_num_devices const
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@837 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-06-20 17:59:48 +00:00
stac
771a56ca9d com/usart: generalize com driver API
- Created a pluggable COM layer
- Converted COM + USART init into static initializers
  rather than typedefs
- Generalized the USB HID COM API to match the USART
  API.
- Changed USART and COM layers to be data driven rather
  than #ifdef'ing/switching on the specifics of each port

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@760 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-06-13 04:24:26 +00:00
stac
8d015a57d0 pios spi: support both master and slave configs
Added support for SPI slave configurations to the pios SPI layer.

Converted the board specific configuration for the PIOS SPI layer to
use const static initializers rather than #defines (see pios_board.c).

SPI interface between the OP board and the AHRS is now operational at
a basic level, capable of moving simple single byte messages between
boards.  Multi-byte, CRC protected messages will be added on top of this.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@759 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-06-13 04:23:44 +00:00
fredericg
a2beb49257 Changed PIOS_DEBUG_Panic()
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@694 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-31 16:22:58 +00:00
stac
69de42db49 Add AHRS attitude module and driver skeletons
- New Attitude module for AHRS (skeleton)
 - New AttitudeSettings UAVobject
 - New AttitudeActual UAVobject
 - Regenerated UAVobjects
 - Added new UAVobjects to OpenPilot and GCS builds
 - New PiOS driver for OpenPilot AHRS (stubs only)

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@655 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-24 16:33:36 +00:00
sambas
d7b3a158d6 OP-22 Flight/PiOS: Spektrum bind function tested and working.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@649 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-23 11:19:28 +00:00
stac
d02a3325d9 altitude: Add altitude module which reads BMP085
This module reads from the BMP085 pressure sensor.  It periodically
updates the pressure (kPa) and temperature (C) as well as the
calculated altitude (m).

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@640 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-19 04:55:56 +00:00
stac
514d46f5b6 freertos: fix RTOS API calls from interrupt level
FreeRTOS has a strict requirement that even interrupt-safe API calls (ie.
those ending in "FromISR") can only be called from ISRs that are at lesser
or equal priorities to configMAX_SYSCALL_INTERRUPT_PRIORITY.  See the
"configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY"
section at:
  http://www.freertos.org/a00110.html

The interrupt numbers used on the Cortex-M3 CPU has a somewhat backward
representation of the interrupt numbers so 255 = lowest priority and
0 = highest priority.

The calculation is further complicated by the STM32 implementation only using
the upper 4 bits of the priority value.  Only 0x00, 0x10, 0x20, ..., 0xE0, 0xF0
represent useful interrupt priorities.

FreeRTOS requires that MAX_SYSCALL and KERNEL interrupt priorities are expressed
as raw unshifted 8-bit values to be programmed directly into the BASEPRI register.

The priority values passed to the NVIC initialization, however, are expected
to be 4-bit values and are shifted up by 4 within NVIC_Init() for you.

The end result is that we need this arrangement:

[highest priority]
   NVIC_0 (Non-maskable-interrupt)
   NVIC_1
   NVIC_2
[Must NOT call FreeRTOS APIs above here]
   configMAX_SYSCALL_INTERRUPT_PRIORITY (now at 48 = 0x30 = NVIC_3)
   PIOS_IRQ_PRIO_HIGHEST (cur. NVIC_4)
   PIOS_IRQ_PRIO_HIGH    (cur. NVIC_5)
   PIOS_IRQ_PRIO_MID     (cur. NVIC_8)
   PIOS_IRQ_PRIO_LOW     (cur. NVIC_12)
   configKERNEL_INTERRUPT_PRIORITY (240 = 0xF0 = NVIC_15)
[lowest priority]

The previous config had configMAX_SYSCALL_INTERRUPT_PRIORITY set at
191 (0xBF) which is effectively NVIC_11.  This was allowing all of
the MID, HIGH and HIGHEST interrupt handlers to preempt the OS in
its critical sections.  Since some of these ISRs were calling
FreeRTOS APIs, this would result in corrupting internal data structures
within the OS.

It should be ok to move the configKERNEL_INTERRUPT_PRIORITY to a higher
priority as long as it is less than configMAX_SYSCALL_INTERRUPT_PRIORITY.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@637 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-18 04:50:38 +00:00
sambas
66fa56a1da OP-22 Flight/PiOS: Spektrum simple decoder works, getting seven working channels with my DX7 tx
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@630 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 10:04:07 +00:00
sambas
76cd72915d OP-22 Flight/PiOS: first tests done with spektrum satellite, I can read binded receiver serial stream
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@629 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 08:35:38 +00:00
sambas
26aecf720d OP-22 Flight/PiOS: Spektrum satellite protocol started
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@626 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 18:22:03 +00:00
gussy
73b5e29e02 Finalised and verified PIOS_HMC5843 library.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@624 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 12:50:05 +00:00
gussy
ff73ab5a80 More updates to cross-target compatibility.
Added PIOS_I2C into AHRS code.
Added PIOS_HMC5843 Module.




git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@617 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-12 08:18:49 +00:00
vassilis
a31215293d Flight\Telemetry Implement telemetry settings object, added functions for changing the baud rate in PiOS
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@607 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 02:44:26 +00:00
gussy
0aba12fe1f Loopback test of HID working. Still a WIP but committing what I have to show progress.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@582 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-04 18:54:43 +00:00
fredericg
3281b1a128 OP-27 Use RTOS in LockDevice() and UnlockDevice()
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@564 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-01 14:49:51 +00:00
vassilis
8c11a03129 Flight/Alarms Implemented Alarms library, now checking for stack overflow, out of memory, event and other errors (see the SystemAlarms object). All modules will be reporting their alarms using this library.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@554 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-27 01:55:28 +00:00
vassilis
4f0377194d Flight/PiOS Remove use of semaphores in COM/USB ISR (not used and not working also causing random crashes)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@540 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-25 02:17:25 +00:00
vassilis
40beb15129 OP-4 Flight/System Created CPU utilization measurement and created object to report system information (load, heap and time)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@519 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-18 02:13:59 +00:00
vassilis
89a6dd30d1 OP-4 Flight/Telemetry Create new objects to report statistics of the telemetry link (plus a few bug fixes, heap size was also increased)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@515 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-17 22:16:20 +00:00
vassilis
f4c4b1371a Flight/Settings: Remove old settings implementation (replaced with binary settings as UAVObjects)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@465 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-10 01:35:13 +00:00
pete
f1694527cc Working on the PPM functionality. Getting there but it is still not 100% correct.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@411 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-30 04:48:15 +00:00
gussy
41fd921b14 Updated BMP085 test code.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@375 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-23 04:01:11 +00:00
gussy
6826706cb7 Moved external interrupts into it's own API.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@370 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-22 02:07:06 +00:00
gussy
62f4e2c636 Add PIOS_EXTI.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@367 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-21 20:23:20 +00:00
gussy
e1504dafc6 Add PIOS_GPIO for controlling the auxiliary connections on the OpenPilot board.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@311 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-14 11:59:11 +00:00
FredericG
7bd573f043 OP-36 PIOS_DEBUG_Assert() function
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@307 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-14 10:20:27 +00:00
gussy
7b5d85cb3e PIOS_LED: Initialise all LED's as off.
PIOS_SYS: Added system reset function.
OpenPilot Makefile: Default USE_BOOTLOADER should be NO.
OpenPilot Bootloader: Removed LED initialisation.



git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@303 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-14 06:47:57 +00:00
gussy
7863954f1a Added debugging port buffer handling.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@297 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-13 15:37:00 +00:00
FredericG
50215e75c6 OP-28 Some changes in the I2C API
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@296 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-13 12:23:55 +00:00
gussy
6764a34285 Updated some FreeRTOS specific issues and fixed a few typos.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@292 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-12 16:22:56 +00:00
fredericg
47038af0c0 PIOS_DONT_USE_XXX => PIOS_INCLUDE_XXX
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@283 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-11 12:38:51 +00:00
dankers
e66c491942 Update to headers in the flight portion of the code. Just formatting.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@276 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-10 09:12:31 +00:00
gussy
b08eb71a9a Changed USB VID and PID to our own ones now.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@272 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-08 18:48:00 +00:00
gussy
1ed841946c Added "supervisor" and comments to PIOS_PWM.
Added timer usage diagram to pios_board.h
Removed bloat for extra optimisation in PIOS_DELAY.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@265 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-07 14:19:43 +00:00
gussy
075dcf5aee PIOS_PWM example code measures servo signal pulse width in microseconds (uS).
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@263 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-07 12:25:11 +00:00
gussy
fd889b918b Updates to BMP085 readings.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@260 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-06 10:28:08 +00:00
gussy
d406232eb1 Improvement OP-3; Implemented buffer based receiving functions, untested.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@254 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-06 03:13:14 +00:00
gussy
7de6be3f59 Reading and writing to BMP085 sensor now working.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@249 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-05 10:44:11 +00:00