Elisa3
|
00001 #include "constants.h" 00002 00003 /***********/ 00004 /*** ADC ***/ 00005 /***********/ 00006 extern volatile unsigned char currentAdChannel; 00007 extern unsigned char currentProx; 00008 extern unsigned char currentMotLeftChannel; 00009 extern unsigned char currentMotRightChannel; 00010 extern unsigned char rightMotorPhase; 00011 extern unsigned char leftMotorPhase; 00012 extern volatile unsigned int proximityValue[24]; 00013 extern int proximityResult[12]; 00014 extern signed int proximityOffset[12]; 00015 extern unsigned long proximitySum[12]; 00016 extern unsigned char adcSaveDataTo; 00017 extern unsigned char adcSamplingState; 00018 extern unsigned char rightChannelPhase; 00019 extern unsigned char leftChannelPhase; 00020 extern unsigned int batteryLevel; 00021 extern unsigned char measBattery; 00022 extern unsigned char proxUpdated; 00023 extern int proximityResultLinear[8]; 00024 float rightMotSteps; 00025 float leftMotSteps; 00026 float rightMotStepsOld; 00027 float leftMotStepsOld; 00028 00029 /******************************/ 00030 /*** CONSUMPTION CONTROLLER ***/ 00031 /******************************/ 00032 extern unsigned int left_current_avg; 00033 extern unsigned int right_current_avg; 00034 extern unsigned int last_left_current; 00035 extern unsigned int last_right_current; 00036 00037 /************************/ 00038 /*** SPEED CONTROLLER ***/ 00039 /************************/ 00040 extern signed int pwm_right_desired_to_control; 00041 extern signed int pwm_left_desired_to_control; 00042 extern unsigned int left_vel_sum; 00043 extern unsigned int right_vel_sum; 00044 extern signed int last_left_vel; 00045 extern signed int last_right_vel; 00046 extern signed int pwm_right; 00047 extern signed int pwm_left; 00048 extern signed int pwm_right_desired; 00049 extern signed int pwm_left_desired; 00050 extern signed int pwm_intermediate_right_desired; 00051 extern signed int pwm_intermediate_left_desired; 00052 extern signed int k_ff_speed_control_left; 00053 extern signed int k_ff_speed_control_right; 00054 extern signed long int pwm_right_speed_controller; 00055 extern signed long int pwm_left_speed_controller; 00056 extern signed int delta_left_speed_current; 00057 extern signed int delta_right_speed_current; 00058 extern signed int delta_left_speed_prev; 00059 extern signed int delta_right_speed_prev; 00060 extern signed int delta_left_speed_sum; 00061 extern signed int delta_right_speed_sum; 00062 extern unsigned char compute_left_vel; 00063 extern unsigned char compute_right_vel; 00064 extern signed int pwm_right_working; 00065 extern signed int pwm_left_working; 00066 extern unsigned char firstSampleRight; 00067 extern unsigned char firstSampleLeft; 00068 00069 /***********/ 00070 /*** NRF ***/ 00071 /***********/ 00072 extern unsigned int dataLED[3]; 00073 extern signed int speedl; 00074 extern signed int speedr; 00075 extern unsigned char rfData[PAYLOAD_SIZE]; 00076 extern unsigned char ackPayload[16]; 00077 extern unsigned char packetId; 00078 extern unsigned int rfAddress; 00079 extern unsigned char rfFlags; 00080 extern unsigned char spiCommError; 00081 extern unsigned char rfDebugMode; 00082 extern unsigned char rfDebugCounter; 00083 00084 /****************/ 00085 /*** RGB LEDS ***/ 00086 /****************/ 00087 extern unsigned char pwm_red; 00088 extern unsigned char pwm_green; 00089 extern unsigned char pwm_blue; 00090 extern unsigned char blinkState; 00091 extern unsigned char rgbState; 00092 00093 /************/ 00094 /*** UART ***/ 00095 /************/ 00096 extern unsigned char peripheralChoice; 00097 extern unsigned char choosePeripheral; 00098 extern unsigned char sendAdcValues; 00099 extern unsigned char commError; 00100 extern unsigned int byteCount; 00101 extern unsigned char uartBuff[UART_BUFF_SIZE]; 00102 extern unsigned char nextByteIndex; 00103 extern unsigned char currByteIndex; 00104 extern unsigned char chooseMenu; 00105 extern unsigned char menuChoice; 00106 extern unsigned char addressReceived; 00107 extern unsigned char menuState; 00108 extern unsigned char getDataNow; 00109 00110 /*************************/ 00111 /*** IR REMOTE CONTROL ***/ 00112 /*************************/ 00113 extern unsigned char irCommand; 00114 extern unsigned char command_received; 00115 extern unsigned char colorState; 00116 extern unsigned char irEnabled; 00117 extern unsigned char checkGlitch; 00118 extern unsigned char behaviorState; 00119 00120 /*********************/ 00121 /*** ACCELEROMETER ***/ 00122 /*********************/ 00123 extern int accelAddress; 00124 extern unsigned char useAccel; 00125 extern signed int accX; 00126 extern signed int accY; 00127 extern signed int accZ; 00128 extern signed int accOffsetX; 00129 extern signed int accOffsetY; 00130 extern signed int accOffsetZ; 00131 extern signed int accOffsetXSum; 00132 extern signed int accOffsetYSum; 00133 extern signed int accOffsetZSum; 00134 extern signed int currentAngle; 00135 extern unsigned char currPosition; 00136 extern unsigned int timesInSamePos; 00137 extern unsigned char robotPosition; 00138 extern signed char accBuff[6]; 00139 00140 /***************/ 00141 /*** VARIOUS ***/ 00142 /***************/ 00143 extern uint32_t clockTick; 00144 extern unsigned char currentSelector; 00145 extern signed int calibrationCycle; 00146 extern unsigned char startCalibration; 00147 extern unsigned char hardwareRevision; 00148 extern unsigned char demoState; 00149 extern unsigned char lineFound; 00150 extern unsigned char outOfLine; 00151 extern unsigned char chargeContact; 00152 extern unsigned long int demoStartTime; 00153 extern unsigned long int demoStartTime2; 00154 extern unsigned long int demoEndTime; 00155 extern unsigned char currentOsccal; 00156 extern unsigned long long int speedStepCounter; 00157 extern unsigned char speedStep; 00158 extern unsigned char softAccEnabled; 00159 extern unsigned char calibrationWritten; 00160 extern unsigned char greenLedState; 00161 extern unsigned char rgbLedState; 00162 00163 /**************************/ 00164 /*** OBSTACLE AVOIDANCE ***/ 00165 /**************************/ 00166 extern unsigned char obstacleAvoidanceEnabled; 00167 00168 /***********************/ 00169 /*** CLIFF AVOIDANCE ***/ 00170 /***********************/ 00171 extern unsigned char cliffAvoidanceEnabled; 00172 extern unsigned char cliffDetectedFlag; 00173 00174 /****************/ 00175 /*** ODOMETRY ***/ 00176 /****************/ 00177 extern float theta, lastTheta, xPos, yPos, deltaDist; 00178 extern float thetaOld, xPosOld, yPosOld, deltaDistOld; 00179 extern float leftDist, rightDist, leftDistPrev, rightDistPrev; 00180 extern unsigned char computeOdometry; 00181 extern float thetaAcc; 00182 extern unsigned char calibState; 00183 extern unsigned char calibVelIndex; 00184 extern unsigned char calibWheel; 00185 extern signed int tempVel; 00186 extern signed int calibration[CALIBRATION_SAMPLES][8]; 00187 extern unsigned long int timeoutOdometry; 00188 extern unsigned long timeOdometry; 00189 extern unsigned char calibrateOdomFlag; 00190 extern signed long int leftSpeedSumOdom; 00191 extern signed long int rightSpeedSumOdom; 00192 extern unsigned int leftSumCount; 00193 extern unsigned int rightSumCount; 00194 extern signed int avgLeftSpeed; 00195 extern signed int avgRightSpeed; 00196 extern signed int speedLeftFromEnc; 00197 extern signed int speedRightFromEnc; 00198 extern uint32_t timeLeftOdom; 00199 extern uint32_t timeRightOdom; 00200 00201 /***************/ 00202 /*** IR COMM ***/ 00203 /***************/ 00204 extern unsigned char irCommEnabled; 00205 extern unsigned char irCommEnabledNext; 00206 extern unsigned char irCommMode; 00207 extern volatile unsigned char irCommState; 00208 extern unsigned int irCommTempValue; 00209 extern volatile unsigned char irCommSendValues; 00210 extern unsigned long int irCommTickCounter; 00211 extern unsigned long int irCommTickCounter2; 00212 extern unsigned char irCommTickCounterUpdate; 00213 extern signed char irCommLastSensor; 00214 extern signed int irCommLastData; 00215 00216 // demo 00217 extern signed int angleDeg; 00218 extern signed int angleError; 00219 extern unsigned char angleDegEncode; 00220 extern unsigned char irCommRobotId; 00221 extern unsigned char irCommRobotsNum; 00222 extern unsigned char irCommLedToggle; 00223 extern unsigned char irCommMsgCount; 00224 00225 // debug 00226 extern signed int irCommMaxSensorSignalTemp[IRCOMM_SAMPLING_WINDOW*2]; 00227 extern unsigned char irCommMaxSensorSignalIndexTemp; 00228 extern signed int irCommMaxSensorSignalFiltTemp[IRCOMM_SAMPLING_WINDOW*2]; 00229 extern unsigned char irCommMaxSensorSignalFiltIndexTemp; 00230 extern signed int irCommRxMaxSensorTemp[2]; 00231 extern unsigned char irCommRxMaxSensorIndexTemp; 00232 extern signed int irCommRxMaxDiffTemp[2]; 00233 extern unsigned char irCommRxMaxDiffIndexTemp; 00234 extern signed int irCommProxMeanTemp[2]; 00235 extern unsigned char irCommProxMeanIndexTemp; 00236 extern unsigned char irCommSwitchCountTemp[2]; 00237 extern unsigned char irCommSwitchCountIndexTemp; 00238 extern unsigned int irCommMaxSensorValueCurrTemp[2]; 00239 extern unsigned char irCommMaxSensorValueCurrIndexTemp; 00240 extern unsigned int irCommMinSensorValueCurrTemp[2]; 00241 extern unsigned char irCommMinSensorValueCurrIndexTemp; 00242 extern unsigned char irCommShiftCountTemp[2]; 00243 extern unsigned char irCommShiftCountIndexTemp; 00244 extern unsigned char irCommShiftCountFinalTemp[2]; 00245 extern unsigned char irCommShiftCountFinalIndexTemp; 00246 extern unsigned int irCommStartDiffTemp[2]; 00247 extern unsigned char irCommStartDiffIndexTemp; 00248 extern unsigned char irCommComputeShiftTemp[2]; 00249 extern unsigned char irCommComputeShiftIndexTemp; 00250 extern unsigned char irCommRxPeakHighToLowTemp[2]; 00251 extern unsigned char irCommRxPeakHighToLowIndexTemp; 00252 extern unsigned char irCommRxStartPeakDurationTemp[2]; 00253 extern unsigned char irCommRxStartPeakDurationIndexTemp; 00254 extern unsigned char irCommRxStartBitDetectedTemp[2]; 00255 extern unsigned char irCommRxStartBitDetectedIndexTemp; 00256 extern unsigned char irCommStateTemp[14]; 00257 extern unsigned char irCommStateIndexTemp; 00258 extern unsigned char irCommSyncStateTemp[2]; 00259 extern unsigned char irCommSyncStateIndexTemp; 00260 extern signed int irCommBitsSignalTemp[IRCOMM_SAMPLING_WINDOW*10]; 00261 extern unsigned char irCommBitsSignalIndexTemp; 00262 extern unsigned char irCommRxBitReceivedTemp[10]; 00263 extern unsigned char irCommRxBitReceivedIndexTemp; 00264 extern unsigned char irCommRxPrevDataReceived; 00265 00266 // reception 00267 extern unsigned char irCommAdcRxState; 00268 extern unsigned char irCommRxWindowSamples; 00269 extern unsigned int irCommMaxSensorValueBuff1[8]; 00270 extern unsigned int irCommMaxSensorValueBuff2[8]; 00271 extern unsigned int *irCommMaxSensorValueAdc; 00272 extern unsigned int *irCommMaxSensorValueCurr; 00273 extern unsigned int irCommMinSensorValueBuff1[8]; 00274 extern unsigned int irCommMinSensorValueBuff2[8]; 00275 extern unsigned int *irCommMinSensorValueAdc; 00276 extern unsigned int *irCommMinSensorValueCurr; 00277 extern unsigned int irCommProxValuesBuff1[8*IRCOMM_SAMPLING_WINDOW]; 00278 extern unsigned int irCommProxValuesBuff2[8*IRCOMM_SAMPLING_WINDOW]; 00279 extern unsigned int *irCommProxValuesAdc; 00280 extern unsigned int *irCommProxValuesCurr; 00281 extern unsigned int *irCommTempPointer; 00282 extern unsigned char irCommRxCrc; 00283 extern signed int irCommMaxSensorSignal[IRCOMM_SAMPLING_WINDOW]; 00284 extern signed long int irCommProxSum; 00285 extern signed int irCommTempMax; 00286 extern signed int irCommTempMin; 00287 extern unsigned char irCommShiftCount; 00288 extern unsigned char irCommComputeShift; 00289 extern signed int irCommProxMean; 00290 extern signed char irCommSignalState; 00291 extern unsigned char irCommSwitchCount; 00292 extern unsigned char irCommRxBitCount; 00293 extern unsigned char irCommRxCrcError; 00294 extern unsigned char irCommRxByte; 00295 extern unsigned char irCommSecondBitSkipped; 00296 extern unsigned char irCommShiftCounter; 00297 extern unsigned char irCommRxBitReceived[10]; 00298 extern unsigned char irCommRxByteExpected; 00299 extern unsigned char irCommRxSequenceCount; 00300 extern unsigned char irCommRxLastDataReceived; 00301 extern unsigned char irCommRxDataAvailable; 00302 extern signed char irCommRxReceivingSensor; 00303 extern unsigned char irCommRxBitSkipped; 00304 extern unsigned char irCommRxStartBitDetected; 00305 extern unsigned char irCommRxPeakHighToLow; 00306 extern unsigned char irCommRxStartPeakDuration; 00307 extern signed int irCommRxMaxDiff; 00308 extern signed int irCommRxMaxSensor; 00309 extern unsigned char irCommRxNumReceivingSensors; 00310 00311 // transmission 00312 extern unsigned char irCommAdcTxState; 00313 extern unsigned char irCommTxByte; 00314 extern unsigned char irCommTxByteEnqueued; 00315 extern unsigned long int irCommTxLastTransmissionTime; 00316 extern unsigned char irCommTxBitToTransmit[12]; 00317 extern unsigned char irCommTxCrc; 00318 extern unsigned char irCommTxBitCount; 00319 extern unsigned char irCommTxPulseState; 00320 extern unsigned int irCommTxDuration; 00321 extern unsigned char irCommTxSwitchCount; 00322 extern unsigned char irCommTxSwitchCounter; 00323 extern unsigned char irCommTxDurationCycle; 00324 extern unsigned char irCommTxSensorMask; 00325 extern unsigned char irCommTxSensorGroup; 00326 00327 00328 00329 00330 00331 00332 00333 00334