summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp146
1 files changed, 1 insertions, 145 deletions
diff --git a/main.cpp b/main.cpp
index 47e7c51..3b43d9d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,86 +1,11 @@
#include "stm32.h"
+#include "rcc.h"
#include "interrupt.h"
#include "thread.h"
#include "time.h"
-#include "ppmsum.h"
-#include "i2c.h"
-
-#include "ahrs.h"
-#include "telemetry.h"
-
-#include "usart.h"
-#include "xbee.h"
-#include "gps.h"
-
#include "pin.h"
-template<class T>
-inline void saturate(T& var, T absmax) {
- if(var > absmax) {
- var = absmax;
- } else if(var < -absmax) {
- var = -absmax;
- }
-}
-
-template<class T>
-inline T limit(T var, T min, T max) {
- if(var < min) {
- return min;
- } else if(var > max) {
- return max;
- } else {
- return var;
- }
-}
-
-class PID {
- private:
- uint16_t Kp, Ki, Kd;
-
- int16_t last;
- int32_t accum;
-
- public:
- PID(uint16_t p, uint16_t i, uint16_t d) : Kp(p), Ki(i), Kd(d), last(0), accum(0) {}
-
- int16_t update(int16_t error) {
- // P
- int32_t corr_p = Kp * error;
-
- // I
- accum += Ki * error;
- int32_t corr_i = accum;
-
- // D
- int32_t corr_d = Kd * (error - last);
- last = error;
-
- return (corr_p + corr_i + corr_d) >> 16;
- }
-};
-
-AHRS ahrs(I2C1);
-
-volatile uint16_t motors[4];
-
-//GPS gps;
-
-void gps_thread_main() {
- while(1) {
- //P<GPSMsg> msg = gps.read();
-
- //if(msg->n < 128) {
- // xbee_send(2, msg->n, msg->buf);
- //}
- }
-}
-
-uint32_t gps_stack[256];
-
-Thread gps_thread(gps_stack, sizeof(gps_stack), gps_thread_main);
-
static Pin& led_green = PD12;
static Pin& led_yellow = PD13;
static Pin& led_red = PD14;
@@ -100,44 +25,6 @@ int main() {
led_red.set_mode(Pin::Output);
led_blue.set_mode(Pin::Output);
- //RCC.enable(RCC.DMA1);
- //RCC.enable(RCC.ADC1);
-
- PB6.set_af(7);
- PB7.set_af(7);
- PB6.set_mode(Pin::Output);
- PB7.set_mode(Pin::Output);
-
- // Give all hardware enough time to initialize.
- Time::sleep(200);
-
- I2C1.enable(PB8, PB9);
- ahrs.init();
-
- //PPMSum ppmsum;
- //ppmsum.enable();
-
- //RCC.enable(RCC.TIM2);
- //TIM2.PSC = 72;
- //TIM2.ARR = 5000;
- //TIM2.CCER = 0x1111;
- //TIM2.CCMR1 = 0x6868;
- //TIM2.CCMR2 = 0x6868;
-
- //TIM2.CR1 = 0x05;
-
- //PID pid_pitch(6000, 0, 0);
- //PID pid_roll(6000, 0, 0);
- //PID pid_yaw(6000, 0, 0);
-
- RCC.enable(RCC.USART1);
-
- usart_enable();
- //gps.enable();
-
- telemetry_thread.start();
- //gps_thread.start();
-
while(1) {
led_green.on();
Time::sleep(100);
@@ -154,36 +41,5 @@ int main() {
led_blue.on();
Time::sleep(100);
led_blue.off();
-
- // Wait for a new update.
- //while(!(TIM2.SR & 0x01)) {
- // Thread::yield();
- //}
- //TIM2.SR = 0;
-
- // Update AHRS.
- ahrs.update();
-
- // Update filter.
- //int16_t throttle = ppmsum.channels[2] - 1000;
- //int16_t pitch = pid_pitch.update((ppmsum.channels[1] - 1500) * 1 - ahrs.gyro.x);
- //int16_t roll = pid_roll.update((ppmsum.channels[0] - 1500) * 1 - ahrs.gyro.y);
- //int16_t yaw = pid_yaw.update((ppmsum.channels[3] - 1500) * -1 - ahrs.gyro.z);
-
- //int16_t max = throttle > 250 ? 250 : throttle;
- //saturate(pitch, max);
- //saturate(roll, max);
- //saturate(yaw, max);
-
- // Generate motor mix.
- //motors[0] = limit(throttle + pitch - roll + yaw, 0, 1000);
- //motors[1] = limit(throttle - pitch - roll - yaw, 0, 1000);
- //motors[2] = limit(throttle - pitch + roll + yaw, 0, 1000);
- //motors[3] = limit(throttle + pitch + roll - yaw, 0, 1000);
-
- //TIM2.CCR1 = 1000 + motors[0];
- //TIM2.CCR2 = 1000 + motors[1];
- //TIM2.CCR3 = 1000 + motors[2];
- //TIM2.CCR4 = 1000 + motors[3];
}
}