29 Март, 2024, 12:01:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
English
Russian
Сайт СВД ВС
Начало
Помощь
Поиск
Войти
Регистрация
Официальный форум СВД Встраиваемые Системы
>
Форум СВД ВС
>
Техническая поддержка
(Модератор:
Андрей Сеньков
) >
время выполнения
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: время выполнения (Прочитано 899 раз)
aslav
Пользователь
Сообщений: 39
время выполнения
«
:
15 Июль, 2020, 23:32:13 »
здравствуйте!
Имеем плату advantech 1780, пишу код, который выдает для DO0, D01 5В на контакты.
Создал в потоке импульс, 100мс.
В нем выполняю
1)
out8(base+xx,0b001); //установить 5В
жду 4мкс
out8(base+xx,0);//снять
жду 10 мкс
2)
out8(base+xx,0b010); //установить 5В
жду 4мкс
out8(base+xx,0);//снять
Так вот, проблема в том, что по показаниям осцилографа время выполнения 1) и 2) "скачет".
Другими словами то нормально порядка 8 мкс каждый фронт. То по 40мкс фронт.
с Clockperiod игрался, не помогло.
Может кто-нибудь подскажет как убрать задержки?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда
Сообщений: 1075
Re: время выполнения
«
Ответ #1 :
16 Июль, 2020, 09:48:17 »
Поскольку все действия выполняются в потоке, его могут вытеснить как другие потоки, так и обработчики прерываний. Если нужно понять кто вытесняет - можно собрать трассу ядра и посмотреть. В качестве решения можно попробовать следующее:
1. Повысить приоритет своему потоку.
2. Поскольку речь идет о задержке в 100мс, то явно присутствует таймерное прерывание. Можно приаттачить к нему тот же пульс с высоким приоритетом через InterruptAttachEvent без флага _NTO_INTR_FLAGS_END, что автоматически поставит ISR в начало очереди других клиентов и будет разблокировать поток в приоритетоном порядке.
3. Выполнять out() прямо в таймерном ISR.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Форум СВД ВС
-----------------------------
=> Информация
=> Техническая поддержка
=> Программное обеспечение
=> Инструментальные средства
=> Обсуждение сайта
=> Курилка
-----------------------------
International Forum
-----------------------------
=> English Discussion
Загружается...