спящий режим режим

Тема в разделе "Arduino & Shields", создана пользователем Arduinator, 20 янв 2014.

  1. Arduinator

    Arduinator Нуб

    Всем доброго времени суток,

    у меня такой вопрос. Хочу, чтобы после загрузки скетча, Arduino сначала входил в спящий режим и выходил только при нажатии кнопки. Для выхода просто нужно прицепить кнопку к пину, отвечающиму за приерывание? А чтобы Arduino сам зашел в этот режим при загаузке кода?
     
  2. lerik2703

    lerik2703 Гик

  3. Arduinator

    Arduinator Нуб

    void EnterSleep()
    {

    attachInterrupt(0, wakeUp, LOW); //Если на 0-вом прерываниии - ноль, то просыпаемся.
    delay(100);

    sleep_enable(); //Разрешаем спящий режим
    sleep_mode(); //Спим (Прерывания продолжают работать.) Программа останавливается.
    sleep_disable(); //Запрещаем спящий режим
    }

    Правильно я понял, если прицепить кнопку к 0 прерыванию, то должно сработатть?
     
  4. lerik2703

    lerik2703 Гик

    абсолютно верно! (цифровой вывод 2) вот только для этого примера дребезг не страшен так как в функции
    wakeUp() контроллер уходит в бесконечный пустой цикл , ну а вам естественно надо позаботится о предотвращения дребезга контактов ,программный способ не совсем походит здесь (хотя можно ввести задержку функций delayMicroseconds() но главное правило работы с прерываниями это - как можно меньшие затратить времени на его обработку ) поэтому лучше всего здесь подходит аппаратное подавление дребезга!
     
  5. Megakoteyka

    Megakoteyka Оракул Модератор

    Если не ошибаюсь, в прерывании функции delay и delayMicroseconds будут возвращать всегда одинаковое значение, т.е. не будет приращения времени.
     
  6. lerik2703

    lerik2703 Гик

    delayMicroseconds не использует таймерные прерывая вроде... задержка происходит за счет машинного времени контроллера!может конечно путаю с наносекундной задержкой...
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Блин, это я с millis() перепутал, сорри. У меня уже пятница :)