внешнее прерывание на меге

Unikolai
Offline
Зарегистрирован: 21.09.2016

Здравствуйте, не пойму, почему не работает прерывание...кнопка рабочая точно

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А что это у Вас написано? Можете прокомментировать?

Совершенно непонятно, что именно Вы хотели сказать в setup.

Так же неясно для чего нужны строки 16-22, если они не будут срабатывать никогда. Проверка в строке 16 ВСЕГДА будет давать false, т.е. 0 - он и в Африке 0.

Напишите пожалуйста, что именно Вы хотели сделать (прерывания разные бывают). А затем прокомментируйте код построчно - что делается в каждой строке.

Думаю, что в процесс этого у Вас все вопросы и решатся, а нет, так давайте Ваши комментарии сюда.

Unikolai
Offline
Зарегистрирован: 21.09.2016

на раьботу вчера брал это все мое добро...прбоавл заливать скетч, не вышло..пришел домой, тодже не вышло, пишет, мол чип неправильно указан...бутлоадер тоже не могу залить, то же пишет...это пипец, с чем это моет быть связан и как это решить7

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, эту проблему Вы решайте. А по коду, сделайте то, о чём говорил.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

в объявлении: volatile int i;

в loop: if (i==0)

только кнопка всё равно дребежять будеть.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да там не только это. Там, что ни строчка, то шедевр. Пусть прокомментирует код, может что-нибудь поймёт.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А мошт заработает

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

С какого перепугу-то оно заработает, если включать прерывание на int1, а ждать его на int0? Да и ... по прерыванию i должно стать нулём, а до всякого прерывания оно чему равно? Щас, всё заработает! (и, кстати, даже это ещё не всё :)))

Unikolai
Offline
Зарегистрирован: 21.09.2016

насчет инт 1 и 0 я заметил, эта ошибка вскрыдлась из-за копирования кода с другого скетча, с инт 0 тожде пробовал, не выходило

какое значение у i до прерывания значения не имеет абсолютно никакого ибо срабатывать будет nj/ что должно срабатывать только после перрывания

я прокомментирую позже, но судя по всему снача апридется слелать еще одну плату...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нууу, я в EIMSK ваапще, помню, ничего не писал, а INT0 исправно вызывалса. Как-то так совпало, наерн. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Unikolai пишет:

какое значение у i до прерывания значения не имеет абсолютно никакого 

На код-то смотрели?

Вы же узнаёте о том, что произошло прерывание именно потому, что i становится равным 0. А оно у Вас с амого начала ноль. Как же Вы узнаете, что прерывание произошло?

А вообще, пока Вы не прокомментируете всё строки, всякие разговоры неуместны.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

Нууу, я в EIMSK ваапще, помню, ничего не писал, а INT0 исправно вызывалса. Как-то так совпало, наерн. 

Я вот знаете, чего не понимаю. Вот человек не умеет программировть. Так почему не делать проще? Чем attachInterrupt не угодила? Зачем такскать код, которого не понимаешь из скетча в скетч?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

да, сорри, я attachInterrupt и использовал. Невнимателен, устал под вечер. :) 

Unikolai
Offline
Зарегистрирован: 21.09.2016

ну, i приравнивается к нулю, один раз срабатывает условие, после ничего не срабатывает, это по сути проверка для самого себя, что все корректно

после одного срабатывания i приравнивается к 1 и все

Unikolai
Offline
Зарегистрирован: 21.09.2016

а с чего вы взяли, что я ничего не понимаю в програмировании? я успешно пишу скрипты для экселя, скрипты на питоне для программы, в которой я работаю, приложения для андроида и был опыт даже в написании игр

я не занимаюсь тут тупым пеертаскиванием кода, тут больше дело в том, что мега для меня новый мк, пока я внем не силен, но я как раз таки вроде как внписал все, а печатать сам не печатаю, так как проще скопировать и проверить, чем самом му все изначально искать

про отт же  attachInterrupt  я ничего не знаю, но в том, что находится выше я не вижу никакой сложности, куда еще упрощать

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Unikolai пишет:

а с чего вы взяли, что я ничего не понимаю в програмировании?

Нет, брат. Человек, который перепутал "равно" (==) и "присвоить"(=), не пожет понимать в программировании. Поэтому 3.14здить не нужно, а слушать намеки - нужно.  Мягко и нежно Евгений Вам намекнул на это.

Вместо этого ты решил понты показать? Тогда иди в жопу. Вотпрям туда.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Unikolai пишет:

а с чего вы взяли, что я ничего не понимаю в програмировании?

Из Ваших постов, с чего же ещё? После Вашего пояснения

Unikolai пишет:

ну, i приравнивается к нулю, один раз срабатывает условие, после ничего не срабатывает, 

Вариантов остаётся два: либо Вы ничего не понимаете программировании, либо Вы .... (не обижайтесь) клинический идиот. Я всё-таки надеюсь, что первое.

Ну, смотрите, я про эту i Вам уже третий раз говорю, и что Вы мне отвечаете ... вот сами почитайте, какой бред Вы пишете!

Ответьте на вопрос когда "один раз срабатывает условие"?. Когда? Неужели после того, как первое прерывание прилетит? С какого-такого перепугу? У Вас i с самого начала уже 0! Ну, ... включилось питание, пошла проверка (никакого прерывания ещё и близко не было!) и что показала проверка? Правильно - показала. что прерывание было, т.к. i == 0.

Дошло?

Unikolai
Offline
Зарегистрирован: 21.09.2016

я не буду говорить, кто вы, но еще раз поясню, что писал я 

это всего лишь часть кода, простенький пример, на перрывании у меня диод, оторый мигает

скетч загружен, диод мигнул, значит все хорошо, нажимаем кнопку, мигает вновь, все прекрасно

вот вы мне поясните, что вас не устраивает в данном ходе мысли? или можно мыслить только как вы?

поясните, разве не моет быть такого, что с кнопкой что не так или с диодом? а тут я сразу проверяю, что если мигать не булет, значит дело в скетче или кнопке

плптп на тот момент была только-только спаяна, с мк, который я паявл второй раз(первый по каким-то причинам грелся) по своей невнимательности я частенькл делаю косячки и поэтоиу обычно делаю для себя таки проверки

дошло?

Unikolai
Offline
Зарегистрирован: 21.09.2016

"Нет, брат. Человек, который перепутал "равно" (==) и "присвоить"(=), не пожет понимать в программировании. Поэтому 3.14здить не нужно, а слушать намеки - нужно.  Мягко и нежно Евгений Вам намекнул на это.

Вместо этого ты решил понты показать? Тогда иди в жопу. Вотпрям туда."

ну я как пнимаю вам не важно, что я изначально писал, что этот код не вот чтобы прям уж и правильный, да? и с Евгением я вел беседу за то, может i бытm равна изначально 0 или нет

и вы посылаете человека подпльше, не програмиста, а человека, котрый пишет что-то под свои нужды, когда это нужно, мой профиль относительно далек от програмирования, но писать то, что я в нем ничего не понимаю и как иван-дурак что-то перставляю, тоже как бы не стоит

я думаю, если вы займетесь чем-то, что не касается вашего профиля, разьеретесь в это и через косяки что-то сделаете, то черехз еделю/другую из головы часть материала выветритс, верно? голова у нас так устроена, с этим ничего не поделать

мне очень жаль, что вы столь низки, чтобы такое писать, урезоньте свои проблеми с самим собой

Unikolai
Offline
Зарегистрирован: 21.09.2016

злые вы тут, если человек делает что-то не по-вашеиу, то все, трындец,  а зачем, для чего, для вас уже значения не имеет

есть тут и много хороших людей, жутк им благодарен, обладаю я жуткой заношивостьбюв некоторых вещах и хочется самом у во всем разобраться и поверьте мне, я бы сам разобрался, будь у меня время и терпение, но больше мне не хватило терпения кончно, хотелось, чтобы поскорее все зашевелилось, поому и написал

но увы и ах