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.
Revision 1:837fcefb5fa6, committed 2019-09-26
- Comitter:
- TanakaRobo
- Date:
- Thu Sep 26 00:36:19 2019 +0000
- Parent:
- 0:f65bd64d88b7
- Child:
- 2:da44cd3b6601
- Commit message:
- add disable irq
Changed in this revision
| library/scrp_slave.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/library/scrp_slave.cpp Mon Aug 26 07:39:37 2019 +0000
+++ b/library/scrp_slave.cpp Thu Sep 26 00:36:19 2019 +0000
@@ -44,7 +44,7 @@
my_id_ = 10;
}
for(int i = 1;i<255;++i){
- procs_[i] = 0;
+ procs_[i] = NULL;
}
}
@@ -137,10 +137,11 @@
void ScrpSlave::check(int port){
uint8_t rx_cmd;
int16_t rx_data;
- bool received = false;
+ //bool received = false;
bool broadcast = false;
- while(serial_[port]->readable()){
- if(serial_[port]->getc() != STX)continue;
+ if(serial_[port]->readable()){//while
+ if(serial_[port]->getc() != STX)return;//continue;
+ __disable_irq();//割り込みオフ
uint8_t rx_id = serial_[port]->getc();
uint8_t tmp_rx_cmd = serial_[port]->getc();
uint8_t tmp_rx_dataL = serial_[port]->getc();
@@ -149,7 +150,8 @@
uint8_t sum = rx_id + tmp_rx_cmd + tmp_rx_dataL + tmp_rx_dataH;
if(sum != rx_sum){
- continue;
+ __enable_irq();
+ return;//continue;
}
if(rx_id == 255){
@@ -157,31 +159,36 @@
}else if(my_id_ == rx_id){
broadcast = false;
}else{
- break;
+ __enable_irq();//割り込みオン
+ return;//break;
}
rx_cmd = tmp_rx_cmd;
rx_data = tmp_rx_dataL + ((int16_t)tmp_rx_dataH << 8);
- received = true;
- }
+ //received = true;
+ }else{
+ return;
+ }/*
if(!received){
return;
- }
+ }*/
int tx_data = rx_data;
- if(rx_cmd == 0){
+ if(rx_cmd == 0){//通信テスト
tx_data = rx_data;
- }else if(rx_cmd == 254){
+ }else if(rx_cmd == 254){//id変更
uint8_t new_id = rx_data;
my_id_ = new_id;
changeID(new_id);
- }else if(rx_cmd == 253){
+ }else if(rx_cmd == 253){//id確認
tx_data = my_id_;
rx_cmd = 250;
broadcast = false;
- }else if(procs_[rx_cmd] == 0 || !procs_[rx_cmd](rx_data,tx_data)){
+ }else if(procs_[rx_cmd] == NULL || !procs_[rx_cmd](rx_data,tx_data)){
+ __enable_irq();
return;
}
if(broadcast){
+ __enable_irq();
return;
}
@@ -202,7 +209,8 @@
while(!serial_[port]->writeable());
if(mode_%2 == 1 && port == 0){
rede_->write(0);
- }
+ }
+ __enable_irq();
return;
}
