dim3740 Опубликовано 8 августа, 2019 Автор Поделиться Опубликовано 8 августа, 2019 на 2 МК void setup() { pinMode(8, Output); digitalWrite(8,1); pinMode(4, INPUT); // кнопка Wire.begin(20); Wire.onReceive(receiveEvent); } void loop { } void receiveEvent(int howMany) { if (digitalRead(4) == 0) // нажали кнопку на этом МК, а затем с МК1 - (мастера) послали по I2C { digitalWrite(8, 0); // этот порт соединен обратно на МК1 } else { digitalWrite(8, 1); } int NomSong; // этот код нужен чтоб просто опорожнить i2с while (Wire.available()) { NomSong = Wire.read(); } } // все на 1 МК void setup() { Wire.begin(); Wire.setClock(10000); pinMode(10, Input); // порт соединен с выходным портом 8 на МК2 } void loop(){ if (digitalRead(5) == 0) // кнопка на МК1 для посыла по I2C { Wire.beginTransmission(20); // transmit to device #20 Wire.write(55); // отправляем номер (byte) Wire.endTransmission(true); // stop transmitting } int S; if (digitalRead(10)==0) S=1; // S никогда не становится в 1. На 10 порт идет "пакет" с Т порядка 10 мкс, и ни один не вызывает выполнения условия Serial.print("S = "); Serial.print(S); Serial.print("\n"); } Упростил код скетча МК2 на плате. Выкинул все компоненты. Проблема осталась. Или в "железе", или м.б. куча библиотек влияют? И повторяю, на МК1 при компиляции "занято до 1750 байт из 2048"...может работать нестабильно. Что такое howMany? Wire.endTransmission(true)? I2C как-то линию не освобождает? false не спасает. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 8 августа, 2019 Поделиться Опубликовано 8 августа, 2019 Убери полностью все барахло из кода и оставь лишь обработку кнопок. И количество занятой памяти вообще не влияет на работу МК. Можно занять все 100% флеша и все будет работать. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
dim3740 Опубликовано 8 августа, 2019 Автор Поделиться Опубликовано 8 августа, 2019 (изменено) Смысл такой: МК1 посылает коды = данные по i2C на МК2. Тот расшифровывает их, и если ОК (совпало с неким) , то посылает подтверждение в виде 0 обратно уже по простому соединению портов. Поэтому WIRE я НЕ могу убрать. Мб в нем все и дело, потому что я плохо понимаю его работу. Кнопки конечно -только инициаторы выполнения алгоритма. В реалии их не будет. Ясно, счас новый скетч сделаю без библ. Изменено 8 августа, 2019 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
BARS_ Опубликовано 8 августа, 2019 Поделиться Опубликовано 8 августа, 2019 17 минут назад, dim3740 сказал: Поэтому WIRE я НЕ могу убрать. Сначала сделай чтобы работал опрос порта, а уже потом добавишь WIRE. Ну и глянь, тот вывод, что ты юзаешь, не используется ли в работе UART или еще чего. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 11 августа, 2019 Автор Поделиться Опубликовано 11 августа, 2019 (изменено) Если заменить входной порт на другой - то пакета нет. Этот дергается библиотекой SD card. Но свободный только TX. Как быть? а) лишиться удобной работы с монитором б) резисторы в цепи TX не помогут? в) где в библе искать define - не имея опыта это реально? Порт 10, все что с портом 10 в хелдере (каком?) заменил - не помогло. Изменено 11 августа, 2019 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.