2016-12-01 117 views
1

我已經看了十幾種不同的方式來重置我的arduino,從連接引腳到重置引腳和陪審團索引怪異的代碼位。 他們都沒有工作。重置Arduino通過代碼

代碼的一個位,每個人都好像是用是

void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers 
{ 
asm volatile (" jmp 0"); 
} 

一下我國的Arduino與

C:\Users\Leonardo\AppData\Local\Temp\ccGUYdTQ.s:2259: Error: bad instruction `jmp 0'

響應,然後它不能上傳的代碼。我不知道該怎麼辦。我的完整代碼可以在這裏找到http://pastebin.com/CA2Ms2hB但它是巨大的,我不知道它是否會有所幫助。

如果有人能幫我理解爲什麼software_Reset();我真的很感激,我在這裏結束了我的繩索。

(此外,如果有其他方法重置Arduino的我會很樂意嘗試一下)

+0

如今'arduino'不會自動成爲UNO或至少是一個atmega 8位控制器。對於那些「jmp 0」確實比濫用看門狗更糟糕,但這兩種方法都應該工作的人來說,這是值得商榷的 – datafiddler

+0

「jmp」之前可能有一些不可打印的字符嗎?我知道在arduino上下蹲,但是(我聽說過)有些彙編器對哪些列指令需要啓動很煩惱。 –

+0

[如何在C中爲AVR-Studio編寫自定義重置()函數?] http://stackoverflow.com/questions/32802221/how-to-write-a-custom-reset-function-in-c-for-avr-studio) –

回答

-1

我認爲你正在嘗試編寫彙編代碼,你的Arduino的代碼編輯器。 讓我告訴你一件事。 Arduino代碼編輯器默認不支持彙編語言代碼。您可以通過以下過程在Arduino代碼編輯器中編寫彙編語言代碼:

注意:我們將修改arduino源代碼來執行此操作。

  1. 獲取源代碼的Arduino IDE:https://github.com/arduino/arduino

  2. 解壓下載的zip文件,你會得到一個文件夾命名爲Arduino的主

  3. 打開Sketch.java文件中的文本您選擇的編輯器。 sketch.java的位置是:Arduino的主/應用/ SRC /處理/應用程序/ Sketch.java

  4. 插入.S能力:

    一個。搜索:sc.isExtension(「c」);

    ,你會看到這樣的事情:

    //3. then loop over the code[] and save each .java file 
    
    for (SketchCode sc : code){ 
        if(sc.isExtension("c") || sc.isExtension("cpp") || sc.isExtension("h")){ 
         //no pre-processing services necessary for java files 
    

    灣在if條件結尾添加sc.isExtension(「s」)。現在,您的代碼應該如下:

    //3. then loop over the code[] and save each .java file 
    
    for (SketchCode sc : code){ 
        if(sc.isExtension("c") || sc.isExtension("cpp") || sc.isExtension("h") || sc.isExtension("s")){ 
         //no pre-processing services necessary for java files 
    
  5. 搜索:字符串[] getExtensions()

    你會看到像這樣的代碼:在

    /** 
        * Returns a String[] array of proper extensions. 
        */ 
    public String[] getExtensions() { 
        return new String[] { "ino", "pde", "c", "cpp", "h" }; 
    } 
    

    插入 「S」返回數組。所以,現在你的代碼應該是這樣的:

    /** 
        * Returns a String[] array of proper extensions. 
        */ 
    public String[] getExtensions() { 
        return new String[] { "ino", "pde", "c", "cpp", "h", "s" }; 
    } 
    
  6. 保存Sketch.java

  7. 打開Compiler.java在您選擇的文本編輯器。編譯器的位置。Java是:Arduino的主/應用/ SRC /處理/應用/調試/ Compiler.java

  8. 搜索:compileFiles(

    在命令findFilesInFolder(),以小寫s取代資本S

  9. 重複步驟8:3次以上......(共4個TIEMS)

  10. 保存Compiler.java文件

  11. 下載最新版本的java SE 8u111從http://www.oracle.com

  12. 下載並安裝任何java命令行工具。但我會推薦Apache ANT。

    如果你是一個Windows用戶:

    如果你是Mac用戶:

    • 你需要使用Homwbrew進行安裝:

    • 要安裝家釀:

      ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 
      
    • 然後安裝Apache ANT:

      brew install ant 
      
  13. 在命令行中去到目錄爲Arduino-master/build

  14. 構建Arduino IDE使用:ant build,應以Build Successful消息結束。

  15. 套餐Arduino的IDE使用:ant dist

    它會要求你輸入一個版本號和給個建議例如[0105]。只需輸入建議的數字,點和asm。例如:如果建議是[0105]則輸入:1.0.5.asm

    該命令可能需要6-10分鐘才能完成。 (取決於你的電腦的速度)

    然後,你必須得到建設成功!

  16. 支持彙編語言編程的Arduino的IDE可以在新創建的發現.zip文件

  17. 解壓縮文件並安裝Arduino的IDE應用程序。

現在,您應該可以編寫彙編程序而不會在Arduino IDE中發現錯誤。

如果您有任何問題,請隨時詢問。