Доброго времени суток.
Есть две платы с ATTINY 841 на борту (для удобства Master и Slave). У плат общее питание, земля и один сигнальный провод, по которому осуществляется коммуникация.
Проблема следующая. Не могу организовать двустороннее общение этих МК ни одним из возможный протоколов GyverBus.
Пробовал GBUSmini - GBUSmini и softUART - softUART.
Далее будет описание что делал/пробовал.
При помощи GBUSmini Master отправляет пачку данных Slave`у. Slave понимает что ему отправил Master. Аналогично если написать программу, где Slave отправляет данные Master`у. Если написать код так, чтобы Master отправлял пачку данных, а потом "слушал" что там ему ответят - сигнальная линия с 5В (порт приёма/отправки данных объявляется как INPUT_PULLUP), падает до 0В (смотрел осциллографом) с редкими импульсами менее 0,1 мкс (не совсем похоже на пачку данных). При попытке подтянуть резистором 10 кОм сигнальную линию к цепи питания редкие импульсы меняются на стандартную пачку данных, которую Slave не может "расшифровать". Причём если чередовать у Master`а запрос данных у Slave с периодической отправкой последнему пачки данных, которую ранее Slave понимал, то ничего не работает. Введение задержки между отправкой и приёмом данных не помогает.
softUART вообще не завёлся на ATTINY 841. Попробовал код из примера - на Mega заработал, а на тиньке - нет.
Ядро для тинек - ATTINYCore. Частота тактирования - внутренний 8 МГц Vcc > 4,5 В. Пробовал и с бутлоадером и без. Wire mode пробовал Master only и Both. Шью тиньки через мегу. В меге залит скетч Arduino as ISP.
Перечитал всё что нашёл с запуском GyverBus на всём, что не является стандартной ардуиной. Добавить отдельную сигнальную линию для отправки данных от Slave к Master нет возможности. Могу использовать только один сигнальный проводник. Может есть какой-нибудь другой протокол? Добавить модуль общения между тиньками тоже не могу. Платы критичны к габаритам. Максимум могу воткнуть по микросхеме SO-16 на каждую плату (без обвязки)
Есть две платы с ATTINY 841 на борту (для удобства Master и Slave). У плат общее питание, земля и один сигнальный провод, по которому осуществляется коммуникация.
Проблема следующая. Не могу организовать двустороннее общение этих МК ни одним из возможный протоколов GyverBus.
Пробовал GBUSmini - GBUSmini и softUART - softUART.
Далее будет описание что делал/пробовал.
При помощи GBUSmini Master отправляет пачку данных Slave`у. Slave понимает что ему отправил Master. Аналогично если написать программу, где Slave отправляет данные Master`у. Если написать код так, чтобы Master отправлял пачку данных, а потом "слушал" что там ему ответят - сигнальная линия с 5В (порт приёма/отправки данных объявляется как INPUT_PULLUP), падает до 0В (смотрел осциллографом) с редкими импульсами менее 0,1 мкс (не совсем похоже на пачку данных). При попытке подтянуть резистором 10 кОм сигнальную линию к цепи питания редкие импульсы меняются на стандартную пачку данных, которую Slave не может "расшифровать". Причём если чередовать у Master`а запрос данных у Slave с периодической отправкой последнему пачки данных, которую ранее Slave понимал, то ничего не работает. Введение задержки между отправкой и приёмом данных не помогает.
softUART вообще не завёлся на ATTINY 841. Попробовал код из примера - на Mega заработал, а на тиньке - нет.
Ядро для тинек - ATTINYCore. Частота тактирования - внутренний 8 МГц Vcc > 4,5 В. Пробовал и с бутлоадером и без. Wire mode пробовал Master only и Both. Шью тиньки через мегу. В меге залит скетч Arduino as ISP.
Перечитал всё что нашёл с запуском GyverBus на всём, что не является стандартной ардуиной. Добавить отдельную сигнальную линию для отправки данных от Slave к Master нет возможности. Могу использовать только один сигнальный проводник. Может есть какой-нибудь другой протокол? Добавить модуль общения между тиньками тоже не могу. Платы критичны к габаритам. Максимум могу воткнуть по микросхеме SO-16 на каждую плату (без обвязки)