Вопрс по прерыванию
- Войдите на сайт для отправки комментариев
Пт, 09/06/2017 - 16:56
Во всех примерах в качестве пинов, используемых для прерывания приводятся пины 2 и 3. А можно как-то переназначить пин для прерывания? Чтобы был не 2 а, к примеру, 10? и как это сделать, скажем, вот в этом примере
01 | #include <Sleep_n0m1.h> |
02 |
03 | Sleep sleep; |
04 | #define intPin 2 |
05 |
06 | void setup () |
07 | { |
08 | Serial .begin(9600); |
09 | pinMode(2,INPUT); |
10 | } |
11 |
12 | void loop () |
13 | { |
14 | delay(100); |
15 | Serial .println( "execute your code here" ); |
16 | Serial .print( "Sleeping Till Interrupt" ); |
17 | delay(100); |
18 | sleep.pwrDownMode(); //set sleep mode |
19 | sleep.sleepPinInterrupt(intPin,HIGH); |
20 | } |
на уровне пользователя ардуино - невозможно.
Для програмиста - сравнительно легко, только без этой библиотеки.
Если несложно - приведите, пожалуйста, пример кода, который, если нет активности в течение, скажем, пяти секунд, надолго загонит ардуину в глубокий сон и выведет по нажатию кнопки, которая подключена к пину, отличному от 2 и 3. ну и потом опять же - если нет активности - то снова баиньки
Внешние прерывания (external interrupt) физически привязаны к этим пинам, их нельзя поменять. Но есть ещё прерывания PCINT.
а PCINT может выводить из PWR_DOWN?
....
Pin change interrupts on
PCINT are detected asynchronously. This implies that these interrupts can be used for waking the part
also from sleep modes other than Idle mode.
.....
1.Вы задали вопрос и в дискуссию вступаете? Странно...
2.Я вам ответил - у Вас не получится. А за кодом - в "Ищу исполнителя".
а PCINT может выводить из PWR_DOWN?
Пишут, что может (примеров кода у меня нет).
Нет нельзя, на аппаратном уровне из спячки пины 2 и 3 только.
Таблица 10.1 Active Clock Domains and Wake-up Sources in the Different Sleep Modes.
примечание 3* For INT1 and INT0, only level interrupt.
1.Вы задали вопрос и в дискуссию вступаете? Странно...
Никуда я не вступаю, скорее, у вас какие-то слишком размытые понятия о дискуссии. По-человечески попросил помочь с примером кода, в результате в очередной раз убедился, что имеется некоторое количество занимающихся программизмом камрадов, присутствующих на этом (и не только) форуме - которые суть снобы, желающие показать свое превосходство и относящиеся к нубам как к быдлу (см. Белый сагиб vs Грязный туземец). Ничего необычного, впрочем. Не вы первый, не вы последний.
2.Я вам ответил - у Вас не получится.
Думаю, что получится. Просто времени чуть больше потрачу, чем если бы поучил более-менее внятный ответ на вопрос.
Нет нельзя, на аппаратном уровне из спячки пины 2 и 3 только.
Таблица 10.1 Active Clock Domains and Wake-up Sources in the Different Sleep Modes.
примечание 3* For INT1 and INT0, only level interrupt.
Спасибо.
Нет нельзя, на аппаратном уровне из спячки пины 2 и 3 только.
Таблица 10.1 Active Clock Domains and Wake-up Sources in the Different Sleep Modes.
примечание 3* For INT1 and INT0, only level interrupt.
Вот же блин упертые есть!
Это написано ТОЛЬКО про INT0 и INT1, а не про PCINT. глазу разуй и еще раз в таблицу смотри!!!!
Ведь проверить две минуты, а он блин "территорию пометить" должен. Етить! Зла не хватает.
1.Вы задали вопрос и в дискуссию вступаете? Странно...
Никуда я не вступаю, скорее, у вас какие-то слишком размытые понятия о дискуссии. По-человечески попросил помочь с примером кода, в результате в очередной раз убедился, что имеется некоторое количество занимающихся программизмом камрадов, присутствующих на этом (и не только) форуме - которые суть снобы, желающие показать свое превосходство и относящиеся к нубам как к быдлу (см. Белый сагиб vs Грязный туземец). Ничего необычного, впрочем. Не вы первый, не вы последний.
2.Я вам ответил - у Вас не получится.
Думаю, что получится. Просто времени чуть больше потрачу, чем если бы поучил более-менее внятный ответ на вопрос.
Вот уже дискуссия начинается!
Будет куча вопросов и тратить Вы станете МОЕ время.
1. вешаете на соответствующий вектор пробуждение.
2. ВСЕ ноги на этом векторе должны иметь постоянный потенциал, то есть не висеть в воздухе.
тогда - должно получиться.
Если покажете свою версию - я поправлю с радостью, НО НЕ СТАНУ ПИСАТЬ ПОЛНОСТЬЮ КОД.
Это тут не принято. ОК? Без обид?
я последовательность действий вам напишу:
1. но катинке пинаута своей платы (уно/нано) находите номер PCINT
2. находите по даташиту свой вектор.
3. на него пишите нужный ISR
4. разрешаете PCINT на этот вектор.
5. ОБЯЗАТЕЛЬНО подключаете куда-нибудь ВСЕ пины, которые дают PCINT на этот вектор.
6. показываете свою версию кода тут, если она не заработала. я поправлю.
Вот за это спасибо. Примерно что-то такое и ожидалось с самого начала. )) П. 6 необязателен ))