Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 09.08.2019, 20:37  
worke2
Частый гость
 
Регистрация: 27.05.2016
Сообщений: 15
Сказал спасибо: 37
Сказали Спасибо 12 раз(а) в 6 сообщении(ях)
worke2 на пути к лучшему
По умолчанию UART, SoftUART и SIM800L

Добрый день!

Собираю девайс, среда - arduino (не ругайтесь) модем подключаю через программную реализацию UART, аппаратный для отладки пока. Процессор Atmega328P, без кварца, с внутренним генератором 8 МГц

Расклад такой: начинал я с Atmega168P так как они были в наличии. Отлаживал электрическую часть, работу с периферией, обмен данными с модемом. Но вся реализация не помещается в 16 кб памяти, поэтому сразу планировал на Atmega328P. И когда он пришел, я его впаял и программный UART перестал работать. Впаиваю обратно 168-ю - работает. Естественно перекомпилировал под чипы все как положено. Код простой, просто пересылает данные из порта в порт:

Код:
#include 
SoftwareSerial SIM800(9, 8);        // 8 - RX (TX SIM800L), 9 - TX (RX SIM800L)
void setup() {
  Serial.begin(9600);               // Скорость обмена данными с компьютером
  Serial.println("Start!");
 
  SIM800.begin(9600);               // Скорость обмена данными с модемом
  SIM800.println("AT");               // Автонастройка скорости для модема
}

void loop() {
  if (SIM800.available())           // Ожидаем прихода данных (ответа) от модема...
  {
    Serial.write(SIM800.read());    // ...и выводим их в Serial
  }
  if (Serial.available())           // Ожидаем команды по Serial...
  {  
    SIM800.write(Serial.read());    // ...и отправляем полученную команду модему
  }
}
Проверял осциллографом все тайминги, все в пределах нормы. Уровни логической 1 и 0 от модема в пределах нормы: 2.8 и 0.5 вольт соответственно. Жду логического анализатора с декодером, может что-то подскажет.

Модем от меги команды понимает и выдает на свой TX, но мега и на софтовом, и на аппаратном его не понимает. Если подключаю USB-UART адаптер так:

USB_TX=>SOFR_RX[MEGA]HW_TX=>USB_RX

байты проходят. Т.е. мега через себя пропускает то что, по идее, модем должен выдавать...

Впаиваю чип 168Р с тем же кодом - все работает.
Грешил на прерывания, но ведь данные ходят. Разница между 168P и 328P минимальна.

Прошу идей куда смотреть...
Реклама:
worke2 вне форума  
Непрочитано 09.08.2019, 22:34  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 4,372
Сказал спасибо: 1,300
Сказали Спасибо 1,739 раз(а) в 1,215 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Сообщение от worke2 Посмотреть сообщение
Модем от меги команды понимает и выдает на свой TX,
Непонятно, кто на ком стоял... Передача SoftUART 328-й корректно распознаётся модемом? Чем это проверено?
Сообщение от worke2 Посмотреть сообщение
но мега и на софтовом, и на аппаратном его не понимает.
Т.е. пробовал переключить весь обмен 328-й с модемом на аппаратный UART и всё равно не работает? "Соплей" на плате при этом точно нет?

Какой итоговый объём кода в 168-й и 328-й? Пока могу предположить, что компилятору пришлось использовать JMP вместо RJMP, отчего съехали времянки SoftUART.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
worke2 (13.08.2019)
Непрочитано 09.08.2019, 23:43  
worke2
Частый гость
 
Регистрация: 27.05.2016
Сообщений: 15
Сказал спасибо: 37
Сказали Спасибо 12 раз(а) в 6 сообщении(ях)
worke2 на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Спасибо за ответ!
Цитата:
Непонятно, кто на ком стоял... Передача SoftUART 328-й корректно распознаётся модемом? Чем это проверено?
это проверено тем, что я передавал AT команды в модем через мегу, а принимал напрямую с модема. Т.е. RX вход USB-UART подключил прямо к модему и видел правильные ответы.

Цитата:
Т.е. пробовал переключить весь обмен 328-й с модемом на аппаратный UART и всё равно не работает?
да, именно так.
Цитата:
"Соплей" на плате при этом точно нет?
плату на заводе заказывал, качественная. Напаиваю 168P чип и тот же самый код работает
Цитата:
Какой итоговый объём кода в 168-й и 328-й?
3424 байта ровно.
Цитата:
отчего съехали времянки SoftUART.
возможно если только на вход. Но я сравнивал временные характеристики с TX пина модема и USB-UART, они одинаковые. Один бит передается 104 мс ровно. Единственно что модем передает следующий байт сразу после стоп бита, а как USB-UART - не запомнил
worke2 вне форума  
Непрочитано 10.08.2019, 12:00  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 4,372
Сказал спасибо: 1,300
Сказали Спасибо 1,739 раз(а) в 1,215 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Сообщение от worke2 Посмотреть сообщение
Цитата:
Т.е. пробовал переключить весь обмен 328-й с модемом на аппаратный UART и всё равно не работает?
да, именно так.
Поскольку
Сообщение от worke2 Посмотреть сообщение
... UART, аппаратный - для отладки пока.
то надо коммутировать дорожки на плате. Под "соплями" я понимаю - при этом ничего не напутано? Всё, что надо отключить от RxD/TxD - отключено?

Меги от чего тактируются и какая частота? Если от внутреннего генератора - то сделана-ли калибровка? Что значит "SIM800.println("AT");" - Мега тоже пытается автонастраивать скорость передачи?
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
worke2 (13.08.2019)
Непрочитано 12.08.2019, 00:07  
worke2
Частый гость
 
Регистрация: 27.05.2016
Сообщений: 15
Сказал спасибо: 37
Сказали Спасибо 12 раз(а) в 6 сообщении(ях)
worke2 на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Цитата:
Под "соплями" я понимаю - при этом ничего не напутано? Всё, что надо отключить от RxD/TxD - отключено?
нет, не напутано. Сама плата изготовлена промышленным способом, все UART выведены на штыревые разъемы как раз для того чтобы все это переключать/подключать и экспериментировать. И опять же - на 168-й работает. Без перекоммутации. Просто сдуваю один чип и паяю другой.
Цитата:
Меги от чего тактируются и какая частота? Если от внутреннего генератора - то сделана-ли калибровка?
тактируется от внутреннего, калибровку не делал. Если честно, совсем забыл про эту фичу... Завтра попробую
Цитата:
"SIM800.println("AT");" - Мега тоже пытается автонастраивать скорость передачи?
нет, это для модема. По-умолчанию он на 9600 настроен, но ждет AT после включения и высчитывает по ней скорость. Вроде как рекомендуется первую команду АТ выдавать.
worke2 вне форума  
Непрочитано 12.08.2019, 01:05  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 6,993
Сказал спасибо: 95
Сказали Спасибо 2,053 раз(а) в 1,262 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Сообщение от worke2 Посмотреть сообщение
тактируется от внутреннего
софтовый уарт........

__________________
ОГМ/ПОГМ
индюк вне форума  
Непрочитано 12.08.2019, 01:07  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 6,993
Сказал спасибо: 95
Сказали Спасибо 2,053 раз(а) в 1,262 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

бери осцил и смотри тайминги своего ужаса.
генерируй на скорости 9600 на компе букву А английского алфавита и смотри длину импульсов, срвнивай со своими.
__________________
ОГМ/ПОГМ
индюк вне форума  
Сказали "Спасибо" индюк
worke2 (13.08.2019)
Непрочитано 12.08.2019, 01:25  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 4,372
Сказал спасибо: 1,300
Сказали Спасибо 1,739 раз(а) в 1,215 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Сообщение от индюк Посмотреть сообщение
софтовый уарт
И чё? У меня на 38400 работало от калиброванного RC.

Сообщение от индюк Посмотреть сообщение
на скорости 9600 на компе букву А английского алфавита
Другие буквы и скорости - харам?
__________________
Экзорцист 40-го уровня.

Последний раз редактировалось ForcePoint; 12.08.2019 в 01:27.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
worke2 (13.08.2019)
Непрочитано 12.08.2019, 01:43  
OakRidge
Почётный гражданин KAZUS.RU
 
Аватар для OakRidge
 
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,286
Сказал спасибо: 262
Сказали Спасибо 1,007 раз(а) в 474 сообщении(ях)
OakRidge на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Разумеется не мое дело знать почему и зачем, да софтовый уарт анахронизм.
Неужели сии меги не имеют аппаратного ?
OakRidge вне форума  
Непрочитано 12.08.2019, 11:55  
worke2
Частый гость
 
Регистрация: 27.05.2016
Сообщений: 15
Сказал спасибо: 37
Сказали Спасибо 12 раз(а) в 6 сообщении(ях)
worke2 на пути к лучшему
По умолчанию Re: UART, SoftUART и SIM800L

Цитата:
бери осцил и смотри тайминги своего ужаса.
генерируй на скорости 9600 на компе букву А английского алфавита и смотри длину импульсов, срвнивай со своими.
Я так и сделал. Все четко. Что удивляет это то что софтовый UART принимает данные от USB-UART, а от модема - нет. От модема и аппаратный UART не принимает.

Сообщение от OakRidge Посмотреть сообщение
Разумеется не мое дело знать почему и зачем, да софтовый уарт анахронизм.
Неужели сии меги не имеют аппаратного ?
Одного мало, а на борту только один.

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

Просто я хотел использовать все выводы меги, с кварцем не хватало. Теперь решил все же мультиплексоры использовать, нечего мудрить...
worke2 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование программатором STERH 007 PIC микроконтроллеров ispitatel1 Песочница (вопросы новичков) 4 17.04.2017 17:18
Программный UART для Mega8. Проблемы Zemlyanov AVR 20 13.11.2013 10:44
Проблемы с передачей по UART, нужна помощь sansan25 Микроконтроллеры, АЦП, память и т.д 3 28.01.2012 13:19
AVR, UART и режим IDLE anpaza Микроконтроллеры, АЦП, память и т.д 14 25.07.2011 03:04
Помогите разобраться с UART masterpc Микроконтроллеры, АЦП, память и т.д 10 13.02.2007 17:49


Часовой пояс GMT +4, время: 14:52.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot