Полная версия этой страницы:
Реализация алгоритма в си
Vavan4ik
Apr 15 2009, 06:47
Всем привет!
Устройство: PIC + индикатор + кнопки + входа + выхода на реле итд
Задача на первый взляд ну очень простая, однако при реализации столкнулся с проблемой одновременной (точнее нужно везде успеть) работы со всеми частями устройства
1) Алгоритм содержит ветвление и различного рода задержк;
2) Описать состояния выходов как функцию состояния входов проблематично, точнее очень трудоемко и на данный момент не представляется возможным;
3) Схема работы прекрасно отображается блок-схемой;
4) пробовал использовать глобальную переменную увеличивающуюся со временем для реализации алгоритма - много возни с проверками;
5) время выполнения рабочего цикла от 15 с до 5 мин точность +- 0,1 с;
Вопрос: кто как решал подобные задачи???
Заранее благодарен
MrYuran
Apr 15 2009, 07:14
Вам нужен шедулер.
То есть такая штука, которая в зависимости от разных событий передаёт управление какому-либо процессу (или функции)
Самое простое - очень быстрый цикл, внутри которого опрашиваются необходимые флаги и передаётся управление соответствующим функциям.
Функции должны как можно быстрее возвращать управление основному циклу, чтобы не было больших задержек. Ни о каких delay - ах на NOP-ах не может быть и речи.
Ещё один вариант - взять готовую RTOS, потратить день на изучение документации и ещё день на расколупывание примеров.
И получите универсальное решение без лишнего геморроя.
Vavan4ik
Apr 15 2009, 08:23
Спасибо.
Ок, RTOS. Что посоветуете для PIC 16F887 ?
scmRTOS, uC-OS2. С одной стороны, для этого процессоа любая операционка тяжеловата будет. С другой в 100мс желаемой задержки, скорее всего уложитесь.
MrYuran
Apr 15 2009, 10:57
Для PIC16 пожалуй только jacOS пойдёт.
http://jacos.narod.ru/
Vavan4ik
Apr 16 2009, 08:02
Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа
Dog Pawlowa
Apr 16 2009, 08:18
Цитата(Vavan4ik @ Apr 16 2009, 11:02)

Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа

Зубы не сломайте

При таких задачах RTOS - это скорее избыточное решение. Кстати, у него свои недостатки.
_Pasha
Apr 16 2009, 10:19
Все Rtos да rtos... Обратите внимание, что для пиков размер переключаемого контекста при вызове longjmp() минимален. Т.е. на этом можно даже временные задержки делать с переключением между потоками.
kolisnichenko_r
Apr 17 2009, 05:23
Много интересного о пиках есть тут
http://www.microchip.su
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.