wu

Dependencies:   mbed-rtos mbed

Fork of Boboobooov4 by kao yi

Committer:
backman
Date:
Wed Jul 02 06:44:48 2014 +0000
Revision:
20:30799cbda86b
Parent:
19:4869b10a962e
al

Who changed what in which revision?

UserRevisionLine numberNew contents of line
backman 19:4869b10a962e 1
backman 19:4869b10a962e 2 #include "mbed.h"
backman 19:4869b10a962e 3
backman 19:4869b10a962e 4 /** @file test.h*/
backman 19:4869b10a962e 5
backman 19:4869b10a962e 6 /**
backman 19:4869b10a962e 7 * @defgroup FRDM-TFC_API FRDM-TFC_API
backman 19:4869b10a962e 8 *
backman 19:4869b10a962e 9 * @{
backman 19:4869b10a962e 10 */
backman 19:4869b10a962e 11
backman 19:4869b10a962e 12
backman 19:4869b10a962e 13 /**
backman 19:4869b10a962e 14
backman 19:4869b10a962e 15 @addtogroup FRDM-TFC_API
backman 19:4869b10a962e 16
backman 19:4869b10a962e 17 @{
backman 19:4869b10a962e 18
backman 19:4869b10a962e 19 Resources used by the TFC Library\n
backman 19:4869b10a962e 20
backman 19:4869b10a962e 21 I/O:\n
backman 19:4869b10a962e 22 -------------------------------------------------------------------------------------------------\n
backman 19:4869b10a962e 23
backman 19:4869b10a962e 24 PTB0 (Servo Channel 0 - TPM1)\n
backman 19:4869b10a962e 25 PTB1 (Servo Channel 1 - TPM1)\n
backman 19:4869b10a962e 26 \n
backman 19:4869b10a962e 27 PTB8 (Battery LED0)\n
backman 19:4869b10a962e 28 PTB9 (Battery LED1)\n
backman 19:4869b10a962e 29 PTB10 (Battery LED2)\n
backman 19:4869b10a962e 30 PTB11 (Battery LED3)\n
backman 19:4869b10a962e 31 \n
backman 19:4869b10a962e 32 PTD7 (Camera SI)\n
backman 19:4869b10a962e 33 PTE0 (Camera CLK)\n
backman 19:4869b10a962e 34 PTD5 (Camera A0 - ADC_SE6b)\n
backman 19:4869b10a962e 35 PTD6 (Camera A1 - ADC_SE7b)\n
backman 19:4869b10a962e 36 \n
backman 19:4869b10a962e 37 PTE2 DIP Switch 0\n
backman 19:4869b10a962e 38 PTE3 DIP Switch 1\n
backman 19:4869b10a962e 39 PTE4 DIP Switch 2\n
backman 19:4869b10a962e 40 PTE5 DIP Switch 3\n
backman 19:4869b10a962e 41
backman 19:4869b10a962e 42 PTC13 Pushbutton SW1\n
backman 19:4869b10a962e 43 PTC17 Pushbutton SW2\n
backman 19:4869b10a962e 44
backman 19:4869b10a962e 45 PTC3 H-Bridge A - 1 FTM0_CH3\n
backman 19:4869b10a962e 46 PTC4 H-Bridge A - 2 FTM0_CH4\n
backman 19:4869b10a962e 47 PTC1 H-Bridge B - 1 FTM0_CH1\n
backman 19:4869b10a962e 48 PTC2 H-Bridge B - 2 FTM0_CH2\n
backman 19:4869b10a962e 49
backman 19:4869b10a962e 50 PTE21 H-Bridge Enable\n
backman 19:4869b10a962e 51 PTE20 H-Bridge Fault\n
backman 19:4869b10a962e 52
backman 19:4869b10a962e 53 PTE23 H-Bridge A - IFB\n
backman 19:4869b10a962e 54 PTE22 H-Bridge B - IFB\n
backman 19:4869b10a962e 55
backman 19:4869b10a962e 56 }
backman 19:4869b10a962e 57 */
backman 19:4869b10a962e 58
backman 19:4869b10a962e 59
backman 19:4869b10a962e 60
backman 19:4869b10a962e 61 #ifndef _TFC_H
backman 19:4869b10a962e 62 #define _TFC_H
backman 19:4869b10a962e 63
backman 19:4869b10a962e 64 #define TFC_HBRIDGE_EN_LOC (uint32_t)(1<<21)
backman 19:4869b10a962e 65 #define TFC_HBRIDGE_FAULT_LOC (uint32_t)(1<<20)
backman 19:4869b10a962e 66
backman 19:4869b10a962e 67 #define TFC_HBRIDGE_ENABLE PTE->PSOR = TFC_HBRIDGE_EN_LOC
backman 19:4869b10a962e 68 #define TFC_HBRIDGE_DISABLE PTE->PCOR = TFC_HBRIDGE_EN_LOC
backman 19:4869b10a962e 69
backman 19:4869b10a962e 70 #define TFC_DIP_SWITCH0_LOC ((uint32_t)(1<<2))
backman 19:4869b10a962e 71 #define TFC_DIP_SWITCH1_LOC ((uint32_t)(1<<3))
backman 19:4869b10a962e 72 #define TFC_DIP_SWITCH2_LOC ((uint32_t)(1<<4))
backman 19:4869b10a962e 73 #define TFC_DIP_SWITCH3_LOC ((uint32_t)(1<<5))
backman 19:4869b10a962e 74
backman 19:4869b10a962e 75 #define TFC_PUSH_BUTT0N0_LOC ((uint32_t)(1<<13))
backman 19:4869b10a962e 76 #define TFC_PUSH_BUTT0N1_LOC ((uint32_t)(1<<17))
backman 19:4869b10a962e 77
backman 19:4869b10a962e 78 #define TFC_BAT_LED0_LOC ((uint32_t)(1<<11))
backman 19:4869b10a962e 79 #define TFC_BAT_LED1_LOC ((uint32_t)(1<<10))
backman 19:4869b10a962e 80 #define TFC_BAT_LED2_LOC ((uint32_t)(1<<9))
backman 19:4869b10a962e 81 #define TFC_BAT_LED3_LOC ((uint32_t)(1<<8))
backman 19:4869b10a962e 82
backman 19:4869b10a962e 83 #define TAOS_CLK_HIGH PTE->PSOR = (1<<1)
backman 19:4869b10a962e 84 #define TAOS_CLK_LOW PTE->PCOR = (1<<1)
backman 19:4869b10a962e 85 #define TAOS_SI_HIGH PTD->PSOR = (1<<7)
backman 19:4869b10a962e 86 #define TAOS_SI_LOW PTD->PCOR = (1<<7)
backman 19:4869b10a962e 87
backman 19:4869b10a962e 88
backman 19:4869b10a962e 89 /**
backman 19:4869b10a962e 90
backman 19:4869b10a962e 91 @addtogroup FRDM-TFC_API
backman 19:4869b10a962e 92 @{
backman 19:4869b10a962e 93 */
backman 19:4869b10a962e 94
backman 19:4869b10a962e 95 /**Macro to turn on LED 0 in the battery indicator array*/
backman 19:4869b10a962e 96 #define TFC_BAT_LED0_ON PTB->PSOR = TFC_BAT_LED0_LOC
backman 19:4869b10a962e 97 /** Macro to turn on LED 1 in the battery indicator array*/
backman 19:4869b10a962e 98 #define TFC_BAT_LED1_ON PTB->PSOR = TFC_BAT_LED1_LOC
backman 19:4869b10a962e 99 /** Macro to turn on LED 2 in the battery indicator array*/
backman 19:4869b10a962e 100 #define TFC_BAT_LED2_ON PTB->PSOR = TFC_BAT_LED2_LOC
backman 19:4869b10a962e 101 /** Macro to turn on LED 3 in the battery indicator array*/
backman 19:4869b10a962e 102 #define TFC_BAT_LED3_ON PTB->PSOR = TFC_BAT_LED3_LOC
backman 19:4869b10a962e 103
backman 19:4869b10a962e 104
backman 19:4869b10a962e 105 /** Macro to turn off LED 0 in the battery indicator array*/
backman 19:4869b10a962e 106 #define TFC_BAT_LED0_OFF PTB->PCOR = TFC_BAT_LED0_LOC
backman 19:4869b10a962e 107 /** Macro to turn off LED 1 in the battery indicator array*/
backman 19:4869b10a962e 108 #define TFC_BAT_LED1_OFF PTB->PCOR = TFC_BAT_LED1_LOC
backman 19:4869b10a962e 109 /** Macro to turn off LED 2 in the battery indicator array*/
backman 19:4869b10a962e 110 #define TFC_BAT_LED2_OFF PTB->PCOR = TFC_BAT_LED2_LOC
backman 19:4869b10a962e 111 /** Macro to turn off LED 3 in the battery indicator array*/
backman 19:4869b10a962e 112 #define TFC_BAT_LED3_OFF PTB->PCOR = TFC_BAT_LED3_LOC
backman 19:4869b10a962e 113
backman 19:4869b10a962e 114
backman 19:4869b10a962e 115 /** Macro to toggle LED 0 in the battery indicator array*/
backman 19:4869b10a962e 116 #define TFC_BAT_LED0_TOGGLE PTB->PTOR = TFC_BAT_LED0_LOC
backman 19:4869b10a962e 117 /** Macro to toggle LED 1 in the battery indicator array*/
backman 19:4869b10a962e 118 #define TFC_BAT_LED1_TOGGLE PTB->PTOR = TFC_BAT_LED1_LOC
backman 19:4869b10a962e 119 /** Macro to toggle LED 2 in the battery indicator array*/
backman 19:4869b10a962e 120 #define TFC_BAT_LED2_TOGGLE PTB->PTOR = TFC_BAT_LED2_LOC
backman 19:4869b10a962e 121 /** Macro to toggle LED 3 in the battery indicator array*/
backman 19:4869b10a962e 122 #define TFC_BAT_LED3_TOGGLE PTB->PTOR = TFC_BAT_LED3_LOC
backman 19:4869b10a962e 123
backman 19:4869b10a962e 124
backman 19:4869b10a962e 125 /** Macro to read the state of the pushbutton SW1*/
backman 19:4869b10a962e 126 #define TFC_PUSH_BUTTON_0_PRESSED ((PTC->PDIR&TFC_PUSH_BUTT0N0_LOC)>0)
backman 19:4869b10a962e 127 /** Macro to read the state of the pushbutton SW1*/
backman 19:4869b10a962e 128 #define TFC_PUSH_BUTTON_1_PRESSED ((PTC->PDIR&TFC_PUSH_BUTT0N1_LOC)>0)
backman 19:4869b10a962e 129
backman 19:4869b10a962e 130 /** Macro to read the state of switch 0 in the 4 position DIP switch*/
backman 19:4869b10a962e 131 #define TFC_DIP_SWITCH_0_ON ((TFC_GetDIP_Switch()&0x01)>0)
backman 19:4869b10a962e 132
backman 19:4869b10a962e 133 /** Macro to read the state of switch 1 in the 4 position DIP switch*/
backman 19:4869b10a962e 134 #define TFC_DIP_SWITCH_1_ON ((TFC_GetDIP_Switch()&0x02)>0)
backman 19:4869b10a962e 135
backman 19:4869b10a962e 136 /** Macro to read the state of switch 2 in the 4 position DIP switch*/
backman 19:4869b10a962e 137 #define TFC_DIP_SWITCH_2_ON ((TFC_GetDIP_Switch()&0x04)>0)
backman 19:4869b10a962e 138
backman 19:4869b10a962e 139 /** Macro to read the state of switch 3 in the 4 position DIP switch*/
backman 19:4869b10a962e 140 #define TFC_DIP_SWITCH_3_ON ((TFC_GetDIP_Switch()&0x08)>0)
backman 19:4869b10a962e 141
backman 19:4869b10a962e 142
backman 19:4869b10a962e 143 /** Initialized the TFC API. Call before using any other API calls.
backman 19:4869b10a962e 144 *
backman 19:4869b10a962e 145 */
backman 19:4869b10a962e 146 void TFC_Init();
backman 19:4869b10a962e 147
backman 19:4869b10a962e 148 /** ServoTicker will increment once every servo cycle.
backman 19:4869b10a962e 149 * It can be used to synchronize events to the start of a servo cycle. ServoTicker is a volatile uint32_t and is updated in the TPM1 overlflow interrupt. This means you will see ServoTicker increment on the rising edge of the servo PWM signal
backman 19:4869b10a962e 150 *
backman 19:4869b10a962e 151 */
backman 19:4869b10a962e 152 extern volatile uint32_t TFC_ServoTicker;
backman 19:4869b10a962e 153
backman 19:4869b10a962e 154
backman 19:4869b10a962e 155 /** Gets the state of the 4-positiomn DIP switch on the FRDM-TFC
backman 19:4869b10a962e 156 *
backman 19:4869b10a962e 157 * @returns The lower 4-bits of the return value map to the 4-bits of the DIP switch
backman 19:4869b10a962e 158 */
backman 19:4869b10a962e 159 uint8_t TFC_GetDIP_Switch();
backman 19:4869b10a962e 160
backman 19:4869b10a962e 161
backman 19:4869b10a962e 162 /** Reads the state of the pushbuttons (SW1, SW2) on the FRDM-TFC
backman 19:4869b10a962e 163 * @param Index Selects the pushbutton (0 for SW1 and 1 for SW2)
backman 19:4869b10a962e 164 * @returns A non-zero value if the button is pushed
backman 19:4869b10a962e 165 */
backman 19:4869b10a962e 166 uint8_t TFC_ReadPushButton(uint8_t Index);
backman 19:4869b10a962e 167
backman 19:4869b10a962e 168
backman 19:4869b10a962e 169 /** Controls the 4 battery level LEDs on the FRDM-TFC boards.
backman 19:4869b10a962e 170 *
backman 19:4869b10a962e 171 * @param Value The lower 4-bits of the parameter maps to the 4 LEDs.
backman 19:4869b10a962e 172 */
backman 19:4869b10a962e 173 void TFC_SetBatteryLED(uint8_t Value);
backman 19:4869b10a962e 174
backman 19:4869b10a962e 175
backman 19:4869b10a962e 176 /** Sets the servo channels
backman 19:4869b10a962e 177 *
backman 19:4869b10a962e 178 * @param ServoNumber Which servo channel on the FRDM-TFC to use (0 or 1). 0 is the default channel for steering
backman 19:4869b10a962e 179 * @param Position Angle setting for servo in a normalized (-1.0 to 1.0) form. The range of the servo can be changed with the InitServos function.
backman 19:4869b10a962e 180 * This is called in the TFC constructor with some useful default values--> 20mSec period, 0.5mS min and 2.0mSec max. you may need to adjust these for your own particular setup.
backman 19:4869b10a962e 181 */
backman 19:4869b10a962e 182 void TFC_SetServo(uint8_t ServoNumber, float Position);
backman 19:4869b10a962e 183
backman 19:4869b10a962e 184 /** Initializes TPM for the servoes. It also sets the max and min ranges
backman 19:4869b10a962e 185 *
backman 19:4869b10a962e 186 * @param ServoPulseWidthMin Minimum pulse width (in seconds) for the servo. The value of -1.0 in SetServo is mapped to this pulse width. I.E. .001
backman 19:4869b10a962e 187 * @param ServoPulseWidthMax Maximum pulse width (in seconds) for the servo. The value of +1.0 in SetServo is mapped to this pulse width. I.E. .002
backman 19:4869b10a962e 188 * @param ServoPeriod Period of the servo pulses (in seconds). I.e. .020 for 20mSec
backman 19:4869b10a962e 189 */
backman 19:4869b10a962e 190
backman 19:4869b10a962e 191 void TFC_InitServos(float ServoPulseWidthMin, float ServoPulseWidthMax, float ServoPeriod);
backman 19:4869b10a962e 192
backman 19:4869b10a962e 193
backman 19:4869b10a962e 194 /** Initialized TPM0 to be used for generating PWM signals for the the dual drive motors. This method is called in the TFC constructor with a default value of 4000.0Hz
backman 19:4869b10a962e 195 *
backman 19:4869b10a962e 196 * @param SwitchingFrequency PWM Switching Frequency in floating point format. Pick something between 1000 and 9000. Maybe you can modulate it and make a tune.
backman 19:4869b10a962e 197 */
backman 19:4869b10a962e 198 void TFC_InitMotorPWM(float SwitchingFrequency);
backman 19:4869b10a962e 199
backman 19:4869b10a962e 200 /** Sets the PWM value for each motor.
backman 19:4869b10a962e 201 *
backman 19:4869b10a962e 202 * @param MotorA The PWM value for HBridgeA. The value is normalized to the floating point range of -1.0 to +1.0. -1.0 is 0% (Full Reverse on the H-Bridge) and 1.0 is 100% (Full Forward on the H-Bridge)
backman 19:4869b10a962e 203 * @param MotorB The PWM value for HBridgeB. The value is normalized to the floating point range of -1.0 to +1.0. -1.0 is 0% (Full Reverse on the H-Bridge) and 1.0 is 100% (Full Forward on the H-Bridge)
backman 19:4869b10a962e 204 */
backman 19:4869b10a962e 205 void TFC_SetMotorPWM(float MotorA ,float MotorB);
backman 19:4869b10a962e 206
backman 19:4869b10a962e 207 /** Reads the potentiometers
backman 19:4869b10a962e 208 *
backman 19:4869b10a962e 209 * @param Channel Selects which pot is read. I.e. 0 for POT0 or 1 for POT1
backman 19:4869b10a962e 210 * @returns Pot value from -1.0 to 1.0
backman 19:4869b10a962e 211 */
backman 19:4869b10a962e 212 float TFC_ReadPot(uint8_t Channel);
backman 19:4869b10a962e 213
backman 19:4869b10a962e 214 /** Gets the current battery voltage
backman 19:4869b10a962e 215 *
backman 19:4869b10a962e 216 * @returns Battery voltage in floating point form.
backman 19:4869b10a962e 217 */
backman 19:4869b10a962e 218 float TFC_ReadBatteryVoltage();
backman 19:4869b10a962e 219
backman 19:4869b10a962e 220
backman 19:4869b10a962e 221
backman 19:4869b10a962e 222 /** Sets the Battery level indiciate
backman 19:4869b10a962e 223 *
backman 19:4869b10a962e 224 * @param BattLevel A number betwween 0 and 4. This will light the bar from left to right with the specifified number of segments.
backman 19:4869b10a962e 225 *
backman 19:4869b10a962e 226 */
backman 19:4869b10a962e 227 void TFC_SetBatteryLED_Level(uint8_t BattLevel);
backman 19:4869b10a962e 228
backman 19:4869b10a962e 229
backman 19:4869b10a962e 230 /** Pointer to two channels of line scan camera data. Each channel is 128 points of uint8_t's. Note that the underlying implementation is ping-pong buffer These pointers will point to the
backman 19:4869b10a962e 231 *inactive buffer.
backman 19:4869b10a962e 232 *
backman 19:4869b10a962e 233 */
backman 19:4869b10a962e 234
backman 19:4869b10a962e 235 extern volatile uint16_t * TFC_LineScanImage0;
backman 19:4869b10a962e 236 extern volatile uint16_t * TFC_LineScanImage1;
backman 19:4869b10a962e 237
backman 19:4869b10a962e 238
backman 19:4869b10a962e 239 /** This flag will increment when a new frame is ready. Check for a non zero value (and reset to zero!) when you want to read the camera(s)
backman 19:4869b10a962e 240 *
backman 19:4869b10a962e 241 */
backman 19:4869b10a962e 242
backman 19:4869b10a962e 243 extern volatile uint8_t TFC_LineScanImageReady;
backman 19:4869b10a962e 244
backman 19:4869b10a962e 245
backman 19:4869b10a962e 246
backman 19:4869b10a962e 247
backman 19:4869b10a962e 248
backman 19:4869b10a962e 249 /** @} */
backman 19:4869b10a962e 250
backman 19:4869b10a962e 251
backman 19:4869b10a962e 252 #endif