2016-12-01 2 views
1

Я рассмотрел дюжину различных способов сброса моего ардуино, от подключения штифтов до булавки сброса и присяжных, строящих странные биты кода. Ни один из них не работает.Сброс 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 или, по крайней мере, 8-разрядным контроллером atmega. Для тех, кто это спорно, если '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. Извлеките загруженный файл почтового индекса, вы получите папку с именем Arduino-мастер

  3. Открыть файл Sketch.java в тексте редактор по вашему выбору. Расположение sketch.java является: Ардуиным-мастер/приложение/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 
    

    б. Добавьте sc.isExtension ("s") в конце условия if. Теперь ваш код должен выглядеть следующим образом:

    //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. Поиск: String [] getExtensions()

    Вы увидите код вроде этого:

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

    Вставить "ы" в возвращенный массив. Итак, теперь ваш код должен выглядеть следующим образом:

    /** 
        * 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.

    Если вы являетесь пользователем окна:

    Если вы находитесь a Пользователь Mac:

    • Вам необходимо установить его с помощью Homwbrew:

    • Чтобы установить Homebrew:

      ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 
      
    • А затем установить Apache ANT:

      brew install ant 
      
  13. В командной строке перейдите в каталог для Arduino-master/build

  14. Постройте IDE Arduino, используя: ant build, который должен заканчиваться сообщением Build Successful.

  15. Упакуйте Arduino IDE с помощью: ant dist

    Он попросит вас ввести номер версии и дать предложения, например, [0105]. Просто введите предлагаемое число с точками и asm. Например: Если предложено [0105], введите: 1.0.5.asm

    Для завершения этой команды может потребоваться 6-10 минут. (в зависимости от скорости вашего компьютера)

    Затем вы должны получить Build Successful !!!

  16. В среде IDE Arduino, который поддерживает программирование на языке ассемблера можно найти в недавно созданный файл .zip

  17. Распакуйте файл и установить приложение Arduino IDE.

Теперь вы можете писать программы сборки, не получая ошибок в среде Arduino.

Если у вас возникли проблемы, пожалуйста, не стесняйтесь спрашивать.

Смежные вопросы