Программлю тут процессора 18Ф26К22 и 27К40. Успешно победил ЕНЦ28j60, ДС1307. Интересные перспективы вырисовываются.. Компилятор ХС8-1.42, как руки дойдут, обновлюсь до 1.45. Подскажите, под сие семейство(18F) и ХС8 какие есть 100% работающие реалтаймы?
Попытался с наскока запустить FreRTOS, идущий в пакете harmony. Не получилось... Хотя только начал ковырять. Что есть надежного под эти процы? В моем случае идеологически желательно бы УАРТ и Езернет разделить по разным потокам..
Интересно... Я по наслышке к нему (MCC18) испытываю некую фобию, расскажу почему, как то например замечены баги: если есть тело функции но нет декларации то в итоге оно компилится без варнингов, и в итоге код не работает, была проблема связанная с распределением памяти при очень большом количестве переменных (старшие и младшие байты располагались в разных банках), ну и масса мелких багов которые и не упомню.. Это все слышал, до того как начал кодить сам.
Возможно я предвзят, но прослышав про все это как-то побаиваюсь его. ОК. "бояться трудностей - не программить вовсе...". Зашел на сайт, последняя версия компилятора от 2014 года. А проц 27К40 более новый вроде как, и есть еще более новые вкусные процы. Логика подсказывает что в заголовках на проц можно найти только данные про память, регистры и т.д, а как быть со спецификой выходного кода? Типа специфические инструкции, и т.д..
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
К сожалению, поддержка компилятора давно закончна и более новые процессоры он не поддерживает. Что касается багов. Лет уже ... даже и не помню сколько, пользуюсь им для 18 камней, проблем не обнаружено. Кроме одного - как Вы описали, с распределением памяти. Но, если о ней знать - это не проблема.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Спасибо, понял. Т.е если резюмировать коротко, то под 18-е семейство старше окончания срока поддержки МСС18 Вы считаете МСС18 более предпочтительным чем ХС8?
Что же касается 27К40 это что получается - относительно ОСРВ - аутодофе? Впрочем, подозреваю, что любую бешеную конструкцию можно наворотить в основном цикле, если думать внимательно...
Напоролся уже.. запустил подобным образом Модбас-мастер (в общем главном цикле обработка УАРТ и Езернет), после чего с пингом пошло нечто совершенно апокалиптическое.. но тут оказалось просто, атомарность однако нарушалась. В первом приближении костыль прост - отключил прерывания в некотором участке, и все резко выровнялось. Вот думаю, как бы правильнее поступить. Полностью боюсь от отключения прерываний не избавиться, но вопрос - если я оперирую сравнениями и прочими действиями над 8-битными переменными, которые задействованы и в прерывании и в главном цикле - это поможет? Сейчас флаги и 8-битные счетчики находятся в структурах, и именно на этом с атомарностью и возникла хрень..
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:1 Медали: 1
vinni_puh писал(а):
Вы считаете МСС18 более предпочтительным чем ХС8?
Нет, я такого не говорил Я только сказал, что пользуюсь им. И он вполне себе неплохой компилятор. Например, в отличии от старого доброго HI-TECH (а XC, на сколько я знаю, - тоже самое), MCC18 имеет стек для локальных переменных. Да, он программный, но он есть. А это уже плюс. XC я использую для 12/16/32 камней. Ничего плохого про него сказать не могу. Но, тут речь идёт о поддержке ОСЬю компиляторов, а не о плюсах/минусах самих компиляторов. Вышеприведённая мной OSA не поддерживает XC компиляторы, к сожалению. Была как-то попытка сделать нечто подобное для XC8, но из-за отсутствия времени и необходимости, развивать идею дальше не стал.
vinni_puh писал(а):
если я оперирую сравнениями и прочими действиями над 8-битными переменными, которые задействованы и в прерывании и в главном цикле - это поможет?
Доступ к 8-ми битным переменным всегда атомарен (для 8-ми битных процессоров, соответственно). Если, только, конечно Вы не используете их отдельные части (биты) и они не объявлены как volatile. Т.б. нет ЧМЗ-операций. Для примера - доступ к отдельным битам порта, в некоторых случаях, неатомарен. Хотя порт - 8-им битный регистр.
Вообще, если переделывать все флаги переносить из состава структур в uint8_t , то volatile бы сделал, но если подумать... все изменения в эти счетчики будут вноситься явно, самим кодом. Можно попробовать и без volatile. И там масса extern-объвлений на эти счетчики. (счетчик милисекунд таймаута, количество принятых в УАРТ байт, время ожидания периодических отправок (секунды), и все такое 8-ми-битное прочее.)
И еще.. по упомянутой проблеме с атомарностью. Напорол изначально... настройки девайса запихал в одну структуру, все, и что касается RS485 и Езернет. Ну и как писал, при включении 485 начался апокалипсис с пингом, и прочим обменом. Тогда закостылил - кусок обрабатывающий езернет исполняется под знаком GIE=0;, без проблем. Хочу теперь избавится от этого, в целом написано доходчиво, хочу вот переспросить - правильно ли понимаю, что даже если некоторые данные обрабатываются не атомарно, проблема может быть только в случае конкурентного кода (прерывание)? Т.е допустим, теперь переделаю настройки, обособлю езернет-часть так, чтобы эта структура не использовалась в прерывании. Насколько я понимаю тогда проблема уйдет?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения