shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Добрый день. Работаю с прерываниями в microblaze на отладочнике Spartan3e. Прерывания формирую от дип-переключателя на плате. Подтверждение прерывания вывожу через uart на ноут. Проблема в следующем: прерывания происходят и по фронту и по спаду. Я так понимаю, что контроллеру без разницы. Он реагирует только на изменение состояния? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Добрый день. Работаю с прерываниями в microblaze на отладочнике Spartan3e. Прерывания формирую от дип-переключателя на плате. Подтверждение прерывания вывожу через uart на ноут. Проблема в следующем: прерывания происходят и по фронту и по спаду. Я так понимаю, что контроллеру без разницы. Он реагирует только на изменение состояния? "дип-переключателя" имеют славную традицию "звенеть" - как следствие куча сигналов прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба "дип-переключателя" имеют славную традицию "звенеть" - как следствие куча сигналов прерываний. Я тестирую в дебаге пошагово. В регистрах контроллера все устанавливается и сбрасывается правильно. Дребезг не прокатывает. Программа крутится в бесконечном цикле. Переключаюсь, допустим, с 0 в 1 - срабатывает прерывание. Далее пошагово иду иду по программе до возврата к бесконечному циклу. Опять программа крутится, пока не переключусь с 1 в 0. И так по кругу. Он точно срабатывает по обоим фронтам. Вот я и не знаю дело в контроллере или это славный софт от Xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Добрый день. Работаю с прерываниями в microblaze на отладочнике Spartan3e. Прерывания формирую от дип-переключателя на плате. Подтверждение прерывания вывожу через uart на ноут. Проблема в следующем: прерывания происходят и по фронту и по спаду. Я так понимаю, что контроллеру без разницы. Он реагирует только на изменение состояния? Либо сделайте цифровой фильтр после переключателя, либо ловите прерывания от приемника uart. Клацнете на хосте - получите точно одно прерывание... Просто потом все равно приемник на прерывание повесите, так почему бы не сейчас? Ну и сделайте счетчик этих запросов и хоть 3 разряда выведите на светодиоды. для начала поклацаете на хосте, увидите, что счетчик шевелится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Либо сделайте цифровой фильтр после переключателя, либо ловите прерывания от приемника uart. Клацнете на хосте - получите точно одно прерывание... Просто потом все равно приемник на прерывание повесите, так почему бы не сейчас? Ну и сделайте счетчик этих запросов и хоть 3 разряда выведите на светодиоды. для начала поклацаете на хосте, увидите, что счетчик шевелится. Видно так и придется делать. Просто я думал, что контроллер можно настроить на срабатывание по фронту либо по спаду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Видно так и придется делать. Просто я думал, что контроллер можно настроить на срабатывание по фронту либо по спаду. А причем здесь это? У переключателя дребезг - милисекунды. У контроллера прерываний срабатывание за несколько тактов в десятки наносекунд... За этот период в милисекунды он найдет себе на кусочке импульса и "фронт" и "уровень" и вообще что угодно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба А причем здесь это? У переключателя дребезг - милисекунды. У контроллера прерываний срабатывание за несколько тактов в десятки наносекунд... За этот период в милисекунды он найдет себе на кусочке импульса и "фронт" и "уровень" и вообще что угодно... Притом, что я работаю в дебаге и после срабатывания прерывания я выставляю его запрет. Причем тут дребезг? К моменту разрешения нового прерывания могут пройти десятки секунд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Притом, что я работаю в дебаге и после срабатывания прерывания я выставляю его запрет. Причем тут дребезг? К моменту разрешения нового прерывания могут пройти десятки секунд. Дебаг останавливает процессор. Но кто сказал, что при этом в контроллере прерываний блокируются триггера, захватывающие запрос? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Дебаг останавливает процессор. Но кто сказал, что при этом в контроллере прерываний блокируются триггера, захватывающие запрос? Вряд ли там в контроллере копится очередь прерываний. Сработало прерывание, попали в обработчик, остановились. Переключатель там дальше "звенит", но этого никто не видит - признак прерывания так и висит. Пошли по шагам, сбросили прерывание, разрешили заново - в это время уже никакого дребезга нет. Не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Вряд ли там в контроллере копится очередь прерываний. Сработало прерывание, попали в обработчик, остановились. Переключатель там дальше "звенит", но этого никто не видит - признак прерывания так и висит. Пошли по шагам, сбросили прерывание, разрешили заново - в это время уже никакого дребезга нет. Не так? В понедельник проверю чистым сигналом с внутренней логики Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Вряд ли там в контроллере копится очередь прерываний. Сработало прерывание, попали в обработчик, остановились. Переключатель там дальше "звенит", но этого никто не видит - признак прерывания так и висит. Пошли по шагам, сбросили прерывание, разрешили заново - в это время уже никакого дребезга нет. Не так? Я не знаю как именно сделан контроллер прерываний в Микроблэйзе. Просто в данной ситуации у меня другой подход. Есть сигнал с дребезгом - ставлю фильтр. Десяток триггеров от многих тысяч роли не играет. Убираю дребезг в любом случае. На все медленные водные фронты. И не имею головной боли с "непонятками". Просто размениваю десять триггеров на десять дней работы над проектом, требуемых для разгадывания "непоняток" ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 8 декабря, 2017 Опубликовано 8 декабря, 2017 · Жалоба Я не знаю как именно сделан контроллер прерываний в Микроблэйзе. Просто в данной ситуации у меня другой подход. Есть сигнал с дребезгом - ставлю фильтр. Десяток триггеров от многих тысяч роли не играет. Убираю дребезг в любом случае. На все медленные водные фронты. И не имею головной боли с "непонятками". Просто размениваю десять триггеров на десять дней работы над проектом, требуемых для разгадывания "непоняток" ... Если бы я делал какой-то проект, то не заморачивался бы и поставил фильтр. Но на данный момент я просто изучаю процессор и все, что к нему прилагается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shumerok 0 11 декабря, 2017 Опубликовано 11 декабря, 2017 · Жалоба В общем, завел сигнал с выхода проца на вход и подавал инвертирующийся с интервалом 5 сек сигнал. Контроллер прерывания срабатывает по фронту и по спаду. По поводу накопления прерываний в контроллере пока не скажу, надо создавать проект в ISE и там генерировать прерывания. Прерывания действительно ставятся в очередь даже если стоит запрет. После разрешения прерывания происходит обработка следующего в очереди. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться