Atmega328p. В недрах loop регулярно вызывается код Код (C++): while (Serial.available()) { int ch = Serial.read(); switch (ch) { Заметил, что когда пин RX (PD0) свободно висит на плате, то в этом месте начинается какой-то бесконечный эхо-спам: Код (Text): 659 Periph: + 659 nextState is 2 659 Event: StateExit 2 659 Event: StateEnter 1 659 display() 694 pressedInSleep: 0 1 694 displayUpdate() 694 RECV: 6 694 RECV: 5 694 RECV: 9 694 RECV: 694 Debug key pressed 694 Event: DebugKeyPressed 32 694 RECV: P 694 RECV: e 694 RECV: r 694 RECV: i 694 RECV: p 694 RECV: h 694 RECV: : То есть то что я выдаю в Tx (отладочный лог) попадает в Rx. Спам такой, что из цикла while исполнение не выходит и устройство зависает. На плате в этом месте ничего мудрого нет: Стоит подключить что-то: считыватель карт или плату arduino uno с извлеченным МК, то эхо-спам прекращается. Может я грязно припаял разъем (P3)? Сопротивление между TX и RX ~1.5 МОм - кажется норм. При эксплуатации к контакту будет подключен считыватель, но не хочется чтобы все устройство умирало, если считыватель отвалится. Подскажите, почему так и что можно/нужно сделать?
включи подтяжку пина и всё прекратится. Вообще, даже в даташите на МК говорится, что не надо оставлять неиспользуемые пины свободно "висящими". Либо сконфигурировать их на выход (рекомендуется), либо подключить через резистор или напрямую к какому-либо уровню.
Ага, спасибо! Припаял резистор, но не помогло пока с обоих сторон не потер хорошенько плату щеткой со спиртом. Но теперь классно работает! Спасибо еще раз! PS. Я люблю и ненавижу паять)