Например TDA7294

Форум РадиоКот • Просмотр темы - Архитектура программ для младших PIC . RTOS для pic18 ?
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 20:42:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Чт окт 27, 2016 22:25:46 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
Здравствуйте, уважаемые форумчане.

Здравствуйте, уважаемые форумчане.

Уже неделю ковыряюсь в гугле по вопросу применения ОС для PIC 18.
Вопрос наверно даже не в том, как заюзать какую нить RTOS для PIC18 (я так понимаю, что это не те МК которые заточены под реалтайминговые ОСы),
а скорее какие архитектуры можно использовать для громоздких проектов...

До сих пор я все подпрограммы запускал при помощи флагов (которые устанавливались в процедурах прерываний от таймеров и др. источников),
в мейне у меня был цикл опроса флагов. Причем пришел я к этому просто тыканьем, но как оказывается до меня все давно придумано, и называется такая организация
проекта флаговым автоматом...
Теперь ломаю голову и не могу придумать как организовать вызов подпрограмм с учетом их приоритетности. Есть задачи которые необходимо обработать после выхода из
прерывания в течении 1 мс, а есть которые подождут и поболее - значит нужна очередь задач, а цикл по которому все крутится - вообще сильно мешает.

Наверняка есть готовые решения и возможно не очень сложные.
Крайний вариант это конечно RTOS, хоть я еще не совсем понял что это.
Есть Rtos for Pic24, Pic30 and Pic33 на сайте майкрочипа, но полагаю что на XC8 она не запустится, да и нужно ли?

Поделитесь кому не лень, кто как организует структуру своих программ для пик до 18ой линейки включительно...

Сейчас пишу код на XC8 в МПлаб. Конкретный камень - PIC18F6520
Спасибо...

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Чт окт 27, 2016 22:40:51 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Хороший ресурс.
Там же есть примеры для PIC18.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Чт окт 27, 2016 23:50:15 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Есть задачи которые необходимо обработать после выхода из прерывания в течении 1 мс
Если любая другая задача в каком-то месте выполняется более 1 мс (т.е. отдаст управление планировщику не раньше, чем через 1 мс), то без вытесняющего планировщика не обойтись.

А так, как уже предложили выше, "OSA" - неплохой вариант. Сам лично ей пользуюсь уже давно, нареканий никаких нет. Но она кооперативная. Все времена планируются программистом на этапе написания программы. Т.е. нужно чётко понимать, что происходит в программе, когда отдаётся управление планировщику, где и на какое время может задержаться передача, ...

Добавлено after 10 minutes 11 seconds:
Тю... Проморгал в Вашем сообщении слово "XC8". OSA, к сожалению, не поддерживает этот компилятор. Для 18-ых ПИКов - "MPLAB C18".


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Пт окт 28, 2016 17:05:48 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 17
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Сообщений: 124
Откуда: не с Уфы
Рейтинг сообщения: 0
Igor_Naum писал(а):
...
Есть задачи которые необходимо обработать после выхода из
прерывания в течении 1 мс, а есть которые подождут и поболее - значит нужна очередь задач, а цикл по которому все крутится - вообще сильно мешает.
...

если условие для необходимости быстро решить эту задачу появляется в самом обработчике, то разве нельзя её именно там и выполнить? Ведь по сути то или иное местоположение куска кода под выполнение этой задачи никакого значения не имеет, главное как я понял, его незамедлительно выполнить. То есть, как сформировались условия, так и выполняй, в этом случае даже флаг не нужен.
Либо можно просто манипулировать стеком, то есть подменить адрес возврата, но это не лучше и не хуже, а в принципе тоже самое.
Я думаю, можно и усложнить саму структуру основного цикла, разбить его на подциклы, и разделить частоту обращений в соответствии с приоритетами, то есть то, что важнее, крутишь чаще.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Пт окт 28, 2016 21:20:57 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
По поводу процедур в прерывании - это как-бы всеобщая практика, которой я стараюсь следовать.
В принципе в примитивных проектах, где один источник прерывания, а все остальные события происходят следом друг за другом я так и делал.

Сейчас получается, что основной цикл слишком громоздок, даже если сделать в прерывании что то быстрое, все-равно потом это нужно обработать в основном коде.
А если случилось много событий? Цикл просто может не завершится до конца, и тогда, при новом прерывании мы рискуем потерять старые данные, а при возврате попадем в середину цикла и
не обработаем новые данные, а будем заниматься бесполезным выводом информации на ЖК например .

Да бегло почитал введение в OSA, приятно что на русском и много инфы.
Подумываю над С18...

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Пн окт 31, 2016 23:23:18 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
А никто не сталкивался с MPLAB Harmony?
Там есть возможность подключения разных RTOS (freeRTOS openRTOS например).
Насколько понимаю поддерживает компиляторы XC.

Добавлено after 44 minutes 5 seconds:
А все, он для PIC32...

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Ср ноя 02, 2016 23:07:27 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
Остановился на OSA по ссылке выше...
Пытаюсь запустить тестовый проект из первого примера.

Компилятор С18 (3.47) + MPLab X IDE 3.4

И никак не могу подключить инклуды нормально.
Сначала проект не видел osa.h в папке с osa - после танцев с бубном вроде подключил.
Но теперь не подключается OSAcfg.h - строчка #include osa.h выделена желтым в расшифровке (не может найти OSAcfg.h хотя она в папке проекта).


Вообще в настройках проекта есть sourse folders ПРОЕКТА и include directories компилятора. И там, и там указываются подключаемые директории, но
какие куда директории подключать так и не понял...

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Ср ноя 02, 2016 23:42:28 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
1. В папку с проектом кидаем папку "osa".
2. В настройках компилятора, в подключаемых путях, добавляем текущую папку (".") и папку с ОСой ("osa").
3. Файл OSAcfg.h кладём в папку с проектом.

Это стандартные шаги для запуска OSA в MPLAB 8.xx . Для MPLAB X, думаю, всё должно быть идентичным...

Добавлено after 15 minutes 46 seconds:
Попробовал в Х-е. Всё без проблем.
Тут должны быть прописаны пути :
СпойлерИзображение
Вложение:
2016-11-03_23-39-07.png [170.48 KiB]
Скачиваний: 223


Проект :
Вложение:
temp.X.rar [1.43 MiB]
Скачиваний: 220


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Чт ноя 03, 2016 22:53:08 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
Спасибо за емкий ответ, Alex!
Все стало на свои места...
Запустил проект из учебника с задержками с небольшими поправками...

В частности, почему то компилятору не нравится строчка обработчика прерывания void interrupt isr (void) {}
Заменил на

#pragma interrupt isr
void isr (void) {}

моргает :)
На выходных поболее времени будет, буду разбираться дальше...

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Чт ноя 03, 2016 23:06:46 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Igor_Naum писал(а):
почему то компилятору не нравится строчка обработчика прерывания void interrupt isr (void) {}
Это синтаксис хайтека. В С18 обработчики немного по другому реализуются.

Добавлено after 10 minutes 5 seconds:
Ещё не забывайте, что в 18-ых PIC'ах 2 вектора прерываний - высокого и низкого приоритета.
Вот, что гласит мануал по поводу их прагм :

Изображение
Вложение:
2016-11-04_00-12-40.png [168.27 KiB]
Скачиваний: 1108


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Архитектура программ для младших PIC . RTOS для pic18 ?
СообщениеДобавлено: Вс ноя 06, 2016 12:27:15 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб янв 26, 2013 21:28:58
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
Потихоньку вникаю.
Простые примеры все отработал. Потихоньку думаю как применить к своему проекту...

Возникают вопросы, пытаюсь найти ответы:

1. Я так понимаю OS_Delay используется только в задачах, но в подпрограммах (например чтение отправка SPI) мы вольны использовать обычный Delay?
2. Ну вот в проекте у меня есть критическое событие - по таймеру раз в 20мс нужно прочитать с постоянным интервалом по 3 байта от 3-х устройств. Обработать можно потом...
Если у меня во время прерывания по таймеру УЖЕ выполняется длинная задача LCD Write, после прерывания мы вынуждены ее закончить до вызова сервиса OS,
прежде чем попадем в следующую задачу SPI Read. Варианты -
- SPI Read делать в прерывании (до 100 мкс)
- Длинные задачи типа LCD Write разбивать на более мелкие LCD Write Table(обновление таблицы), LCD Write Text (список), LCD Write Variables (обновление значений). Но
это полностью не решает проблему и добавит много новых задач - как то не функционально.

_________________
Чтобы избавиться от всяких котов, лучше всего обзавестись своим собственным...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y