Есть прошивка для МК pic16f690: считывание емкостной кнопки. Нужно доработать и добавить библиотеку Modbus RTU от Ардуино в эту прошивку: заменить Software/Hardware-Serial функции на PIC'овские (SPBRG, TXIF, TXSTA и т.д.), реализовать функцию millis(), и другие небольшие правки. Библиотеку можно глянуть тут: https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino/blob/master/ModbusRtu.h Из трудностей разве что уже занятый таймер 0. Оплата на карту.
Тут надо выяснить процентное соотношение между: и Сдаётся мне что код библы весит в разы больше ) и правильнее будет портировать библу, а уже к ней добавить работу с кнопкой. Ну и вопрос по языку и среде разработке остаётся открытым.
Язык C++. на либу выше давал ссылку, она простая. Прошивку считывания кнопки скину сегодня через пару часиков. Там по сути одна функция readButton в цикле. Но она на прерываниях а я в них вообще не шарю. А из-за этих прерываний не удается нормально писать в TXIF - не знаю точно из-за чего, но есть подозрение, что меняется скорость МК, отсюда и скорость порта пляшет туда-сюда.
Вам принципиально нужны исходники или устроит просто рабочая прошивка ? У меня есть рабочая Modbus под PIC, но переписывать на С++ просто лень, мне проще будет допилить считывание кнопки.
Пользуюсь и MikroС и HI-TECH C - но они ANSI C. Я начинал с PIC16F84, это как первая любовь - недостатков не замечал.
Да, ошибся, не C++, а просто C. Не обратил внимания Компилятор XC8 использую. Вот репозиторий: https://bitbucket.org/syamskoy/livolo-modbus/src/master/ avr мне тоже больше нравится, но сначала хочется попробовать через pic сделать. Не получится - буду проектировать все через avr.
Думаю да, нужно на C, что бы можно было редактировать прошивку под нужды не прибегая к сторонней помощи, базовые знания какие-то есть для простых вещей Да и судя по коду считывания кнопки там не все так просто)
Если нужно в уже существующий девайс добавить функционал - это считай что заново все разработать. Тем более что нет ни исходников ни схем. Начать нужно с составления схемы электрической принципиальной (устроит и функциональная когда известно какие пины МК за что отвечают). А потом поняв какие ресурсы доступны для данной схемы включения МК писать софт. Для выполнения работ нужно 2-3 таких кнопки (при составлении схемы некоторые схемы придется подвергнуть раборке и отпайке некоторых деталей), наличие четкого ТЗ что получить на выходе и финансовые возможности. Про С++ точно придется забыть , С -под вопросом, а все писать на ASM, так как PIC16. PIC16 и ASM для него знаю отлично, так что пишите.
Ничего вышеперечисленного делать не надо. Прошивка по ссылке выше - полностью рабочая, если закомментировать modbus. Выключатель прекрасно работает. Вывод modbus надо сделать на стандартные пины pic16f690. Пин для DE/RE указывается в коде явно. Физически выключатель не нужен - там нет ничего, что может понадобится. В нем только сам МК, и два резистора на металическую планку - самая простая реализация емкостного сенсора. Все остальное - это силовая часть 220В -> 12В -> 3В, которая выкинута за ненадобностью. Какие пины задействованы для датчика - так же можно посмотреть в исходнике выше.