#1 2018-03-24 01:00:32

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Прерывания Mega2560

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

Неактивний

#2 2018-03-24 01:04:53

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Неактивний

#3 2018-03-24 15:51:18

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Неактивний

#4 2018-03-24 15:54:49

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Остання редакція vicstr (2018-03-24 18:05:54)

Неактивний

#5 2018-03-24 16:50:00

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Прерывания Mega2560

vicstr пише:

21-я нога хреново отрабатывает и FALLING и RISING. Я то сначала думал, что Ардуинов бутлодырь подсирает как-нить.
Залил HEX в чистый кристалл, без бутлодыря, таже хрень, ну и докопался, в итоге,

"докопался" - это когда понятно что происходит и почему?

Неактивний

#6 2018-03-24 18:01:00

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

Именно.

Неактивний

#7 2018-03-24 19:23:33

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Прерывания Mega2560

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

Остання редакція Green (2018-03-24 19:24:29)

Неактивний

#8 2018-03-24 20:29:10

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Остання редакція vicstr (2018-03-24 20:41:41)

Неактивний

#9 2018-03-24 21:10:04

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Прерывания Mega2560

А, ну если код не твой, тогда да. Так и действуй, методом тыка.))

Неактивний

#10 2018-03-24 21:10:18

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Прерывания Mega2560

В Atmega2560 есть 8 внешних прерываний. Почему в среде ArduinoIDE используется только 6 wink ? Вот Вы пишите что писали на "чистый кристалл", извиняюсь на "чистый" это Вы понимаете без загрузчика? Не скромный вопрос а фьюзы Вы подправили? А зря даташит не читаете, знали бы какой адрес перехода по прерыванию и в какой секции он находится и причем тут загрузчик wink.

Неактивний

#11 2018-03-24 21:44:38

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Прерывания Mega2560

В дополнение, еще "информация к размышлению"  smile . В мега2560, прерывания 0,1,2,3 асинхронные, все остальные синхронные, поэтому они уже не идентичны smile. Следовательно на синхронных входах генерация прерывания произойдет минимум через один такт. Поэтому если нужно получить прерывание по низкому уровню то его нужно удерживать до окончания выполнения текущей команды smile.

Неактивний

#12 2018-03-24 23:10:27

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Остання редакція vicstr (2018-03-24 23:25:15)

Неактивний

#13 2018-03-24 23:18:57

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

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

Остання редакція vicstr (2018-03-24 23:30:54)

Неактивний

#14 2018-03-25 00:00:27

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Прерывания Mega2560

Все очень плохо  sad, даже хуже чем я предполагал sad . Так, для общего развития, может в будущем пригодится smile , фьюзы отвечают за очень многое, в том числе за использование адресного пространства МК. Даже если и загрузчик не записан (как Вы думаете smile ), фьюзы которые отвечают за область загрузчика блокируют для программы это адресное пространство и делает мапинг очень многих векторов  в том числе прерываний. Хотя впрочем зачем это все Вам smile. Вам и так все "понятно" потому что уж многое "пофиг", тем более

Ардуина IDE не оперирует адресами прерываний в чистом виде.

Ну ну...А библиотеки тоже "пофиг" как в прочем и то что в них smile ?

Неактивний

#15 2018-03-25 00:20:43

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Остання редакція vicstr (2018-03-25 00:23:21)

Неактивний

#16 2018-03-25 00:35:47

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Неактивний

#17 2018-03-25 00:37:34

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Остання редакція vicstr (2018-03-25 00:42:19)

Неактивний

#18 2018-03-25 00:56:18

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Прерывания Mega2560

vicstr пише:

за сим позвольте

Разволновалсо ...  big_smile
Не любит. sad

Неактивний

#19 2018-03-25 00:58:50

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

OleJ, да спи ужо tongue . Я, лично, ужо падаю сплять.

Остання редакція vicstr (2018-03-25 01:00:09)

Неактивний

#20 2018-03-25 01:00:20

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Прерывания Mega2560

vicstr пише:

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

Если "проффесор" и столько знаний то чего здесь пишем, нет не пишем, а спрашиваем smile, а? Да, спокойной ночи пусть и Вам приснятся "сериал мониторы" которые показывают откуда стартует ракета smile. А хаос не в программах и векторах он может быть только в голове перемешавшись с апломбом.

Неактивний

#21 2018-03-25 01:08:47

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

Эт точно, в голове.  cool

Неактивний

#22 2018-03-25 01:13:48

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Неактивний

#23 2018-03-25 01:14:51

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

При чем тут вектора и фьюзы?

Неактивний

#24 2018-03-25 01:16:07

vicstr
Учасник
Зареєстрований: 2018-03-24
Повідомлень: 21

Re: Прерывания Mega2560

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

Неактивний

#25 2018-03-25 01:18:37

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Прерывания Mega2560

vicstr пише:

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

Чудес в природе не бывает. Или если бывают, то крайне редко.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

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