Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- shimogamo
- Date:
- 2016-02-09
- Revision:
- 16:7e36177b4435
- Parent:
- 15:e73408fc6008
- Child:
- 17:887cfe1d309f
File content as of revision 16:7e36177b4435:
//@todo Initのコマンドモード化or別プログラム化
//@todo ソフトウェアシリアルの確認等
//@todo Cadence, Airspeed内でNC,Encorderクラスから継承
//@todo Buttonクラスを作り,TrimとSelectorの親クラスにする
//@todo 使っているライブラリの関数の説明追加
//@todo Processing
//タスクの数に上限があるっぽい?(6個以下)
#include "mbed.h"
#include "rtos.h"
#include "Global.h"
#include "Init.h"
#include "ServoManager.h"
#include "ControllerManager.h"
#include "Trim.h"
#include "Cadence.h"
#include "Airspeed.h"
#include "Ultsonic.h"
#include "Atmpress.h"
#include "Display.h"
#include "XBee.h"
#include "Selector.h"
RawSerial pc(USBTX, USBRX);
Atmpress atmpress(p9, p10);//sda, scl
Display display(p13, p14);//tx, rx
ControllerManager controllerManager(p15,p16,p17,p18);//ele, rud, eletrimup, eletrimdown
Ultsonic ultsonic(p20);//analogIn
ServoManager servoManager(p21, p22);//ele, rud
Cadence cadence(p23, p24, NC);//p11, p12では動作しない
Selector selector(p25);
DigitalOut wdt(p26);
XBee xbee(p28, p27);//tx, rx
Airspeed airspeed(p29, NC, NC);//p19,p20をInterruptInに使ってはいけない
void pc_rx(){
while(pc.readable()==1){
//コマンドモードのon,offはここに入れる
char buf = (char)pc.getc();
Global::initqueue.put((char*)buf);
}
}
void initializeTask(void const *pvParameters){
while(1){
Init::getSerial();
}
}
void controlTask(void const *pvParameters){
while(1){
//この中でpc.printfはしないほうがいいみたい(9600bpsだと遅延が起こる)
controllerManager.update();
servoManager.update();
wdt = !wdt;
Thread::wait(50);
}
}
void sensorTask500(void const *pvParameters){
while(1){
airspeed.update();
cadence.update();
ultsonic.update();
atmpress.update();
selector.update();
Thread::wait(500);
}
}
void displayTask(void const *pvParameters){
while(1){
display.update();
Thread::wait(50);
}
}
void xbeeTask(void const *pvParameters){
while(1){
xbee.update();
Thread::wait(50);
}
}
int main(void){
printf("start\n");
pc.attach(pc_rx,Serial::RxIrq);
Global::initialize();
Thread InitializeTask(initializeTask);
Thread ControlTask(controlTask, NULL, osPriorityRealtime);
Thread SensorTask500(sensorTask500);
Thread DisplayTask(displayTask);
Thread XbeeTask(xbeeTask);
printf("Task end\n");
Thread::wait(osWaitForever);
}