Проблема передачи данных по UART
- Войдите на сайт для отправки комментариев
Точно не уверен что сюда, но все же.
Передаю данные (коды кнопок (IRremote.h) Nano -> Mega и другие данные по своему протоколу Mega -> Nano) с аппаратного сиреала NANO v3 (скорее всего китайская, на 328) на аппаратный Mega RX3/TX3, естественно земля общая и скорости одинаковые, посли према у обеих сбрасываю буфер посредствам Serial.flush(), обе питаются от ЮСБ, провод RX/TX витая пара(одна) сантиметров 12, земля идет отдельным проводом.
В какойто случайный момент, Нано перестает отправлять данные на Мегу, видно как в мониторе так и специально подключенном светодиоде который реагирует софтово на принятие от пульта определенной команды. При этом Нано принимает данные от Меги и могласно скетчу их отрабатывает. Тожесамое и с Мегой, просто может перестать принимать, в мониторе от наны данные идут, светодиоды RX/TX моргают, а мега ничего на входе не видит, хотя спокойно ее скетч работает и данные передает на Нану. Лечится Ресетом, но зависимотси глюка не заметил, может и буквально сразу перестати передавати принимать, а может со временем.
Раньше подобное было когда была одна мега и температура с нее передавалась в сиреал на комп, за часов 8, могла пару раз перестать передавать, и через случайный промежуток времени опять начать передава данные.
Вот думаю может кто сталкивался чего полезного скажет, может подтянуть пины к нулю через 10 кОм?
Для начала покажите, что заливаете в Нану и что заливаете в Мегу и желательно не кусками кода, а полностью оба скейтча.
Это от Наны
А вот эти огрызоки в Меге
и
Да и я знаю что можно сократить код с помощью for(int i; i<16, i++) и т.д., просто оставил для наглядности, а то местами возвращать приходилось...
Все от меги заливать смысла нет, т.к. только добрался до обмена данными.
Попробывал допаять к RX/TX последовательно по 1кОм, не помогло, нана вообще перестала видеть приходящие от меги данные, мега нормально.
Отредактируйте сообщение выше и выложите весь код, потому как если уверены, что там не может быть ошибок связаных с вашей проблемой, то и смысла вообще заводить эту тему тогда нету.
Первое что хотелось узнать - какой версией Arduino IDE пользуетесь?
Дык я и написал в аппаратные вопросы, т.к. с софтом уверен, да и на туже граблю наступил когда только начал изучать Arduino, но тогда забил... на мегу заливаю через Arduino IDE 1.0.1, на Нану Arduino IDE 1.0, т.к. только в ней компилируется IRremote.h критичности в этом нет да и удобнее, не нужно каждый раз выбирать нужную плату + два монитора, можно внешним но неудобно
Что ж если вы так уверены, то хочу вас обрадывать - в Arduino IDE 1.0 не работает
Serial
.flush();
, не исключено что и в более поздних версиях тоже.хммм, поиграюсь с ненормально работой Serial подумаю. дык, а что тогда делать?
Попробую SoftwareSerial.h, но это совтовое(
Замените все Serial.flush(); на это
и еще раз повторяю выложите весь код.
Смысла нету, я выложил код где встричается Serial, больше его нигде нет. да ипробывал наскетчах из примеров, т.е. там вообще ничего нет, слал тупо значения с аналогового пина и кнопкой поклацывал...
а за
спвсибо, я так понимаю, что оно просто читает в воздух и сбрасывает буфер
кстати, на сколько понимаю SoftwareSerial.h не просто так использует 2 и 3 пин, т.е. там используются прервания, или прерывания самому нужно прописывать?
Вы уверенны что нигде не вышли за пределы массива?, вы уверенны что не присвоили переменной значенте, которое она не может принять?, да и еще куча всего может быть...
Ну если нет смысла, то и смысла помогать тоже нету. Не вам в обиду, а в пример ваших действий:
я конечно все понимаю, но врятли вы будите разбирать 2к1 строк кода очень плотного, даже если учесмть что 25% можно выпилить с помощью for(int i; i<16, i++) то разбираться в этом вы врятли будите! А во вторых Спасибо вам за помощь,
таки помогло, про глюки Serial.flush(); не знал, на него и надеялся! т.к. пульт иногда гадит в сиреал почемуто 0ми в место кода, но они отрабатываются Serial.flush(); пока не залипнет... С масивами я точно не выхожу за пределы, уже наиргался и вернулся к одномерным, их проще читать в масив с SD карты. А в бараны лучше так быстро людей не записывайте! Arduino платформа в принцепе не для особо шарющих людей
Кстати не подскажите максимальную длинну на которую может передать UART, для RS232 написано 15м, хотя люди говорили о 50м, но скорость не знаю, на метров 10 его хватит?
Кстати не подскажите максимальную длинну на которую может передать UART, для RS232 написано 15м, хотя люди говорили о 50м, но скорость не знаю, на метров 10 его хватит?
Я в бараны никого не записывал, если вы так считаете, дело ваше.
Вот есть тема про длинну линии дынных.
Arduino платформа в принцепе не для особо шарющих людей
Именно поэтому вас и просят показать весь код, а не куски, в которых вы "уверенны".
Я в бараны никого не записывал, если вы так считаете, дело ваше.
Это я к тому, что дали решение и тут же записали в упертые бараны, хотя я неуспел проверить вашу помощь, если б не помогло то выложил бы, хотя те огрызки что выложил в начале единственные места связаные с сиреалом в чем я обсолютно уверен, т.к. только начал прорабатывать эвзаимодействие о чем и говорил до этого.