Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3333|回復: 5
打印 上一主題 下一主題

Arduino SPI 可以中斷接收嗎?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2018-8-15 17:39:43 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
各位好:
請問SPI通訊可以讓Arduino先暫停接收,之後再用指令讓Arduino繼續接收嗎??
我希望可以透過Serial輸入CMD來控制是否要開始收值,
加入星號程式碼後碰到的問題是,
1.收到的值個數正確但會有奇怪數字

原本正常的畫面↑


加了*號程式碼後變成上圖這樣

2.輸入 C 指令後可以停止接收,但是再輸入 O 指令沒辦法再讓他被喚醒。


以下是我的code
void setup()
{
  Serial.begin(250000);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  openSPI();
}

void loop()
{
  p = frame_buffer;
  delay(100);
  readFrame();
  delay(200);
  sendLeptonFrame();
  
  
* if (Serial.available() > 0){
    *cmd = Serial.readStringUntil('\n');
    *if(cmd == "C"){
     * closeSPI();
     * runonce = false;
    *}
    *else if(cmd == "O"){
     * runonce = true;
   * }
    *delay(100);
   *}
    *if(runonce){
        closeSPI();
        delay(10);
        openSPI();  
    *}   
   *}
}

void openSPI(void)
{
  SPI.begin(10);
  SPI.setClockDivider(10,8);    //Due 84MHz / 8 ~= 10MHz SPI clk
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE3);
}

void closeSPI(void)
{
  SPI.end(10);
}

是哪部分有出錯了嗎?
還是說有其他可以控制SPI的方法嗎?


新手上路,請多指教,謝謝!
2#
 樓主| 發表於 2018-8-16 09:59:03 | 顯示全部樓層
本帖最後由 modico 於 2018-8-16 10:35 編輯

謝謝,照你的方式修改後,仍出現一樣的問題...

我檢查了兩個不同的CODE 發現差異就在宣告那邊一行而已..
不知道為什麼多宣告一個
String cmd = "";
讀出來的數據就會是錯的...把那一行砍掉就又恢復了
後來改成其他變數就解決問題了
3#
 樓主| 發表於 2018-8-16 10:55:27 | 顯示全部樓層

不太明白你問的是甚麼耶?

這是我修改後,成功的code
String userAction="";
boolean runonce = false;
String cmd = "";  ←加入這一行就會出現不正確的值

void setup()
{
  Serial.begin(250000);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  openSPI();
}

void loop()
{   

    if(runonce){
      p = frame_buffer;
      delay(100);
      readFrame();
      delay(200);
      sendLeptonFrame();
    }

    if (Serial.available() > 0){
      userAction = Serial.readStringUntil('\n');
            if(userAction == "O"){
          runonce = true;
          userAction = "";
        }
        else if(userAction == "C"){
          runonce = false;
          userAction = "";
        }
    }

   /*closeSPI();
   delay(10);
   openSPI();*/

}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-2 22:56 , Processed in 0.206538 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表