明石高専ロボ研 mbedライブラリ

Dependencies:   mbed

Committer:
TanakaRobo
Date:
Fri Jan 03 02:37:48 2020 +0000
Revision:
2:141358d84ff4
Parent:
0:ca84ed7518f5
Child:
3:28c77df7c0b6
tested cannot receive responce

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TanakaRobo 0:ca84ed7518f5 1 #ifndef SCRP_SLAVE_H
TanakaRobo 0:ca84ed7518f5 2 #define SCRP_SLAVE_H
TanakaRobo 0:ca84ed7518f5 3 #include "mbed.h"
TanakaRobo 0:ca84ed7518f5 4
TanakaRobo 0:ca84ed7518f5 5 /*USBでPCにつなぐポートと、基板上でRasPiとつなぐポートを同時に開く。
TanakaRobo 0:ca84ed7518f5 6 *RedePinの有り無しの選択、ポートを一つだけ開くことも可。
TanakaRobo 0:ca84ed7518f5 7 *以下から選択。
TanakaRobo 0:ca84ed7518f5 8 *ScrpSlave(PinName TX1,PinName RX1,uint32_t addr);//RedePinなし、1ポート
TanakaRobo 0:ca84ed7518f5 9 *ScrpSlave(PinName TX1,PinName RX1,PinName REDE1,uint32_t addr);//RedePinあり、1ポート
TanakaRobo 0:ca84ed7518f5 10 *ScrpSlave(PinName TX1,PinName RX1,PinName TX2,PinName RX2,uint32_t addr);//RedePinなし、2ポート
TanakaRobo 0:ca84ed7518f5 11 *ScrpSlave(PinName TX1,PinName RX1,PinName REDE1,PinName TX2,PinName RX2,uint32_t addr);//RedePinあり、1ポート+RedePinなし、1ポート
TanakaRobo 0:ca84ed7518f5 12 *example not usb port
TanakaRobo 0:ca84ed7518f5 13 *L432KC : TX = PA_9 , RX = PA_10 , REDE = PA_12 , addr = 0x0803e000
TanakaRobo 0:ca84ed7518f5 14 *F446RE : TX = PC_12 , RX = PD_2 , RDDE = PH_1 , addr = 0x0807ffff
TanakaRobo 0:ca84ed7518f5 15 */
TanakaRobo 0:ca84ed7518f5 16 //ScrpSlave slave(SERIAL_TX,SERIAL_RX);
TanakaRobo 0:ca84ed7518f5 17
TanakaRobo 0:ca84ed7518f5 18 inline int constrain(int x,int a,int b){
TanakaRobo 0:ca84ed7518f5 19 return (x < a ? a : x > b ? b : x);
TanakaRobo 0:ca84ed7518f5 20 }
TanakaRobo 0:ca84ed7518f5 21
TanakaRobo 0:ca84ed7518f5 22 inline double constrain(double x,double a,double b){
TanakaRobo 0:ca84ed7518f5 23 return (x < a ? a : x > b ? b : x);
TanakaRobo 0:ca84ed7518f5 24 }
TanakaRobo 0:ca84ed7518f5 25
TanakaRobo 0:ca84ed7518f5 26 class ScrpSlave{
TanakaRobo 0:ca84ed7518f5 27 public:
TanakaRobo 0:ca84ed7518f5 28 ScrpSlave(PinName TX1,PinName RX1,uint32_t addr);//RedePinなし、1ポート
TanakaRobo 0:ca84ed7518f5 29 ScrpSlave(PinName TX1,PinName RX1,PinName REDE1,uint32_t addr);//RedePinあり、1ポート
TanakaRobo 0:ca84ed7518f5 30 ScrpSlave(PinName TX1,PinName RX1,PinName TX2,PinName RX2,uint32_t addr);//RedePinなし、2ポート
TanakaRobo 0:ca84ed7518f5 31 ScrpSlave(PinName TX1,PinName RX1,PinName REDE1,PinName TX2,PinName RX2,uint32_t addr);//RedePinあり、1ポート+RedePinなし、1ポート
TanakaRobo 0:ca84ed7518f5 32 ~ScrpSlave();
TanakaRobo 0:ca84ed7518f5 33 void setTimeout(int);
TanakaRobo 0:ca84ed7518f5 34 void addCMD(uint8_t cmd, bool (*proc)(int rx_data,int& tx_data));
TanakaRobo 0:ca84ed7518f5 35 int16_t send(uint8_t id,uint8_t cmd,int16_t tx_data);
TanakaRobo 0:ca84ed7518f5 36 int16_t send2(uint8_t id,uint8_t cmd,int16_t tx_data);
TanakaRobo 0:ca84ed7518f5 37 private:
TanakaRobo 0:ca84ed7518f5 38 DigitalOut *rede_;
TanakaRobo 2:141358d84ff4 39 Serial *serial_[2];
TanakaRobo 0:ca84ed7518f5 40 FlashIAP *flash_;
TanakaRobo 2:141358d84ff4 41 uint8_t send_data_[2][8];
TanakaRobo 0:ca84ed7518f5 42 uint8_t mode_;
TanakaRobo 0:ca84ed7518f5 43 uint8_t my_id_;
TanakaRobo 0:ca84ed7518f5 44 uint32_t address_;
TanakaRobo 0:ca84ed7518f5 45 int timeout_;
TanakaRobo 2:141358d84ff4 46 bool wait_data_[2];
TanakaRobo 2:141358d84ff4 47 bool stx_flag_[2];
TanakaRobo 2:141358d84ff4 48 bool id_ok_[2];
TanakaRobo 2:141358d84ff4 49 uint8_t tmp_data_[2][5];
TanakaRobo 2:141358d84ff4 50 uint8_t data_count_[2];
TanakaRobo 2:141358d84ff4 51 int16_t rx_data_[2];
TanakaRobo 0:ca84ed7518f5 52 bool (*procs_[256])(int rx_data, int& tx_data);
TanakaRobo 0:ca84ed7518f5 53 int16_t sending(int,uint8_t,uint8_t,int16_t);
TanakaRobo 0:ca84ed7518f5 54 void changeID(uint8_t);
TanakaRobo 2:141358d84ff4 55 void init(PinName,PinName);
TanakaRobo 0:ca84ed7518f5 56 void check(int port);
TanakaRobo 0:ca84ed7518f5 57 void port1();
TanakaRobo 0:ca84ed7518f5 58 void port2();
TanakaRobo 2:141358d84ff4 59 void data_send1();
TanakaRobo 2:141358d84ff4 60 void data_send2();
TanakaRobo 2:141358d84ff4 61 void prime(int);
TanakaRobo 0:ca84ed7518f5 62 };
TanakaRobo 0:ca84ed7518f5 63
TanakaRobo 0:ca84ed7518f5 64 #endif /* SCRP_SLAVE_H */