Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация алгоритма в си
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Vavan4ik
Всем привет!

Устройство: PIC + индикатор + кнопки + входа + выхода на реле итд

Задача на первый взляд ну очень простая, однако при реализации столкнулся с проблемой одновременной (точнее нужно везде успеть) работы со всеми частями устройства

1) Алгоритм содержит ветвление и различного рода задержк;
2) Описать состояния выходов как функцию состояния входов проблематично, точнее очень трудоемко и на данный момент не представляется возможным;
3) Схема работы прекрасно отображается блок-схемой;
4) пробовал использовать глобальную переменную увеличивающуюся со временем для реализации алгоритма - много возни с проверками;
5) время выполнения рабочего цикла от 15 с до 5 мин точность +- 0,1 с;

Вопрос: кто как решал подобные задачи???
Заранее благодарен
MrYuran
Вам нужен шедулер.
То есть такая штука, которая в зависимости от разных событий передаёт управление какому-либо процессу (или функции)

Самое простое - очень быстрый цикл, внутри которого опрашиваются необходимые флаги и передаётся управление соответствующим функциям.
Функции должны как можно быстрее возвращать управление основному циклу, чтобы не было больших задержек. Ни о каких delay - ах на NOP-ах не может быть и речи.
Ещё один вариант - взять готовую RTOS, потратить день на изучение документации и ещё день на расколупывание примеров.
И получите универсальное решение без лишнего геморроя.
Vavan4ik
Спасибо.
Ок, RTOS. Что посоветуете для PIC 16F887 ?
BSVi
scmRTOS, uC-OS2. С одной стороны, для этого процессоа любая операционка тяжеловата будет. С другой в 100мс желаемой задержки, скорее всего уложитесь.
MrYuran
Для PIC16 пожалуй только jacOS пойдёт.
http://jacos.narod.ru/
Vavan4ik
Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа smile.gif
Dog Pawlowa
Цитата(Vavan4ik @ Apr 16 2009, 11:02) *
Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа smile.gif

Зубы не сломайте smile.gif
При таких задачах RTOS - это скорее избыточное решение. Кстати, у него свои недостатки.
_Pasha
Все Rtos да rtos... Обратите внимание, что для пиков размер переключаемого контекста при вызове longjmp() минимален. Т.е. на этом можно даже временные задержки делать с переключением между потоками.
kolisnichenko_r
Много интересного о пиках есть тут http://www.microchip.su
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.