Nagito Sukegawa
/
Test_CAN_Baord
2019 Off season development Test of CAN communication Nucleo Board STM32 F446RE
Revision 0:bc4e55608ee9, committed 2020-03-12
- Comitter:
- st17099ng
- Date:
- Thu Mar 12 15:05:59 2020 +0000
- Commit message:
- Initial version
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r bc4e55608ee9 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 12 15:05:59 2020 +0000 @@ -0,0 +1,262 @@ +#include <mbed.h> +int PT = 0; +int OLD_PT = 0; +char counter[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +char RcvData[8]; + +void CAN1_Trans(void); +void CAN2_Rcv(void); +void CHECK_PT(void); +void PT0(void);//ヒコウジョー +void PT1(void);//DJ +void PT2(void);//ワッカイッテモドッテ +void PT3(void);//ブツカッチャウ +void PT4(void);//ギャクヒコウジョー +void PT5(void);//トケイ +void PT6(void);//ハントケイ +void PT7(void); +void PT8(void); +void PT9(void); + + +DigitalOut GLS[] = { + DigitalOut(PC_3), + DigitalOut(PC_2), + DigitalOut(PC_13), + DigitalOut(PB_7), + DigitalOut(PA_15), + DigitalOut(PC_12), + DigitalOut(PC_11), + DigitalOut(PC_10) +}; + +DigitalOut YLS[] = { + DigitalOut(PC_4), + DigitalOut(PA_10), + DigitalOut(PB_3), + DigitalOut(PB_4), + DigitalOut(PB_10), + DigitalOut(PA_8), + DigitalOut(PA_9), + DigitalOut(PC_7) +}; + +DigitalOut RLS[] = { + DigitalOut(PA_12), + DigitalOut(PA_11), + DigitalOut(PB_12), + DigitalOut(PB_2), + DigitalOut(PB_1), + DigitalOut(PB_15), + DigitalOut(PB_14), + DigitalOut(PB_13) +}; + +DigitalIn SW1(PC_6); +DigitalIn SW2(PC_5); + +Ticker ticker; +Serial pc(USBTX,NC,115200); +CAN can1(PB_8, PB_9,500000); +CAN can2(PB_5, PB_6,500000); +CANMessage msg1(0x114,counter,8,CANData,CANStandard); +CANMessage msg2(0x114,CANStandard); + +int main(void) +{ + SW1.mode(PullUp); + SW2.mode(PullUp); + ticker.attach(&CAN1_Trans, 0.1); + can2.attach(&CAN2_Rcv,CAN::RxIrq); + pc.printf("\033[2J"); + while(1) { + } +} + +void CAN1_Trans(void) +{ + msg1.id = 0x114; + if(SW1 == 1 && SW2 == 1) { + for(uint8_t i=0; i<8; i++) { + msg1.data[i] = 0x00; + } + } else if(SW1 == 0 && SW2 == 0) { + for(uint8_t i=0; i<8; i++) { + msg1.data[i] = 0x33; + } + } else if(SW1 == 0) { + for(uint8_t i=0; i<8; i++) { + msg1.data[i] = 0x11; + } + } else if(SW2 == 0) { + for(uint8_t i=0; i<8; i++) { + msg1.data[i] = 0x22; + } + } + if(can1.write(msg1)) { + pc.printf("\033[1;1HCAN1 TRANSID: 0x%x", msg1.id); + pc.printf("\033[2;1HCAN1 DATA[0]: 0x%x", msg1.data[0]); + pc.printf("\033[3;1HCAN1 DATA[1]: 0x%x", msg1.data[1]); + pc.printf("\033[4;1HCAN1 DATA[2]: 0x%x", msg1.data[2]); + pc.printf("\033[5;1HCAN1 DATA[3]: 0x%x", msg1.data[3]); + pc.printf("\033[6;1HCAN1 DATA[4]: 0x%x", msg1.data[4]); + pc.printf("\033[7;1HCAN1 DATA[5]: 0x%x", msg1.data[5]); + pc.printf("\033[8;1HCAN1 DATA[6]: 0x%x", msg1.data[6]); + pc.printf("\033[9;1HCAN1 DATA[7]: 0x%x", msg1.data[7]); + } +} + +void CAN2_Rcv(void) +{ + can2.read(msg2); + pc.printf("\033[1;25HCAN2 RCVID: 0x%x\n", msg2.id); + if(msg2.id == 0x114) { + for(uint8_t i=0; i<8; i++) { + RcvData[i] = msg2.data[i]; + } + if(RcvData[0] == 0x00) { + PT = 0; + CHECK_PT(); + PT0(); + } else if(RcvData[0] == 0x33) { + PT = 3; + CHECK_PT(); + PT4(); + } else if(RcvData[0] == 0x11) { + PT = 1; + CHECK_PT(); + PT1(); + } else if(RcvData[0] == 0x22) { + PT = 2; + CHECK_PT(); + PT2(); + } + OLD_PT = PT; + pc.printf("\033[2;25HCAN2 DATA[0]: 0x%x", RcvData[0]); + pc.printf("\033[3;25HCAN2 DATA[0]: 0x%x", RcvData[1]); + pc.printf("\033[4;25HCAN2 DATA[0]: 0x%x", RcvData[2]); + pc.printf("\033[5;25HCAN2 DATA[0]: 0x%x", RcvData[3]); + pc.printf("\033[6;25HCAN2 DATA[0]: 0x%x", RcvData[4]); + pc.printf("\033[7;25HCAN2 DATA[0]: 0x%x", RcvData[5]); + pc.printf("\033[8;25HCAN2 DATA[0]: 0x%x", RcvData[6]); + pc.printf("\033[9;25HCAN2 DATA[0]: 0x%x", RcvData[7]); + } +} + +void CHECK_PT(void) +{ + if(OLD_PT != PT) { + for(int i = 0; i<8; i++) { + GLS[i] = 0; + YLS[i] = 0; + RLS[i] = 0; + } + pc.printf("\033[2J"); + } +} + +void PT0(void)//ヒコウジョー +{ + for(int i = 0; i<8; i++) { + GLS[i] = !GLS[i]; + YLS[i] = !YLS[i]; + RLS[i] = !RLS[i]; + wait(0.03); + } +} + +void PT1(void)//DJ +{ + for(int i = 0; i < 8; i++) { + GLS[i] = 1; + YLS[i] = 1; + RLS[i] = 1; + wait(0.03); + } + for(int i = 7; i >= 0; i--) { + GLS[i] = 0; + YLS[i] = 0; + RLS[i] = 0; + wait(0.03); + } +} + +void PT2(void)//ワッカイッテモドッテ +{ + for(int i = 7; i >= 0; i--) { + GLS[i] = 1; + wait(0.03); + } + for(int i = 7; i >= 0; i--) { + YLS[i] = 1; + wait(0.03); + } + for(int i = 7; i >= 0; i--) { + RLS[i] = 1; + wait(0.03); + } + + for(int i = 0; i < 8; i++) { + RLS[i] = 0; + wait(0.03); + } + + for(int i = 0; i < 8; i++) { + YLS[i] = 0; + wait(0.03); + } + for(int i = 0; i < 8; i++) { + GLS[i] = 0; + wait(0.03); + } +} + +void PT3(void)//ブツカッチャウ +{ + for(int i = 7; i >= 0; i--) { + GLS[i] = 1; + RLS[7-i] = 1; + wait(0.03); + } + for(int i = 0; i < 4; i++) { + YLS[i] = 1; + YLS[7-i] = 1; + wait(0.03); + } + for(int i = 3; i >= 0; i--) { + YLS[i] = 0; + YLS[7-i] = 0; + wait(0.03); + } + for(int i = 7; i >= 0; i--) { + GLS[7-i] = 0; + RLS[i] = 0; + wait(0.03); + } +} + +void PT4(void)//ギャクヒコウジョー +{ + for(int i = 7; i >= 0; i--) { + GLS[i] = !GLS[i]; + YLS[i] = !YLS[i]; + RLS[i] = !RLS[i]; + wait(0.03); + } +} + +void PT5(void)//トケイ +{ + for(int i = 0; i<8; i++) { + GLS[i] = 1; + wait(0.03); + } + for(int i = 0; i<8; i++) { + GLS[i] = 0; + } +} + +void PT6(void)//ハントケイ +{ + +} \ No newline at end of file
diff -r 000000000000 -r bc4e55608ee9 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Mar 12 15:05:59 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file