#1 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 10:33:14

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

#2 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 10:24:48

Olej, вижу ты не успокоишься никак. А теперь к этим 100001 шт. причисляй ка уже и себя.
Объясню как нельзя проще: 4 порта прерываний, по описанию,  ОДИНАКОВЫЕ.
Пишу тестовый скетч для всех разом и для каждого в отдельности. В attachinterrupt ставлю по очереди RISING, затем FALLING. Подаю на каждый порт, по очереди, одинаковое кол-во импульсов - 100. Порты 18, 19, 20  прерываются именно 100 раз, а 21-й 70 раз.
Теперь понятно, наконец?
Ставлю всем HIGH, все 4 теперь прерываются 100 раз.
А по описанию свойств портов, они одинаковые.

1.2.1. Asynchronous Sensing in ATmega2560
From Table 1-2 External Interrupts Sense Configuration interrupts INT3:0 are registered asynchronously. Pulses on INT3:0 pins wider than the minimum pulse width (typically 50ns for ATmega2560) will generate an interrupt. Shorter pulses are not guaranteed to generate an interrupt.

источник: INT0-INT3 ; вектор: 2-5; порт: PD0-PD3. По даташиту они одинаковые.

По даташиту про хай, правда нету упоминаний. Надо бы CHANGE опробовать.

#4 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 01:24:07

Так это ж не природа, это ж творение рук человеческих. Мегу, я имею ввиду. А тут чудес хватает. В своих Errata-х обычно производители свои косяки описывают. Но я ж писал, некогда было ерраты на 2560 искать. Нашел решение сам и гут.

#5 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 01:16:07

Ладно, все, отбой. Переплевыванием надоело заниматься big_smile .

#7 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 01:13:48

Вопрос, изначальный, читай в самом первом посте. 21-я нога (2-е прерывание) среди собратьев 18,19,20 нога, отрабатывает не как они. Хотя по описанию они одинаковые технически.

#10 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 00:37:34

Так что за сим позвольте откланяться, знатоки МК. Всем спок ночи. Пусть вам приснятся адресные пространства флэш памяти МК, где хаотично расположились вектора прерываний и заблудшая прога юзера раскорячилась в недоумении - куды пойти, шо делать?  tongue

#11 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 00:35:47

А заливку я делал в чистый кристалл, HEX файлом,программатором, через ISP, предварительно его, кристалл потерев. И как стартует прога с бутлодырем и без него прекрасно видно в Serial monitor.

#12 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-25 00:20:43

Nefreemen, да, как я вижу все действительно плохо. Как говорится - "слышал звон, да не знаю где он". Дальнейшую дискуссию в этой теме считаю просто нецелесообразной, когда пишут такие знатоки МК. Тема называется "Прерывания Mega2560". А уж с бутлодырем кристалл или без него - значения не имеет. Где бы вектора на обработку ни находились, они не меняют технических свойств входов прерываний. И фьюзы их тоже не изменят.

#13 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 23:18:57

http://microsin.net/programming/avr/arduino-mega-2560.html.

Green, ну а на твой счет, мне усе ясно.))

#14 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 23:10:27

А что? Фьюзы уже за прерывания отвечают? ПисАл на чистый кристалл. Без загрузчика. Потому, что загрузчик перехватывает сигнал, например, по UARTу, чтобы прочухать, что к нему ломятся по поводу  прошивания. Ну и хрен его знает, что он еще может перехватывать. Но этот вопрос уже отвалился.  Да и по фиг, где и в какой секции находится переход по прерыванию. Ардуина IDE не оперирует адресами прерываний в чистом виде. Если прерывание возникло, оно запишется в регистре прерываний, т.е. там установится флаг этого прерывания  и встанет в очередь обработки. И как только мы закончим обработку текущего прерывания, по выходу из обработчика мы попадаем на обработку следующего прерывания, поскольку по команде RETI, какая стоит на выходе из прерывания, автоматом разрешаются все прерывания. А под идентичностью я понимаю характер прерываний лоу, хай, перепады. Кстати, вот кусочек статьи, по прерываниям в AVR:
   "Также любое прерывание имеет свой флаг прерывания. Этот флаг устанавливается в "1" в момент, когда должно произойти прерывание, даже если прерывания глобально запрещены и соответствующая программа обработки прерывания не вызывается. Можно, например, внутри какого-нибудь обработчика прерывания по этому флагу проверять было ли какое-либо прерывание или нет. Флаги внешних прерываний являются 7-м и 6-м битом регистра GIFR. Флаги прерываний сбрасываются записью в них "1"." 7-м и 6-м это про Атмегу 8.

#15 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 20:29:10

Так при всех 4-х хаях работает прекрасно. И обработчики насчитывают то, что нужно. А стоит поставить хотя бы 1 лоу, там где я говорил, и все. Почему тогда лоу на двух других входах не вешает мегу? Эти 6 внешних прерывания, я так понял, идентичны. Что скажешь? Дядя. Почему хаи не вешают мегу, хотя состояния входов прерываний непредсказуемы в момент старта проги?

#17 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 15:54:49

Вернее не суточного, полусуточного.
Вообще, довольно странный этот контроллер.
Поставил на все 4-е входа прерываний режим LOW и... контроллер стал виснуть уже в setapе.
Опять ни хрена не пойму в чем дело. Стал по очереди менять на HIGH. Выяснилось, что при установке 4-го и 5-го входа прерываний в режим LOW, контроллер виснет. У меня на всех вышеописанных входах ловятся импульсы с одинаковых датчиков. Обрабатываются прерывания одинаковыми подпрограммами. Только при установке этих входов в режим HIGH все работает отлично.
Что-то разочаровала меня эта мега 2560. Erratов от Атмела не читал - некогда было. Все методом "проб и ошибок".
Да, еще скажу: состояния выходов датчиков могут быть любыми при включении устройства.
В итоге потраченного времени, в общей сложности, часов 8.

#18 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 15:51:18

Передаю бесценный опыт суточного поиска решения проблемы:
хреново я пробовал другие режимы интерраптов на этих ногах. Значит так: 18,19,20 в любом режиме считают одинаково. А вот 21-я правильно считает только LOW или HIGH. Перевел я и другие ноги в режим HIGH и, блин, песня! Проект можно считать сданным! lol
21-я нога хреново отрабатывает и FALLING и RISING. Я то сначала думал, что Ардуинов бутлодырь подсирает как-нить.
Залил HEX в чистый кристалл, без бутлодыря, таже хрень, ну и докопался, в итоге, что к чему. Уря-я-я-а!

#19 Re: Апаратні питання » Прерывания Mega2560 » 2018-03-24 01:04:53

Да, вдогонку: пробовал еще два других свободных внешних прерывания - 2 и 3 нога. Там так же как и на 21-й. Т.е. картина такая - из шести внешних прерываний три ловят так, а другие эдак.

#20 Апаратні питання » Прерывания Mega2560 » 2018-03-24 01:00:32

vicstr
відповідей: 33

Дело такое: Ардуина мега2560, используем четыре внешних прерывания на входах 18,19,20,21. Режим FALLING(да и другие режимы пробовал). Прерывания ловлю от оптоэнкодеров. Значит так: три прерывания (18,19,20) ловятся как надо, а с 21 ноги почти в 2 раза меньше. Пробовал другие платы 2560. На одних как надо, на других, как описано выше. 21-й вывод на плате подписан как SCL. Не тут ли "собака порылась"? Может знает кто наверняка? Подскажите, плиз, делать то что? Завал ведь корячится. Караул! yikes
Частота импульсов от энкодеров на всех входах примерно одинаковая.

Підвал форуму