2014 sift / Mbed 2 deprecated TVDctrller2017_brdRev1_PandA

Dependencies:   mbed

Fork of TVDctrller2017_brdRev1_ver6 by 2014 sift

Committer:
sift
Date:
Sat Jul 01 00:26:28 2017 +0000
Revision:
25:c21d35c7f0de
Parent:
24:1de0291bc5eb
Child:
26:331e77bb479b
??????????????????; (????????? ???)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sift 0:276c1dab2d62 1 #include "mbed.h"
sift 0:276c1dab2d62 2 #include "TVDCTRL.h"
sift 2:9d69f27a3d3b 3 #include "Steering.h"
sift 0:276c1dab2d62 4 #include "MCP4922.h"
sift 25:c21d35c7f0de 5 #include "Global.h"
sift 0:276c1dab2d62 6
sift 2:9d69f27a3d3b 7 Serial pc(USBTX, USBRX); // tx, rx
sift 2:9d69f27a3d3b 8
sift 0:276c1dab2d62 9 ////////////////////////////////////////
sift 0:276c1dab2d62 10 //IO宣言
sift 0:276c1dab2d62 11 SPI spi(p5,p6,p7);
sift 24:1de0291bc5eb 12 MCP4922 mcp(p5,p7,p8); // MOSI, SCLK, CS
sift 24:1de0291bc5eb 13 DigitalOut ioExpCs(p9);
sift 24:1de0291bc5eb 14 DigitalOut indicatorLed(p10);
sift 24:1de0291bc5eb 15 DigitalOut shutDown(p11);
sift 24:1de0291bc5eb 16 DigitalOut brakeSignal(p12);
sift 25:c21d35c7f0de 17 DigitalIn sdState(p13);
sift 24:1de0291bc5eb 18 DigitalIn RTDSW(p14);
sift 24:1de0291bc5eb 19 AnalogIn apsS(p15); //"S"econdary
sift 24:1de0291bc5eb 20 AnalogIn apsP(p16); //"P"rimary
sift 0:276c1dab2d62 21 AnalogIn brake(p17);
sift 19:571a4d00b89c 22 AnalogOut STR2AN(p18);
sift 24:1de0291bc5eb 23 DigitalIn SLCTSW[3] = {p19, p20, p21};
sift 24:1de0291bc5eb 24 InterruptIn rightMotorPulse(p22);
sift 24:1de0291bc5eb 25 InterruptIn leftMotorPulse(p23);
sift 24:1de0291bc5eb 26 InterruptIn rightTirePulse1(p24);
sift 24:1de0291bc5eb 27 InterruptIn rightTirePulse2(p25);
sift 24:1de0291bc5eb 28 InterruptIn leftTirePulse1(p26);
sift 24:1de0291bc5eb 29 InterruptIn leftTirePulse2(p27);
sift 24:1de0291bc5eb 30 DigitalOut WDT(p28);
sift 19:571a4d00b89c 31 CAN can(p30, p29);
sift 0:276c1dab2d62 32
sift 0:276c1dab2d62 33 DigitalOut LED[] = {LED1, LED2, LED3, LED4};
sift 0:276c1dab2d62 34
sift 0:276c1dab2d62 35 #define indicateSystem(x) (indicatorLed.write(x))
sift 0:276c1dab2d62 36 #define shutdownSystem(void) (shutDown.write(0))
sift 0:276c1dab2d62 37 #define bootSystem(void) (shutDown.write(1))
sift 0:276c1dab2d62 38 #define isPressedRTD(void) (!RTDSW.read())
sift 0:276c1dab2d62 39 #define isShutdownSystem(void) (SDState.read())
sift 0:276c1dab2d62 40
sift 2:9d69f27a3d3b 41 Timer timer;
sift 2:9d69f27a3d3b 42
sift 0:276c1dab2d62 43 void initIO(void)
sift 0:276c1dab2d62 44 {
sift 0:276c1dab2d62 45 indicatorLed = 0;
sift 0:276c1dab2d62 46 shutDown = 0;
sift 25:c21d35c7f0de 47 brakeSignal = 0;
sift 0:276c1dab2d62 48 LED[0] = LED[1] = LED[2] = LED[3] = 0;
sift 0:276c1dab2d62 49
sift 25:c21d35c7f0de 50 sdState.mode(PullNone);
sift 25:c21d35c7f0de 51 RTDSW.mode(PullNone);
sift 25:c21d35c7f0de 52 SLCTSW[0].mode(PullNone);
sift 25:c21d35c7f0de 53 SLCTSW[1].mode(PullNone);
sift 25:c21d35c7f0de 54 SLCTSW[2].mode(PullNone);
sift 25:c21d35c7f0de 55
sift 25:c21d35c7f0de 56 rightMotorPulse.mode(PullNone);
sift 25:c21d35c7f0de 57 leftMotorPulse.mode(PullNone);
sift 25:c21d35c7f0de 58 rightTirePulse1.mode(PullNone);
sift 25:c21d35c7f0de 59 rightTirePulse2.mode(PullNone);
sift 25:c21d35c7f0de 60 leftTirePulse1.mode(PullNone);
sift 25:c21d35c7f0de 61 leftTirePulse2.mode(PullNone);
sift 25:c21d35c7f0de 62
sift 2:9d69f27a3d3b 63 indicateSystem(1);
sift 2:9d69f27a3d3b 64 bootSystem();
sift 0:276c1dab2d62 65 }
sift 0:276c1dab2d62 66
sift 1:4d86ec2fe4b1 67 int main(void)
sift 0:276c1dab2d62 68 {
sift 19:571a4d00b89c 69 int f_whatchdog=0;
sift 25:c21d35c7f0de 70
sift 25:c21d35c7f0de 71 wait(1);
sift 6:26fa8c78500e 72
sift 25:c21d35c7f0de 73 pc.baud(115200);
sift 25:c21d35c7f0de 74 printf("\033[2J");
sift 25:c21d35c7f0de 75 printf("\033[1;1H"); //teratermの画面クリア
sift 25:c21d35c7f0de 76 printf("\r\nVersion:TVDctrller2017_brdRev1...start!!!!!\r\n");
sift 1:4d86ec2fe4b1 77
sift 1:4d86ec2fe4b1 78 initIO(); //IOポート初期化
sift 0:276c1dab2d62 79
sift 1:4d86ec2fe4b1 80 initTVD();
sift 1:4d86ec2fe4b1 81
sift 2:9d69f27a3d3b 82 initSteering();
sift 2:9d69f27a3d3b 83
sift 2:9d69f27a3d3b 84 timer.start();
sift 12:ae291fa7239c 85
sift 2:9d69f27a3d3b 86 float time;
sift 2:9d69f27a3d3b 87
sift 12:ae291fa7239c 88 struct errCounter_t eCounter= {0,0,0,0,0,0,0,0};
sift 25:c21d35c7f0de 89
sift 1:4d86ec2fe4b1 90 while(1) {
sift 25:c21d35c7f0de 91 //f_whatchdog = ~f_whatchdog;
sift 25:c21d35c7f0de 92 //WDT.write(f_whatchdog);
sift 14:7cc98e159c6e 93 //getCurrentErrCount(&eCounter);
sift 20:3c5061281a7a 94
sift 2:9d69f27a3d3b 95 timer.reset();
sift 1:4d86ec2fe4b1 96
sift 2:9d69f27a3d3b 97 driveTVD();
sift 6:26fa8c78500e 98
sift 3:821e2f07a260 99 //printf("%f\n\r", 45.0/0xFFFF * calcRequestTorque());
sift 6:26fa8c78500e 100
sift 12:ae291fa7239c 101 //printf("%2.2f\t%3.2f\t%1.2f\r\n", 45.0f / 0xffff * calcRequestTorque(), getVelocity(), getSteerAngle());
sift 2:9d69f27a3d3b 102 //printf("%1.6f\r\n", time);
sift 12:ae291fa7239c 103 //printf("%d\r\n", eCounter.brakeOverRide);
sift 2:9d69f27a3d3b 104 time = timer.read();
sift 25:c21d35c7f0de 105 while(timer.read_ms() < CONTROL_CYCLE_MS); //制御周期管理 関数内処理時間より短い時間の制御周期の設定は禁止
sift 25:c21d35c7f0de 106
sift 13:6dc51981f391 107 //printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t\r\n", eCounter.apsUnderVolt, eCounter.apsExceedVolt, eCounter.apsErrorTolerance, eCounter.apsStick, eCounter.brakeUnderVolt, eCounter.brakeExceedVolt, eCounter.brakeFuzzyVolt, eCounter.brakeOverRide);
sift 25:c21d35c7f0de 108 //printf("apsP:%1.2f, apsS:%1.2f, brake:%1.2f\r", 3.3f/65535 * getRawSensor(APS_PRIMARY), 3.3f/65535 * getRawSensor(APS_SECONDARY), 3.3f/65535 * getRawSensor(BRAKE));
sift 0:276c1dab2d62 109 }
sift 2:9d69f27a3d3b 110 }