Reaction Wheel Actuated Satellite Dynamics Test Platform

Dependencies:   mbed

Diploma Thesis in Aerospace Engineering, January 2014

University of Applied Sciences Munich, Faculty 03

Electronics:

  • 1x mbed NXP LPC 1768 Microcontroller
  • 2x XBee S1 Radios + Sparkfun USB Adapter
  • 1x CHR UM6-lt IMU
  • 4x Graupner BEC 8 Motor Controllers
  • 4x ROXXY 2826/09 Brushless Motors
  • 1x Hacker TopFuel LiPo 1300mAh Battery
  • 1x big Selfmade BreakOutBoard to connect all components
  • 1x small BreakOutBoard to connect IMU

Hardware developed with Catia V5R20

Manufactoring Technology: Rapid Prototyping - EOS Formiga P110

Controlled via text based menu with DockLight

__________________

Committer:
DimitriGruebel
Date:
Wed Jul 09 07:35:50 2014 +0000
Revision:
0:1447d2f773db
Dynamics Test Platform

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DimitriGruebel 0:1447d2f773db 1 /* $Id:$
DimitriGruebel 0:1447d2f773db 2
DimitriGruebel 0:1447d2f773db 3 1.23 25th July 2012
DimitriGruebel 0:1447d2f773db 4
DimitriGruebel 0:1447d2f773db 5 * LPC1768 code as was. This release includes "alpha" support for the LPC11U24
DimitriGruebel 0:1447d2f773db 6
DimitriGruebel 0:1447d2f773db 7 1.22 19th April 2012
DimitriGruebel 0:1447d2f773db 8
DimitriGruebel 0:1447d2f773db 9 * http://mbed.org/forum/bugs-suggestions/topic/2936/
DimitriGruebel 0:1447d2f773db 10 * Bug fix, protect important buffer pointers from IRQ corruption.
DimitriGruebel 0:1447d2f773db 11 Credits:
DimitriGruebel 0:1447d2f773db 12 Anthony Wieser http://mbed.org/users/WieserSoftwareLtd/ for the fix.
DimitriGruebel 0:1447d2f773db 13 BlazeX http://mbed.org/users/BlazeX/ for the alert that a fix was needed!
DimitriGruebel 0:1447d2f773db 14
DimitriGruebel 0:1447d2f773db 15 1.21 10 May 2011
DimitriGruebel 0:1447d2f773db 16
DimitriGruebel 0:1447d2f773db 17 * http://mbed.org/forum/mbed/topic/2264
DimitriGruebel 0:1447d2f773db 18
DimitriGruebel 0:1447d2f773db 19 1.20 26 April 2011
DimitriGruebel 0:1447d2f773db 20
DimitriGruebel 0:1447d2f773db 21 * Bug fix, not blocking on transmit
DimitriGruebel 0:1447d2f773db 22 by Erik Petrich, http://mbed.org/forum/bugs-suggestions/topic/2200
DimitriGruebel 0:1447d2f773db 23
DimitriGruebel 0:1447d2f773db 24 1.19 20 April 2011
DimitriGruebel 0:1447d2f773db 25
DimitriGruebel 0:1447d2f773db 26 * Fixed some doxygen comment bugs.
DimitriGruebel 0:1447d2f773db 27
DimitriGruebel 0:1447d2f773db 28 1.18 20 April 2011
DimitriGruebel 0:1447d2f773db 29
DimitriGruebel 0:1447d2f773db 30 * All callbacks now use MODSERIAL_callback (rather than Mbed's FunctionPointer[1] type)
DimitriGruebel 0:1447d2f773db 31 to store and invoke it's callbacks. This allows MODSERIAL to pass a parameter
DimitriGruebel 0:1447d2f773db 32 to callbacks. The function prototype is now void func(MODSERIAL_IRQ_INFO *q).
DimitriGruebel 0:1447d2f773db 33 * Callbacks now pass a pointer to a MODSERIAL_IRQ_INFO class type.
DimitriGruebel 0:1447d2f773db 34 This class holds a pointer to the MODSERIAL object that invoked the callback
DimitriGruebel 0:1447d2f773db 35 thus freeing callbacks need to use the global variable of the original
DimitriGruebel 0:1447d2f773db 36 MODSERIAL instance.
DimitriGruebel 0:1447d2f773db 37 * MODSERIAL_IRQ_INFO also declares public functions that are protected within MODSERIAL
DimitriGruebel 0:1447d2f773db 38 thus allowing certain functions to be restricted to callback context only.
DimitriGruebel 0:1447d2f773db 39 * New function MODSERIAL_IRQ_INFO::rxDiscardLastChar() allows an rxCallback function
DimitriGruebel 0:1447d2f773db 40 to remove the character that was just placed into the RX buffer.
DimitriGruebel 0:1447d2f773db 41
DimitriGruebel 0:1447d2f773db 42 [1] http://mbed.org/users/AjK/libraries/FPointer/latest/docs/
DimitriGruebel 0:1447d2f773db 43
DimitriGruebel 0:1447d2f773db 44 1.17 08/Mar/2011
DimitriGruebel 0:1447d2f773db 45 Fixed a memory leak in the DMA code.
DimitriGruebel 0:1447d2f773db 46
DimitriGruebel 0:1447d2f773db 47 1.16 - 12 Feb 2011
DimitriGruebel 0:1447d2f773db 48
DimitriGruebel 0:1447d2f773db 49 * Missed one, doh!
DimitriGruebel 0:1447d2f773db 50
DimitriGruebel 0:1447d2f773db 51 1.15 - 12 Feb 2011
DimitriGruebel 0:1447d2f773db 52
DimitriGruebel 0:1447d2f773db 53 * Fixed some typos.
DimitriGruebel 0:1447d2f773db 54
DimitriGruebel 0:1447d2f773db 55 1.14 - 7 Feb 2011
DimitriGruebel 0:1447d2f773db 56
DimitriGruebel 0:1447d2f773db 57 * Fixed a bug in __putc() that caused the output buffer pointer to
DimitriGruebel 0:1447d2f773db 58 become corrupted.
DimitriGruebel 0:1447d2f773db 59
DimitriGruebel 0:1447d2f773db 60 1.13 - 20/01/2011
DimitriGruebel 0:1447d2f773db 61
DimitriGruebel 0:1447d2f773db 62 * Added extra documentation.
DimitriGruebel 0:1447d2f773db 63 * Fixed some typos.
DimitriGruebel 0:1447d2f773db 64
DimitriGruebel 0:1447d2f773db 65 1.12 - 20/01/2011
DimitriGruebel 0:1447d2f773db 66
DimitriGruebel 0:1447d2f773db 67 * Added new "autoDetectChar()" function. To use:-
DimitriGruebel 0:1447d2f773db 68 1st: Add a callback to invoke when the char is detected:-
DimitriGruebel 0:1447d2f773db 69 .attach(&detectedChar, MODSERIAL::RxAutoDetect);
DimitriGruebel 0:1447d2f773db 70 2nd: Send the char to detect.
DimitriGruebel 0:1447d2f773db 71 .autoDectectChar('\n');
DimitriGruebel 0:1447d2f773db 72 Whenever that char goes into the RX buffer your callback will be invoked.
DimitriGruebel 0:1447d2f773db 73 Added example2.cpp to demo a simple messaging system using this auto feature.
DimitriGruebel 0:1447d2f773db 74
DimitriGruebel 0:1447d2f773db 75
DimitriGruebel 0:1447d2f773db 76 1.11 - 23/11/2010
DimitriGruebel 0:1447d2f773db 77
DimitriGruebel 0:1447d2f773db 78 * Fixed a minor issue with 1.10 missed an alteration of name change.
DimitriGruebel 0:1447d2f773db 79
DimitriGruebel 0:1447d2f773db 80 1.10 - 23/11/2010
DimitriGruebel 0:1447d2f773db 81
DimitriGruebel 0:1447d2f773db 82 * Rename the DMA callback from attach_dma_complete() to attach_dmaSendComplete()
DimitriGruebel 0:1447d2f773db 83
DimitriGruebel 0:1447d2f773db 84 1.9 - 23/11/2010
DimitriGruebel 0:1447d2f773db 85
DimitriGruebel 0:1447d2f773db 86 * Added support for DMA sending of characters. Required is
DimitriGruebel 0:1447d2f773db 87 the MODDMA library module:-
DimitriGruebel 0:1447d2f773db 88 http://mbed.org/users/AjK/libraries/MODDMA/latest
DimitriGruebel 0:1447d2f773db 89 See example_dma.cpp for more information.
DimitriGruebel 0:1447d2f773db 90
DimitriGruebel 0:1447d2f773db 91 1.8 - 22/11/2010
DimitriGruebel 0:1447d2f773db 92
DimitriGruebel 0:1447d2f773db 93 * Added code so that if a buffer is set to zero length then
DimitriGruebel 0:1447d2f773db 94 MODSERIAL defaults to just using the FIFO for that stream
DimitriGruebel 0:1447d2f773db 95 thus making the library "fall back" to teh same operation
DimitriGruebel 0:1447d2f773db 96 that the Mbed Serial library performs.
DimitriGruebel 0:1447d2f773db 97 * Removed dmaSend() function that should have been removed
DimitriGruebel 0:1447d2f773db 98 at 1.7
DimitriGruebel 0:1447d2f773db 99
DimitriGruebel 0:1447d2f773db 100 1.7 - 21/11/2010
DimitriGruebel 0:1447d2f773db 101
DimitriGruebel 0:1447d2f773db 102 * Remove the DMA enum from MODSERIAL.h as it's not currently
DimitriGruebel 0:1447d2f773db 103 ready for release.
DimitriGruebel 0:1447d2f773db 104 * Added page doxygen comments.
DimitriGruebel 0:1447d2f773db 105
DimitriGruebel 0:1447d2f773db 106 1.6 - 21/11/2010
DimitriGruebel 0:1447d2f773db 107
DimitriGruebel 0:1447d2f773db 108 * Version 1.5 solved a blocking problem on putc() when called
DimitriGruebel 0:1447d2f773db 109 from another ISR. However, isr_tx() invokes a callback of it's
DimitriGruebel 0:1447d2f773db 110 own when a byte is tranferred from TX buffer to TX FIFO. User
DimitriGruebel 0:1447d2f773db 111 programs may interpret that as an IRQ callback. That's an ISR
DimitriGruebel 0:1447d2f773db 112 call from within an existing ISR which is not good. So the
DimitriGruebel 0:1447d2f773db 113 TxIrq callback from isr_tx is now conditional. It will only
DimitriGruebel 0:1447d2f773db 114 be called when isr_tx() is actually within it's own ISR and
DimitriGruebel 0:1447d2f773db 115 not when called from alternate ISR handlers.
DimitriGruebel 0:1447d2f773db 116
DimitriGruebel 0:1447d2f773db 117 1.5 - 21/11/2010
DimitriGruebel 0:1447d2f773db 118
DimitriGruebel 0:1447d2f773db 119 * Calling putc() (or any derived function that uses it like
DimitriGruebel 0:1447d2f773db 120 printf()) while inside an interrupt service routine can
DimitriGruebel 0:1447d2f773db 121 cause the system to lock up if the TX buffer is full. This
DimitriGruebel 0:1447d2f773db 122 is because bytes are only transferred from the TX buffer to
DimitriGruebel 0:1447d2f773db 123 the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
DimitriGruebel 0:1447d2f773db 124 then the TX ISR will never trigger. The TX buffer stays full and
DimitriGruebel 0:1447d2f773db 125 there is never space to putc() the byte. So, while putc() blocks
DimitriGruebel 0:1447d2f773db 126 waiting for space it calls isr_tx() to ensure if TX FIFO space
DimitriGruebel 0:1447d2f773db 127 becomes available it will move bytes from the TX buffer to TX
DimitriGruebel 0:1447d2f773db 128 FIFO thus removing the blocking condition within putc().
DimitriGruebel 0:1447d2f773db 129
DimitriGruebel 0:1447d2f773db 130 1.4 - 21/11/2010
DimitriGruebel 0:1447d2f773db 131
DimitriGruebel 0:1447d2f773db 132 * Removed all the new DMA code. I wish mbed.org had proper SVN
DimitriGruebel 0:1447d2f773db 133 versioning, I'm use to working in HEAD and BRANCHES after I've
DimitriGruebel 0:1447d2f773db 134 released a project. Getting bug reports in current releases
DimitriGruebel 0:1447d2f773db 135 while trying to dev new code is hard to manage without source
DimitriGruebel 0:1447d2f773db 136 control of some type!
DimitriGruebel 0:1447d2f773db 137
DimitriGruebel 0:1447d2f773db 138 1.3 - 21/11/2010
DimitriGruebel 0:1447d2f773db 139
DimitriGruebel 0:1447d2f773db 140 * Fixed a macro problem with txIsBusy()
DimitriGruebel 0:1447d2f773db 141 * Started adding code to use "block data" sending using DMA
DimitriGruebel 0:1447d2f773db 142 * Removed #include "IOMACROS.h"
DimitriGruebel 0:1447d2f773db 143
DimitriGruebel 0:1447d2f773db 144 1.2 - 21/11/2010
DimitriGruebel 0:1447d2f773db 145
DimitriGruebel 0:1447d2f773db 146 * Removed unsed variables from flushBuffer()
DimitriGruebel 0:1447d2f773db 147 * Fixed a bug where both RX AND TX fifos are cleared/reset
DimitriGruebel 0:1447d2f773db 148 when just TX OR RX should be cleared.
DimitriGruebel 0:1447d2f773db 149 * Fixed a bug that cleared IIR when in fact it should be left
DimitriGruebel 0:1447d2f773db 150 alone so that any pending interrupt after flush is handled.
DimitriGruebel 0:1447d2f773db 151 * Merged setBase() into init() as it wasn't required anywhere else.
DimitriGruebel 0:1447d2f773db 152 * Changed init() to enforce _uidx is set by Serial to define the _base
DimitriGruebel 0:1447d2f773db 153 address of the Uart in use.
DimitriGruebel 0:1447d2f773db 154
DimitriGruebel 0:1447d2f773db 155 1.1 - 20/11/2010
DimitriGruebel 0:1447d2f773db 156
DimitriGruebel 0:1447d2f773db 157 * Added this file
DimitriGruebel 0:1447d2f773db 158 * Removed cruft from GETC.cpp
DimitriGruebel 0:1447d2f773db 159 * "teh" should be "the", why do my fingers do that?
DimitriGruebel 0:1447d2f773db 160
DimitriGruebel 0:1447d2f773db 161 1.0 - 20/11/2010
DimitriGruebel 0:1447d2f773db 162
DimitriGruebel 0:1447d2f773db 163 * First release.
DimitriGruebel 0:1447d2f773db 164
DimitriGruebel 0:1447d2f773db 165 */