внешнее прерывание на меге
- Войдите на сайт для отправки комментариев
Вс, 16/04/2017 - 00:28
Здравствуйте, не пойму, почему не работает прерывание...кнопка рабочая точно
int i = 0; void setup() { pinMode (2, INPUT); digitalWrite(2, HIGH); pinMode (3, OUTPUT); EICRA = (1 << ISC11) | (0 << ISC10); EIMSK = 1 << INT1; sei(); } void loop() { if (i = 0) { i = 1; digitalWrite(3, HIGH); delay(1000); digitalWrite(3, LOW); delay(1000); } } ISR(INT0_vect) { i = 0; }
мега328
А что это у Вас написано? Можете прокомментировать?
Совершенно непонятно, что именно Вы хотели сказать в setup.
Так же неясно для чего нужны строки 16-22, если они не будут срабатывать никогда. Проверка в строке 16 ВСЕГДА будет давать false, т.е. 0 - он и в Африке 0.
Напишите пожалуйста, что именно Вы хотели сделать (прерывания разные бывают). А затем прокомментируйте код построчно - что делается в каждой строке.
Думаю, что в процесс этого у Вас все вопросы и решатся, а нет, так давайте Ваши комментарии сюда.
на раьботу вчера брал это все мое добро...прбоавл заливать скетч, не вышло..пришел домой, тодже не вышло, пишет, мол чип неправильно указан...бутлоадер тоже не могу залить, то же пишет...это пипец, с чем это моет быть связан и как это решить7
Ну, эту проблему Вы решайте. А по коду, сделайте то, о чём говорил.
в объявлении: volatile int i;
в loop: if (i==0)
только кнопка всё равно дребежять будеть.
Да там не только это. Там, что ни строчка, то шедевр. Пусть прокомментирует код, может что-нибудь поймёт.
А мошт заработает
С какого перепугу-то оно заработает, если включать прерывание на int1, а ждать его на int0? Да и ... по прерыванию i должно стать нулём, а до всякого прерывания оно чему равно? Щас, всё заработает! (и, кстати, даже это ещё не всё :)))
насчет инт 1 и 0 я заметил, эта ошибка вскрыдлась из-за копирования кода с другого скетча, с инт 0 тожде пробовал, не выходило
какое значение у i до прерывания значения не имеет абсолютно никакого ибо срабатывать будет nj/ что должно срабатывать только после перрывания
я прокомментирую позже, но судя по всему снача апридется слелать еще одну плату...
Нууу, я в EIMSK ваапще, помню, ничего не писал, а INT0 исправно вызывалса. Как-то так совпало, наерн.
какое значение у i до прерывания значения не имеет абсолютно никакого
На код-то смотрели?
Вы же узнаёте о том, что произошло прерывание именно потому, что i становится равным 0. А оно у Вас с амого начала ноль. Как же Вы узнаете, что прерывание произошло?
А вообще, пока Вы не прокомментируете всё строки, всякие разговоры неуместны.
Нууу, я в EIMSK ваапще, помню, ничего не писал, а INT0 исправно вызывалса. Как-то так совпало, наерн.
Я вот знаете, чего не понимаю. Вот человек не умеет программировть. Так почему не делать проще? Чем attachInterrupt не угодила? Зачем такскать код, которого не понимаешь из скетча в скетч?
да, сорри, я attachInterrupt и использовал. Невнимателен, устал под вечер. :)
ну, i приравнивается к нулю, один раз срабатывает условие, после ничего не срабатывает, это по сути проверка для самого себя, что все корректно
после одного срабатывания i приравнивается к 1 и все
а с чего вы взяли, что я ничего не понимаю в програмировании? я успешно пишу скрипты для экселя, скрипты на питоне для программы, в которой я работаю, приложения для андроида и был опыт даже в написании игр
я не занимаюсь тут тупым пеертаскиванием кода, тут больше дело в том, что мега для меня новый мк, пока я внем не силен, но я как раз таки вроде как внписал все, а печатать сам не печатаю, так как проще скопировать и проверить, чем самом му все изначально искать
про отт же attachInterrupt я ничего не знаю, но в том, что находится выше я не вижу никакой сложности, куда еще упрощать
а с чего вы взяли, что я ничего не понимаю в програмировании?
Нет, брат. Человек, который перепутал "равно" (==) и "присвоить"(=), не пожет понимать в программировании. Поэтому 3.14здить не нужно, а слушать намеки - нужно. Мягко и нежно Евгений Вам намекнул на это.
Вместо этого ты решил понты показать? Тогда иди в жопу. Вотпрям туда.
а с чего вы взяли, что я ничего не понимаю в програмировании?
Из Ваших постов, с чего же ещё? После Вашего пояснения
ну, i приравнивается к нулю, один раз срабатывает условие, после ничего не срабатывает,
Вариантов остаётся два: либо Вы ничего не понимаете программировании, либо Вы .... (не обижайтесь) клинический идиот. Я всё-таки надеюсь, что первое.
Ну, смотрите, я про эту i Вам уже третий раз говорю, и что Вы мне отвечаете ... вот сами почитайте, какой бред Вы пишете!
Ответьте на вопрос когда "один раз срабатывает условие"?. Когда? Неужели после того, как первое прерывание прилетит? С какого-такого перепугу? У Вас i с самого начала уже 0! Ну, ... включилось питание, пошла проверка (никакого прерывания ещё и близко не было!) и что показала проверка? Правильно - показала. что прерывание было, т.к. i == 0.
Дошло?
я не буду говорить, кто вы, но еще раз поясню, что писал я
это всего лишь часть кода, простенький пример, на перрывании у меня диод, оторый мигает
скетч загружен, диод мигнул, значит все хорошо, нажимаем кнопку, мигает вновь, все прекрасно
вот вы мне поясните, что вас не устраивает в данном ходе мысли? или можно мыслить только как вы?
поясните, разве не моет быть такого, что с кнопкой что не так или с диодом? а тут я сразу проверяю, что если мигать не булет, значит дело в скетче или кнопке
плптп на тот момент была только-только спаяна, с мк, который я паявл второй раз(первый по каким-то причинам грелся) по своей невнимательности я частенькл делаю косячки и поэтоиу обычно делаю для себя таки проверки
дошло?
"Нет, брат. Человек, который перепутал "равно" (==) и "присвоить"(=), не пожет понимать в программировании. Поэтому 3.14здить не нужно, а слушать намеки - нужно. Мягко и нежно Евгений Вам намекнул на это.
Вместо этого ты решил понты показать? Тогда иди в жопу. Вотпрям туда."
ну я как пнимаю вам не важно, что я изначально писал, что этот код не вот чтобы прям уж и правильный, да? и с Евгением я вел беседу за то, может i бытm равна изначально 0 или нет
и вы посылаете человека подпльше, не програмиста, а человека, котрый пишет что-то под свои нужды, когда это нужно, мой профиль относительно далек от програмирования, но писать то, что я в нем ничего не понимаю и как иван-дурак что-то перставляю, тоже как бы не стоит
я думаю, если вы займетесь чем-то, что не касается вашего профиля, разьеретесь в это и через косяки что-то сделаете, то черехз еделю/другую из головы часть материала выветритс, верно? голова у нас так устроена, с этим ничего не поделать
мне очень жаль, что вы столь низки, чтобы такое писать, урезоньте свои проблеми с самим собой
злые вы тут, если человек делает что-то не по-вашеиу, то все, трындец, а зачем, для чего, для вас уже значения не имеет
есть тут и много хороших людей, жутк им благодарен, обладаю я жуткой заношивостьбюв некоторых вещах и хочется самом у во всем разобраться и поверьте мне, я бы сам разобрался, будь у меня время и терпение, но больше мне не хватило терпения кончно, хотелось, чтобы поскорее все зашевелилось, поому и написал
но увы и ах