К Ардуине не протеусе к пин 3 подходит тактовый сигнал. На кнопку СТАРТ пин 5 подходит генератор и кнопку щелевого датчика (кнопка СТОП) пин 4 подходи генератор , два генератора выдают сигналы примерно в 1 секунду разницы чередуясь друг с другом, заставляя таким образом получать по факту пачки импульсы в 1 секунду и паузу в 1 секунду.
Тогда вы можете пояснить хоть чуть чуть. перерыл весь интернет. Никаких примеров не нашел. Стандартные описания и все. привести какой-то пример, от чего можно было бы плясать...
Вы пишите что навсегда аппаратное прерывание снимаю функцией noInterrupts()...Это как сработал щелевой датчик.
Но потом же я включаю и выдаю interrupts()
Вот стандартное описание...Это цитата с сайта Гувера
ПЯ выключил прерывание датчиком. Ардуино ждет...я включаю кнопку СТАРТ и при этом там interrupts
Если можете пояснить - поясните плиз. Если есть куда читать - буду прищнателен...
командой noInterrupts() вы выключаете ВСЕ прерывания микроконтроллера. ВСЕ, понимаете?
Вы, может быть, не в курсе, но то прерывание, которое вы используете для датчика - в МК далеко не единственное. В микроконтроллере много других разных функций, работающих на прерываниях - причем многие из них необходимы для нормальной жизни МК. А вы их взяли и выключили.
Функцией noInterrupts() прерывания можно выключать только на очень короткое время. буквально на микросекунду. И если вы не понимаете, как это работает - лучше вообще эту функцию не трогайте. Если же вам надо выключить только свое прерывание - вам noInterrupts() не нужен, используйте детач.
А вообще, Нафаня, вы рано схватились за прерывания. Это совсем не для новичков тема. Вы вообще пока слепой котенок и мало что соображаете, вам лучше бы сначала сделать пяток проектов попроще
Когда Вы требует МК запретить обработку прерываний, то это означает, что далее ни одно (почти) системное прерывание не будет выполнено. Т.е. вы должны забыть о millis(), delay(), выводе в Serial и иных приятных безделушках.
Если Вы используете attachInterrupt() , detachInterrupt(), то просто разрешаете или не разрешаете вызывать Вашу персональную функцию из штатного обработчика, не затрагивая все остальное.
Это все, что нужно знать, чтобы сделать правильный выбор между двумя вышеупомянутыми способами.
Нашел вот это, но что делать с этим дальше - непонятно
void detachInterrupt(uint8_t);
Описание:
Отключает указанное прерывание.
Вызов:
detachInterrupt(interrupt);
и что тут может быть непонятно? - если непонятно, значит вам еще рано... Хотя посмотрел на вашу регистрацию - если вы на четвертом году занятий ардуино все еще этого не поняли - может это просто не ваше?
К Ардуине не протеусе к пин 3 подходит тактовый сигнал. На кнопку СТАРТ пин 5 подходит генератор и кнопку щелевого датчика (кнопка СТОП) пин 4 подходи генератор , два генератора выдают сигналы примерно в 1 секунду разницы чередуясь друг с другом, заставляя таким образом получать по факту пачки импульсы в 1 секунду и паузу в 1 секунду.
И заморозили свой контроллер!
Вы как "просыпляли" свое прерывание? "attachInterrupt"??? Так и "усыпляйте" его "detachInterrupt", чего выпендриваться-то?
Сейчас вопрос такой, можно ли снять аппаратное прерывание через noInterrupts одним нажатием и навсегда.
вот именно что "навсегда". И не только нужное вам прерывание, но и все остальные.
Тогда вы можете пояснить хоть чуть чуть. перерыл весь интернет. Никаких примеров не нашел. Стандартные описания и все. привести какой-то пример, от чего можно было бы плясать...
Вы пишите что навсегда аппаратное прерывание снимаю функцией noInterrupts()...Это как сработал щелевой датчик.
Но потом же я включаю и выдаю interrupts()
Вот стандартное описание...Это цитата с сайта Гувера
ПЯ выключил прерывание датчиком. Ардуино ждет...я включаю кнопку СТАРТ и при этом там interrupts
Если можете пояснить - поясните плиз. Если есть куда читать - буду прищнателен...
Нашел вот это, но что делать с этим дальше - непонятно
void detachInterrupt(uint8_t);
Описание:
Отключает указанное прерывание.
Вызов:
командой noInterrupts() вы выключаете ВСЕ прерывания микроконтроллера. ВСЕ, понимаете?
Вы, может быть, не в курсе, но то прерывание, которое вы используете для датчика - в МК далеко не единственное. В микроконтроллере много других разных функций, работающих на прерываниях - причем многие из них необходимы для нормальной жизни МК. А вы их взяли и выключили.
Функцией noInterrupts() прерывания можно выключать только на очень короткое время. буквально на микросекунду. И если вы не понимаете, как это работает - лучше вообще эту функцию не трогайте. Если же вам надо выключить только свое прерывание - вам noInterrupts() не нужен, используйте детач.
А вообще, Нафаня, вы рано схватились за прерывания. Это совсем не для новичков тема. Вы вообще пока слепой котенок и мало что соображаете, вам лучше бы сначала сделать пяток проектов попроще
Можно и головную боль топором полечить.
Когда Вы требует МК запретить обработку прерываний, то это означает, что далее ни одно (почти) системное прерывание не будет выполнено. Т.е. вы должны забыть о millis(), delay(), выводе в Serial и иных приятных безделушках.
Если Вы используете attachInterrupt() , detachInterrupt(), то просто разрешаете или не разрешаете вызывать Вашу персональную функцию из штатного обработчика, не затрагивая все остальное.
Это все, что нужно знать, чтобы сделать правильный выбор между двумя вышеупомянутыми способами.
Нашел вот это, но что делать с этим дальше - непонятно
void detachInterrupt(uint8_t);
Описание:
Отключает указанное прерывание.
Вызов:
и что тут может быть непонятно? - если непонятно, значит вам еще рано... Хотя посмотрел на вашу регистрацию - если вы на четвертом году занятий ардуино все еще этого не поняли - может это просто не ваше?
Нашел вот это, но что делать с этим дальше - непонятно
void detachInterrupt(uint8_t);
Примерно за 10 часов до Вашего поста, я Вам про неё писал в посте #52. Теперь Вы её нашли? Вы посты читаете? Или только пишете?
А что с этим делать? Что Вы делаете с attachInterrupt? Подключаете? Ну, а этим отключайте.
Я стараюсь в силу своих возможностей и я тут слепой котенок - это верно.
Можно ли так делать?
Можно.
Оно ж не компилируется! Впрочем, делайте, мы свободные люди, кто же Вам запретит-то?
и прикрутил к кнопке СТАРТ . Является ли это корректно?
Протеус показал работоспособность...