ZEbr 0 13 мая, 2014 Опубликовано 13 мая, 2014 · Жалоба Есть прграмма написанная на PIC32. Есть преравание по изменению уровня на ножке проца. Время входа в прерывание 880 нс. Вопрос такой. Как уменьшить время входа в прерывание? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 13 мая, 2014 Опубликовано 13 мая, 2014 · Жалоба Какова тактовая частота процессора? Что вы подразумеваете под "временем входа в прерывание"? Как вы измеряете это время? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 13 мая, 2014 Опубликовано 13 мая, 2014 (изменено) · Жалоба А какое время входа в обработчик Вам необходимо иметь и почему? У dsPIC33, к примеру, это время порядка 5-ти тактов CPU. Входной фильтр вывода там не дает случайно задержку? Изменено 13 мая, 2014 пользователем skyv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZEbr 0 13 мая, 2014 Опубликовано 13 мая, 2014 (изменено) · Жалоба SCLK = 80MHz. Под временем понимаю Время входа в обработчик. Измеряю осциллографом, на ножке которая изменяет свое состояние по прерыванию. Ножка на которую заведено прерывание подается меандр, по изменению уровня срабатывает прерывание и вкл. или выкл. измеряемая ножка. Уменьшил время входа в прерывание поставив приоритет 7, время стало 600нс. Но это все равно много! Изменено 13 мая, 2014 пользователем ZEbr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZEbr 0 15 мая, 2014 Опубликовано 15 мая, 2014 (изменено) · Жалоба Сегодня посмотрел в симуляторе, время входа в обработчик составляет 300нс. Не пойму куда съедаются еще 300нс которые я намеряю? :( :( :( Изменено 15 мая, 2014 пользователем ZEbr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 15 мая, 2014 Опубликовано 15 мая, 2014 · Жалоба Уменьшил время входа в прерывание поставив приоритет 7, время стало 600нс. Но это все равно много! В Вашей тестовой задаче должен быть только один единственный обработчик. Для этого случая приоритет не должен влиять на время входа в обработчик или его влияние должно быть незначительным. Data Sheet что рассказывает по данному вопросу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 15 мая, 2014 Опубликовано 15 мая, 2014 · Жалоба Сегодня посмотрел в симуляторе, время входа в обработчик составляет 300нс. Не пойму куда съедаются еще 300нс которые я намеряю? :( :( :( я в пиках не бум-бум, но насколько понимаю по аналогии с кортексами, частота периферии гораздо ниже чем частота ядра CPU. И собсвенно ожидать моментального "вкл. или выкл. измеряемая ножка" не придется попробуйте написать тупую программу toggle-ножки покругу и посмотреть осциллом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
volodya_t 0 16 мая, 2014 Опубликовано 16 мая, 2014 · Жалоба В PIC32 действительно устанавливается частота переферийных модулей с делителем от частоты CPU проверьте настройки. Дополнительно С компилятор предполагает сохранение некотрых регистров. Посмотрите ассемблерный код обработчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
theBMV 0 16 января, 2015 Опубликовано 16 января, 2015 · Жалоба Вы можете изменить свой скрипт компоновщика таким образом, чтобы Ваше прерывание умещалось непосредственно в таблице векторов прерываний (exception mem). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ВАСЯН 0 3 июня, 2015 Опубликовано 3 июня, 2015 · Жалоба Основное ускорение обработки прерывания происходит именно при установке приоритета 7. Если приоритет 7, то часть регистров сохраняется аппаратно, а не программно, это сильно укорачивает время до начала обработки вашего прерывания. Долго ковырялся в дизассемблере и разочаровало то, что в PIC32. в любом случае даже при использовании теневых регистров (приоритет7), все равно при входе в прерывание, начинают сохраняться некоторые регистры в стек. Какие только я директивы не использовал, все равно чуть больше десятка операций остается. Ускорить работу еще можно путем повышения тактовой частоты периферии, там для этого есть отдельный делитель. Ну и еще вариант- разогнать ядро. У меня разгонялся до 120 МГц, но некоторые экземпляры работали не стабильно. На частоте 110-115 работали нормально все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 21 июня, 2015 Опубликовано 21 июня, 2015 · Жалоба Основное ускорение обработки прерывания происходит именно при установке приоритета 7. Если приоритет 7, то часть регистров сохраняется аппаратно, а не программно, это сильно укорачивает время до начала обработки вашего прерывания. Долго ковырялся в дизассемблере и разочаровало то, что в PIC32. Оставьте в покое С32 и напишите свой обработчик на ассемблере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ВАСЯН 0 22 июня, 2015 Опубликовано 22 июня, 2015 · Жалоба Оставьте в покое С32 и напишите свой обработчик на ассемблере. Осталось только обеспечить безопасное использование ресурсов. Чтобы обработчик на ассемблере не помешал остальному коду скомпилированному при помощи С32. Учитывая, то что описание ассемблера предоставлено компанией MIPS, а в микроконтроллере PIC32 функциональность ядра урезана, то разобраться в прявязке ядра к периферии не очень просто. Да и компилятор С32 на мой взгляд имеет мало настроек. Вобщем с ассемблером в PIC32 стоит связываться только если очень нужно. Чтобы "дергать ножкой" в прерывании, надо внимательно настроить частоту периферии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 23 июня, 2015 Опубликовано 23 июня, 2015 · Жалоба Привязка ядра к периферии - это что значит? Каких ресурсов? Если вы знаете, для чего вам нужно прерывание, написать обработчик не должно представлять сложностей. Возьмите за основу обработчик сгенерированый C32. может вы можете его улучшить, скажем использовать меньше регистров и как следствие меньше сохранять. Чтобы "дергать ножкой" в прерывании, надо внимательно настроить частоту периферии. Ну так настройте, в чем проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться