связь serial-портов в Меге

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

Коллеги, добрый день!

бьюсь уже несколько недель, но победить не могу...

есть скечт для Меги, который работает с SIM800 (serial3, напрямую, без библиотек) и Nextion display (serial2, также без библиотек).

Вроде все вылизал, все работает во все стороны.

НО: при отключении USB от компьютера половина работать перестает, как будто меняется режим работы портов (.

Вплоть до того, что не может прчитать из sim800 уровень сигнала. Втыкаю USB кабель в комп - все сразу появляется.

В чем может быть дело?

 

PS: код большой, поэтому не уверен, что сейчас надо его выкладывать...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Питание

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

2А от отдельного источника.

Хотя мысль интересная... 

от этого же источника Arduino запитана через коаксиальный разъем...

насколько я понимаю, питание через USB и коаксиал различаются...

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

увы... проверил, втыкая в USB Меги вместо компа 5,2V - проблема остается...

sadman41
Offline
Зарегистрирован: 19.10.2016

Волновое сопротивление коаксиального кабеля согласовано с емкостью Arduino?

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

мне не смешно )

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ProstoAlex, никаких коаксиальных разъёмов на меге нет. Не разбираетесь в терминологии -просто  сфотографируйте свои подключения. В любом случае ответ #1 правильный.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
ProstoAlex
Offline
Зарегистрирован: 21.01.2015

да, под коаксиалом я имел в виду именно разъем питания (альтернативнй питанию через USB).

но я вчера сразу проверил - включил от блока питания через USB (через этот же БП подключен и Nextion display и SIM800).

увы, не помогло.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

циллографом в шину питания ткни.  Ктота туда вдохновенна срёть. 

GarryC
Offline
Зарегистрирован: 08.08.2016

Земля ?

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

коллеги, вернее, так КОЛЛЕГИ!

благодаря вам решил (ну, или полнял куда копать) свою проблему!

перепробовал все на свете, связанное с питанием, и в один момент когда для питания SIM800 не хватало питания (это было без подключения компа), нажал на сброс ардуины - и, о, чудо - скетч заработал!

дальше путем измышлений пришел к тому, что по какой-то причине при подключении к компу ардуина медленнее стартует, и SIM800 успевает инициализироваться.

Сделал на старте 5 сек задержку - и все пошло!!!!!

Да, вы не дали верный совет, но вы навели на мысль.

спасибовам!!!!

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ну да, в этих ваших интернетах модно ждать выполнения команд GSM-модемом с помощью delay, поэтому все пляски с бубном и случаются. Я вам даже больше скажу - то, что вы дали задержку на 5 секунд - проблему не решит, вы просто поставили костыль, который ПОКА работает.

Единственно грамотный и расово верный подход - конечный автомат с событийным интерфейсом, который понимает, что сейчас творится с модемом. Никаких delay в этом случае - не требуется, однако - более высокие требования к квалификации исполнителя.

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

к сожалению, я хоть и связан с ИТ, ни к контроллерам, ни к программированию отношения не имею.

Поэтому рад, что хоть так решил проблему )

Ваш выложенный где-то код смотрел, но понял, что разбираться с моей квалификацией внем придется не одну сотню часов.)

 

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

еще комментарий, может, кому пригодится...

в общем, продолжались у меня глюки с SIM800. причем по всем признакам, были завязаны на другие модули программы - типа, если что-то еще раобтает - то SIM800 глючит.

И вот когда я готов был уже обвинять DIYMan в сглазе, я перенес свои 18b20 с 46 ноги на 9-ю.

И ВСЕ ЗАРАБОТАЛО!!!

что за глюк - непонятно.

Ардуинка от keyestudio (считается неплохой), нигде описания нежелательности каких-то ног для 1-wire не нашел...

(кроме того, что ноги типа 11-12 используются для software serial - это меня и натолкнуло)....

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

9 нога используется в какой-то библиотеке (virtualware или просто ware - не помню, внутренний генератор на этом пине). Встречался с такими же проблемами.

хм... не прочитал что это на Меге проблемы, у меня были на УНО

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня, конечно, меги нет, но распиновку в интернете посмотреть это не помешало. #46 - это RX Serial1, как я понял. Не знаю, как он участвует в вашем скетче, но я бы призадумался над этим фактом.

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

что я знаю про пины:

  • оследовательный интерфейс Serial: выводы 0 (RX) и 1 (TX); Serial 1: 19 (RX) и 18 (TX); Serial 2: 17 (RX) и 16 (TX); Serial 3: 15 (RX) и 14 (TX). Данные выводы используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Выводы 0 и 1 также соединены с соответствующими выводами микросхемы ATmega16U2, выполняющей роль преобразователя USB-UART.
  • Внешние прерывания: выводы 2 (прерывание 0), 3 (прерывание 1), 18 (прерывание 5), 19 (прерывание 4), 20 (прерывание 3) и 21 (прерывание 2).
  • ШИМ: выводы 2 - 13 и 44 - 46. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
  • Интерфейс SPI: выводы 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). С применением библиотеки SPI данные выводы позволяют осуществлять связь по интерфейсу SPI. Линии SPI также выведены на разъем ICSP, совместимый с Arduino Uno, Duemilanove и Diecimila.
  • Светодиод: 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается.
  • TWI: выводы 20 (SDA) и 21 (SCL). С использованием библиотеки Wire данные выводы позволяют осуществлять связь по интерфейсу TWI. Обратите внимание, что расположение этих выводов отличается от Arduino Duemilanove и Diecimila.

про 46 вообще ни слова (кроме того, что это шим - но как это связано с Serial???)....

sadman41
Offline
Зарегистрирован: 19.10.2016

А, сорри, я не на те прямоугольнички смотрел: http://pmsciart.com/wp-content/uploads/2016/07/arduino-mega-pinout-diagram.png

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

в том-то и дело... народ обсуждает, что softserial не на всех пинах работает, и это документировано.

а вот про остальные я ничего не нашел.

питание-наводки на домерней плате и все прочее такое отсек.

Получается, или глюк платы (разводки) или экземпляра (типа коротыша) или одно из трех )

но проверил 3 раза - при включении 1wire на 46 pin с SIM800 идет мусор.