Вопросы с тегом «isr»

3
Может ли функция вызываться автоматически при изменении входа?
В настоящее время мой эскиз проверяет входной контакт каждый раз вокруг основного цикла. Если он обнаруживает изменение, он вызывает пользовательскую функцию, чтобы ответить на него. Вот код (урезанный до самого необходимого): int pinValue = LOW; void pinChanged() { //... } void setup() { pinMode(2, INPUT); } void loop() { // …
21 pins  interrupt  isr 

2
Являются ли указатели на функции атомными в Arduino?
Следующие фрагменты взяты из исходного кода библиотеки TimerOne : // TimerOne.h: void (*isrCallback)(); // TimerOne.cpp: ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt { Timer1.isrCallback(); } // TimerOne.cpp: void TimerOne::attachInterrupt(void (*isr)(), long microseconds) { if(microseconds > 0) setPeriod(microseconds); isrCallback = isr; // register the …

1
Необходима ли изменчивость, когда переменная доступна из> 1 ISR, но не используется совместно с ISR?
Это четко задокументированы , что , когда глобальные данные совместно с ISR и основной программой, то данные должны быть объявлены volatileдля того , чтобы видимость гарантии памяти (и , что достаточно только для данных 1 байт, требуется какой- либо большое специальные меры , чтобы гарантировать также атомарность) , Здесь у …
9 interrupt  timers  isr 

2
Как обновить переменную в ISR с помощью таймеров
Я пытаюсь проверить частоту Timer3 с помощью счетчика. Значение счетчика, объявленное как volatile, увеличивается в ISR, и каждую секунду сумма отображается в основном цикле, а значение сбрасывается в ноль. Таймер был настроен правильно. (Если я выберу таймер 3 Гц, я вижу мигание светодиода) Проблема Счетчик не увеличивается. Вот вывод: Setup …

2
Прерывание Arduino (при смене контактов)
Я использую функцию прерывания, чтобы заполнить массив значениями, полученными из digitalRead(). void setup() { Serial.begin(115200); attachInterrupt(0, test_func, CHANGE); } void test_func(){ if(digitalRead(pin)==HIGH){ test_array[x]=1; } else if(digitalRead(pin)==LOW){ test_array[x]=0; } x=x+1; } Эта проблема заключается в том, что когда я печатаю, test_arrayесть такие значения, как: 111или 000. Насколько я понимаю, если я …
8 arduino-uno  c  isr 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.