Технический форум по робототехнике.
AndreiSk » 30 июн 2012, 23:17
Может протокол обмена добавить с проверками принято-не принято?
Я припоминаю, на пике на больших скоростях (115200/230400/460800/921600)
без этого не работало.
=DeaD= » 01 июл 2012, 10:05
Какой смысл в протоколе, если оно уже 3-й символ гарантированно не принимает? У меня и так сейчас 100% команд вываливается с ошибкой приёмки, даже на существующих простейших проверках корректности команд.

Tsi329 » 01 июл 2012, 11:56
=DeaD=, не совсем понял как Вы подключали WR703N. Через встроенный ком порт? Или через USB?
У меня реализовано так: Arduno MEGA(FT232)->USB->WR703N->Ser2net(115200)->Wifi->Роутер(DIR-320)->Ethernet port->Комп
Всё отлично работает на скорости 115200.
=DeaD= » 01 июл 2012, 12:07
Я делал всё через встроенный COM-порт. Не хочется городить USB-хаб еще на робота

но на крайний вариант видимо придется.
Tsi329 » 01 июл 2012, 13:43
Попробуйте проверить работу встроенного COM-порта используя чистую Open-WRT, дабы исключить влияние прошивки на работу WR703N.
=DeaD= » 01 июл 2012, 13:50
К сожалению нет квалификации для этого и времени её приобрести

dccharacter » 01 июл 2012, 14:33
Антон, костыль-то простой

Делай паузу между символами

)))
Костыль №2 (проверять надо, не уверен, что так вообще можно) - задай в настройках роутера скорость не 115200, а, например, 115000
Костыль №3 - измени чуть-чуть каунтер бод-рейт генератора в атмеге.
=DeaD= » 01 июл 2012, 15:10
Если по каждому поводу не проблему решать, а костылями всё подпирать - это же что на выходе то получится?
Добавлено спустя 1 минуту 23 секунды:Если не будет нормального решения - соглашусь на USB-хаб и OR-USB-UART в роботе. Всё равно последний желательно иметь для обновления прошивки контроллера. А в случае ORduino Nano - оно по умолчанию там будет.
Добавлено спустя 4 минуты 21 секунду:В последнем случае идеально - если elmot сможет сделать прошивку, изначально поддерживающую CP2102.
_Pirra » 02 июл 2012, 11:04
alex&r писал(а):Господа, и Дамы, конечно, а никто не пытался развить index.html и serial.cgi на C, которые я выкладывал 13 мая 2012? Все устойчиво работает на любых скоростях (от 9600 до 115200), с любыми байтами (от 0x00 до 0xFF) без всяких приписок и, главное, в обе стороны (мерю напряжения и температуры контроллеров Pololu
ttp://www.pololu.com/docs/0J44/6.2.1 ).
На всякий случай, выкладываю повторно:
А туда никаких доп модулей не надо устанавливать? А то у меня uart молчит.
(порт в index подправила)
Добавлено спустя 46 минут 59 секунд:=DeaD= писал(а):Добавлено спустя 9 минут 25 секунд:Похоже TP-Link WR703n выдаёт "чуть-чуть" большую скорость, чем 115200 и ATMega128 засыпается при попытке прочитать такой уарт, хотя CP2102 читает без проблем

А какой кварц на котроллере?
Если вчитатся в ПДФ там будет прописанно, что МК имеет накапливающуюся ошибку обмена по уарт, которую надо корректировать программно. Это связанно с коэффициентами деления частоты кварца. Если нужен уарт без ошибок, обычно используют нестандартные кварцы. Например для скорости 19200 на ПИКах я применяю кварц в 3,686400 МГц.
=DeaD= » 02 июл 2012, 11:08
_Pirra писал(а):А какой кварц на котроллере?
Если вчитатся в ПДФ там будет прописанно, что МК имеет накапливающуюся ошибку обмена по уарт, которую надо корректировать программно. Это связанно с коэффициентами деления частоты кварца. Если нужен уарт без ошибок, обычно используют нестандартные кварцы. Например для скорости 19200 на ПИКах я применяю кварц в 3,686400 МГц.
Ну конечно же правильный кварц

7.3728MHz, - 0% ошибок на 115200.
boez » 02 июл 2012, 11:48
Ну а вот у роутера наверное кварц неправильный... Я ж думаю там аналог 16550, щас вроде на современных SoC самоделками не балуются, везде 16550 уарты ставят. Интересно было бы копнуть прошивку на предмет частот и делителей - какой частотой тактируется уарт? Наверняка какой-то периферийный такт, а у 16550 формула примерно такая же как у меги - baudrate=clock/(16*N). А может вообще косяк в драйверах, причем даже не в самом 16550, а clock реальный отличается от того, который сообщается драйверу уарта?
elmot » 02 июл 2012, 13:28
=Dead=, вот ты и поймал проблему, мною уже пойманную. Ты можешь оценить, какая реально скорость у UART роутера?
=DeaD= » 02 июл 2012, 13:41
Имхо - где-то 110`600 вместо 115`200. А вообще я уже сильно близок к решению с хабом

boez » 02 июл 2012, 16:47
Заглянул в исходник ядра (/arch/mips/ath79/clock.c). Там есть вот такая строчка:
- Код: Выделить всё • Развернуть
260 pr_info("Clocks: CPU:%lu.%03luMHz, DDR:%lu.%03luMHz, AHB:%lu.%03luMHz, "
261 "Ref:%lu.%03luMHz",
(там дальше передаются как раз CPU,DDR,AHF и Ref клоки в мегагерцах и их дробные части)
и вот такие (для чипсета 933x):
- Код: Выделить всё • Развернуть
165 ath79_wdt_clk.rate = ath79_ref_clk.rate;
166 ath79_uart_clk.rate = ath79_ref_clk.rate;
Т.е. частота уарта = частоте Ref. А вот это из лога загрузки openwrt на 703-м (из вики опенврт):
- Код: Выделить всё • Развернуть
Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz
Т.е. можно видеть, что частота уарта составляет 25 МГц. 25000000/(16*115200) = 13.56. Я так понимаю, драйвер ставит или 13, или 14 и получает вполне оправданную ошибку скорости в (13.56/13-1)*100=4.3% или (14/13.56-1)*100 = 3.2%. Реальная скорость 25000000/(13*16) = 111607 или 25000000/(14*16) = 120192. Вот как-то так... Я кстати не понял, DeaD, у тебя на картинке и в сообщении под ней скорость
выше, а ты пишешь 110600, это же ниже выходит...
elmot » 02 июл 2012, 16:59
Ну что, может перейти на 57600? тогда с коэффициентом 27 ошибка должна стать 0.5%?