From 92235fb259b0ebdfc99859c2c95fe1f8c163f411 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 8 Nov 2016 20:09:05 -0500 Subject: trying out distortos --- vexuser.cpp | 207 ------------------------------------------------------------ 1 file changed, 207 deletions(-) delete mode 100644 vexuser.cpp (limited to 'vexuser.cpp') diff --git a/vexuser.cpp b/vexuser.cpp deleted file mode 100644 index 8bd3088..0000000 --- a/vexuser.cpp +++ /dev/null @@ -1,207 +0,0 @@ -#include -#include - -#include "ch.h" // needs for all ChibiOS programs -#include "hal.h" // hardware abstraction layer header -#include "vex.h" // vex library header - -#include -#include - -//static WORKING_AREA(waVexIME, 512); -//static msg_t vexIME(void *); - -// Digi IO configuration -static vexDigiCfg dConfig[] = { -}; - -static vexMotorCfg mConfig[] = { - { MOTOR_CFG_MOT(mClawThingy, 393T, Normal), MOTOR_CFG_NOIME }, - { MOTOR_CFG_MOT(mDriveFrontLeft, 393T, Normal), MOTOR_CFG_NOIME }, - { MOTOR_CFG_MOT(mDriveFrontRight, 393T, Reversed), MOTOR_CFG_NOIME }, - { MOTOR_CFG_MOT(mDriveBackLeft, 393T, Reversed), MOTOR_CFG_NOIME }, - { MOTOR_CFG_MOT(mDriveBackRight, 393T, Normal), MOTOR_CFG_NOIME }, - { MOTOR_CFG_MOT(mLiftLowRight, 393T, Normal), MOTOR_CFG_IME(iLiftLowRight) }, - { MOTOR_CFG_MOT(mLiftHighRight, 393T, Normal), MOTOR_CFG_IME(iLiftHighRight) }, - { MOTOR_CFG_MOT(mLiftLowLeft, 393T, Normal), MOTOR_CFG_IME(iLiftLowLeft) }, - { MOTOR_CFG_MOT(mLiftHighLeft, 393T, Normal), MOTOR_CFG_IME(iLiftHighLeft) }, - { MOTOR_CFG_MOT(mPickupThingy, 393T, Normal), MOTOR_CFG_NOIME } -}; - -void vexUserSetup(void) -{ - vexDigitalConfigure(dConfig, DIG_CONFIG_SIZE(dConfig)); - vexMotorConfigure(mConfig, MOT_CONFIG_SIZE(mConfig)); -} - -void vexUserInit(void) -{} - -#define AIRCR_ADDR 0xE000ED0C -#define VECTKEY 0x05FA -#define SYSRESETREQ (1<<2) -#define VECTRESET (1<<0) - -void softwareReset(void){ - uint32_t AIRCR = *((uint32_t *)AIRCR_ADDR); - AIRCR = (AIRCR & 0xFFFF) | (VECTKEY << 16) | SYSRESETREQ | VECTRESET; - *((volatile uint32_t *)0xE000ED0C) = AIRCR; - asm("DSB"); - while(1); -} - -msg_t vexAutonomous(void* arg) -{ - (void)arg; - - vexTaskRegister("auton"); - - vexMotorSet(mClawThingy, -127); - vexMotorSet(mPickupThingy, -64); - vexSleep(300); - vexMotorSet(mClawThingy, 0); - vexMotorSet(mPickupThingy, 0); - - vexMotorSet(mDriveFrontLeft, -127); - vexMotorSet(mDriveFrontRight, -127); - vexMotorSet(mDriveBackLeft, -127); - vexMotorSet(mDriveBackRight, -127); - vexSleep(3000); - vexMotorSet(mDriveFrontLeft, 30); - vexMotorSet(mDriveFrontRight, 30); - vexMotorSet(mDriveBackLeft, 30); - vexMotorSet(mDriveBackRight, 30); - vexSleep(1000); - vexMotorSet(mDriveFrontLeft, 0); - vexMotorSet(mDriveFrontRight, 0); - vexMotorSet(mDriveBackLeft, 0); - vexMotorSet(mDriveBackRight, 0); - - while(1) - vexSleep(25); - - return (msg_t)0; -} - -int doubleButton(int btnp, int btnn, int speed); - -msg_t vexOperator(void* arg) -{ - Controller joyMain (1); - - (void)arg; - - vexTaskRegister("operator"); - - //chThdCreateStatic(waVexIME, sizeof(waVexIME), NORMALPRIO - 1, vexIME, nullptr); - - while(!chThdShouldTerminate()) { - - // control update - joyMain.update(); - - // drive motors - int dx = joyMain->Ch4, dy = -joyMain->Ch3; - vexMotorSet(mDriveFrontLeft, dy - dx); - vexMotorSet(mDriveFrontRight, dy + dx); - vexMotorSet(mDriveBackLeft, dy - dx); - vexMotorSet(mDriveBackRight, dy + dx); - - // lift motors -#ifndef NEW_LIFT - int ly = joyMain->Ch2; - vexMotorSet(mLiftLowRight, ly); - vexMotorSet(mLiftHighRight, ly); - vexMotorSet(mLiftLowLeft, ly); - vexMotorSet(mLiftHighLeft, ly); -#else - if (joyMain->Btn8U) - motorCountInc(); - else if (joyMain->Btn7D) - motorCountDec(); -#endif // NEW_LIFT - - // lift thingy - vexMotorSet(mPickupThingy, doubleButton(joyMain->Btn5U, joyMain->Btn5D, 64)); - - // claw thingy - vexMotorSet(mClawThingy, doubleButton(joyMain->Btn6U, joyMain->Btn6D, 127)); - - if (joyMain->Btn8R) - softwareReset(); - - vexSleep(25); - } - - return (msg_t)0; -} - - -int doubleButton(int btnp, int btnn, int speed) -{ - return (btnp ? speed : (btnn ? -speed : 0)); -} - -extern "C" { - void _exit(int code) { - (void)code; - - vexLcdPrintf(0, 0, "PANIC: exit(%d)", code); - vexLcdPrintf(0, 1, "Halting..."); - - while(1); - } - void _kill(pid_t pid) { - (void)pid; - // no way to kill here - } - pid_t _getpid(void) { - // no pids here - return 0; - } -} - -/*using CountTuple = std::tuple; - -static std::array MotorCounts = { - std::make_tuple(mLiftLowLeft, iLiftLowLeft, 0), - std::make_tuple(mLiftHighLeft, iLiftHighLeft, 0), - std::make_tuple(mLiftLowRight, iLiftLowRight, 0), - std::make_tuple(mLiftHighRight, iLiftHighRight, 0) -}; - -void -motorCountInc(void) -{ - for (auto &c : MotorCounts) - std::get<2>(c) += 10; -} - -void -motorCountDec(void) -{ - for (auto &c : MotorCounts) - std::get<2>(c) -= 10; -} - -static msg_t -vexIME(void *arg) -{ - (void)arg; - - vexTaskRegister("uime"); - - while (1) { - for (auto &c : MotorCounts) { - auto count = vexImeGetPtr(std::get<1>(c))->count; - auto comp = std::get<2>(c); - - if (count > comp) - vexMotorSet(vexMotorGet(std::get<0>(c)) - 2); - else if(count < comp) - vexMotorSet(vexMotorGet(std::get<0>(c)) + 2); - } - - vexSleep(100); - } -}*/ -- cgit v1.2.3