Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

ОСРВ

Пт мар 02, 2018 09:54:42

Добрый день!

Программлю тут процессора 18Ф26К22 и 27К40. Успешно победил ЕНЦ28j60, ДС1307. Интересные перспективы вырисовываются..
Компилятор ХС8-1.42, как руки дойдут, обновлюсь до 1.45.
Подскажите, под сие семейство(18F) и ХС8 какие есть 100% работающие реалтаймы?

Попытался с наскока запустить FreRTOS, идущий в пакете harmony. Не получилось... Хотя только начал ковырять.
Что есть надежного под эти процы? В моем случае идеологически желательно бы УАРТ и Езернет разделить по разным потокам..

Re: ОСРВ

Пт мар 02, 2018 10:34:36

OSA. Но XC-компилятор она не поддерживает. Под 18-ые камушки - MCC18, вполне себе отличный компилятор.

Re: ОСРВ

Пт мар 02, 2018 11:07:36

Интересно... Я по наслышке к нему (MCC18) испытываю некую фобию, расскажу почему, как то например замечены баги: если есть тело функции но нет декларации то в итоге оно компилится без варнингов, и в итоге код не работает, была проблема связанная с распределением памяти при очень большом количестве переменных (старшие и младшие байты располагались в разных банках), ну и масса мелких багов которые и не упомню..
Это все слышал, до того как начал кодить сам.

Возможно я предвзят, но прослышав про все это как-то побаиваюсь его. ОК. "бояться трудностей - не программить вовсе...".
Зашел на сайт, последняя версия компилятора от 2014 года. А проц 27К40 более новый вроде как, и есть еще более новые вкусные процы. Логика подсказывает что в заголовках на проц можно найти только данные про память, регистры и т.д, а как быть со спецификой выходного кода? Типа специфические инструкции, и т.д..

Re: ОСРВ

Пт мар 02, 2018 18:02:30

К сожалению, поддержка компилятора давно закончна и более новые процессоры он не поддерживает.
Что касается багов. Лет уже ... даже и не помню сколько, пользуюсь им для 18 камней, проблем не обнаружено. Кроме одного - как Вы описали, с распределением памяти. Но, если о ней знать - это не проблема.

Re: ОСРВ

Пт мар 02, 2018 19:00:20

А я уже с год как перешел на ХС8 для PIC10 - PIC18: немного подправил исходники - проблем нет

Re: ОСРВ

Пт мар 02, 2018 19:34:49

Проблем то может и не быть, но речь идёт о поддержке RTOS компиляторов.

Re: ОСРВ

Вт мар 06, 2018 06:43:24

Добрый день!

Спасибо, понял.
Т.е если резюмировать коротко, то под 18-е семейство старше окончания срока поддержки МСС18 Вы считаете МСС18 более предпочтительным чем ХС8?

Что же касается 27К40 это что получается - относительно ОСРВ - аутодофе? Впрочем, подозреваю, что любую бешеную конструкцию можно наворотить в основном цикле, если думать внимательно...

Напоролся уже.. запустил подобным образом Модбас-мастер (в общем главном цикле обработка УАРТ и Езернет), после чего с пингом пошло нечто совершенно апокалиптическое.. но тут оказалось просто, атомарность однако нарушалась. В первом приближении костыль прост - отключил прерывания в некотором участке, и все резко выровнялось.
Вот думаю, как бы правильнее поступить.
Полностью боюсь от отключения прерываний не избавиться, но вопрос - если я оперирую сравнениями и прочими действиями над 8-битными переменными, которые задействованы и в прерывании и в главном цикле - это поможет?
Сейчас флаги и 8-битные счетчики находятся в структурах, и именно на этом с атомарностью и возникла хрень..

Re: ОСРВ

Вт мар 06, 2018 07:12:39

А SDCC для 18-х пиков не использовали, как оно?

Re: ОСРВ

Вт мар 06, 2018 09:02:34

vinni_puh писал(а):Вы считаете МСС18 более предпочтительным чем ХС8?
Нет, я такого не говорил :)
Я только сказал, что пользуюсь им. И он вполне себе неплохой компилятор.
Например, в отличии от старого доброго HI-TECH (а XC, на сколько я знаю, - тоже самое), MCC18 имеет стек для локальных переменных. Да, он программный, но он есть. А это уже плюс.
XC я использую для 12/16/32 камней. Ничего плохого про него сказать не могу.
Но, тут речь идёт о поддержке ОСЬю компиляторов, а не о плюсах/минусах самих компиляторов. Вышеприведённая мной OSA не поддерживает XC компиляторы, к сожалению.
Была как-то попытка сделать нечто подобное для XC8, но из-за отсутствия времени и необходимости, развивать идею дальше не стал.

vinni_puh писал(а):если я оперирую сравнениями и прочими действиями над 8-битными переменными, которые задействованы и в прерывании и в главном цикле - это поможет?
Доступ к 8-ми битным переменным всегда атомарен (для 8-ми битных процессоров, соответственно). Если, только, конечно Вы не используете их отдельные части (биты) и они не объявлены как volatile. Т.б. нет ЧМЗ-операций.
Для примера - доступ к отдельным битам порта, в некоторых случаях, неатомарен. Хотя порт - 8-им битный регистр.

Re: ОСРВ

Вт мар 06, 2018 09:36:38

Вообще, если переделывать все флаги переносить из состава структур в uint8_t , то volatile бы сделал, но если подумать... все изменения в эти счетчики будут вноситься явно, самим кодом. Можно попробовать и без volatile. И там масса extern-объвлений на эти счетчики. (счетчик милисекунд таймаута, количество принятых в УАРТ байт, время ожидания периодических отправок (секунды), и все такое 8-ми-битное прочее.)

Про попытку.. эх, если бы я шарил в АСМЕ...

Re: ОСРВ

Вт мар 06, 2018 10:44:52

vinni_puh писал(а):Про попытку.. эх, если бы я шарил в АСМЕ...
Там уже не надо шарить в АСМе, планировщик сделан, осталось на Си накрутить все необходимые сервисы.

Добавлено after 8 minutes 48 seconds:
Ссылка в той теме уже битая. Видимо, я снёс с диска этот архив...
На вский случай выложу сюда :
OS_XC.rar
(271.76 KiB) Скачиваний: 197

Re: ОСРВ

Вс мар 18, 2018 16:14:38

По просьбе трудящихся, исправил проблему с новыми версиями компилятора.
Вылезала ошибка
i get a "undefined symbol `fpbase`" error message.

Пробуем, тестируем, закидываем помидорами :)

OS_XC.rar
(270.8 KiB) Скачиваний: 165

Re: ОСРВ

Вт мар 20, 2018 07:21:38

PIC16F1825 - собралось! Сразу 5кб НЕХ. Компилятор ХС8 1.45. Класс! Соорудить надо чего-нить на скорую руку...

Re: ОСРВ

Вт мар 20, 2018 17:47:26

И еще.. по упомянутой проблеме с атомарностью. Напорол изначально... настройки девайса запихал в одну структуру, все, и что касается RS485 и Езернет. Ну и как писал, при включении 485 начался апокалипсис с пингом, и прочим обменом. Тогда закостылил - кусок обрабатывающий езернет исполняется под знаком GIE=0;, без проблем. Хочу теперь избавится от этого, в целом написано доходчиво, хочу вот переспросить - правильно ли понимаю, что даже если некоторые данные обрабатываются не атомарно, проблема может быть только в случае конкурентного кода (прерывание)? Т.е допустим, теперь переделаю настройки, обособлю езернет-часть так, чтобы эта структура не использовалась в прерывании. Насколько я понимаю тогда проблема уйдет?
Ответить