реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Реализация алгоритма в си, переход от блок-схемы к программе
Vavan4ik
сообщение Apr 15 2009, 06:47
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 23-12-08
Из: Украина, Днепропетровск
Пользователь №: 42 690



Всем привет!

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

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

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

Вопрос: кто как решал подобные задачи???
Заранее благодарен
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 15 2009, 07:14
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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

Самое простое - очень быстрый цикл, внутри которого опрашиваются необходимые флаги и передаётся управление соответствующим функциям.
Функции должны как можно быстрее возвращать управление основному циклу, чтобы не было больших задержек. Ни о каких delay - ах на NOP-ах не может быть и речи.
Ещё один вариант - взять готовую RTOS, потратить день на изучение документации и ещё день на расколупывание примеров.
И получите универсальное решение без лишнего геморроя.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Vavan4ik
сообщение Apr 15 2009, 08:23
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 23-12-08
Из: Украина, Днепропетровск
Пользователь №: 42 690



Спасибо.
Ок, RTOS. Что посоветуете для PIC 16F887 ?
Go to the top of the page
 
+Quote Post
BSVi
сообщение Apr 15 2009, 10:11
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 18-12-07
Из: Киев
Пользователь №: 33 391



scmRTOS, uC-OS2. С одной стороны, для этого процессоа любая операционка тяжеловата будет. С другой в 100мс желаемой задержки, скорее всего уложитесь.


--------------------
http://bsvi.ru/ - блог эмбеддера
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 15 2009, 10:57
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Для PIC16 пожалуй только jacOS пойдёт.
http://jacos.narod.ru/


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Vavan4ik
сообщение Apr 16 2009, 08:02
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 23-12-08
Из: Украина, Днепропетровск
Пользователь №: 42 690



Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа smile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 16 2009, 08:18
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Vavan4ik @ Apr 16 2009, 11:02) *
Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ?
Спасибо мужики, буду грызть гранит RTOSа smile.gif

Зубы не сломайте smile.gif
При таких задачах RTOS - это скорее избыточное решение. Кстати, у него свои недостатки.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 16 2009, 10:19
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Все Rtos да rtos... Обратите внимание, что для пиков размер переключаемого контекста при вызове longjmp() минимален. Т.е. на этом можно даже временные задержки делать с переключением между потоками.
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Apr 17 2009, 05:23
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Много интересного о пиках есть тут http://www.microchip.su
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 14:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016