ZXevolution + RS-232

ZX evolution software and hardware

Postby SfS » 14 Aug 2011, 18:48

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


Что значит - вслепую?
По идее - надо протокол делать. с CRC. и всё.
А RTS-CTS - костыль.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 14 Aug 2011, 19:56

SfS wrote:А RTS-CTS - костыль.

А как узнать, что принимающая сторона готова принять новую порцию данных? То, что буфер передачи пустой, ничего не значит.
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby deathsoft » 14 Aug 2011, 20:02

SfS wrote:Вообще я на работе управлял моднмом по трём проводам. RTS-CTS - вовсе не нужны.

Ну-ну, вот допустим скорость передачи 115200 (между компом и модемом), и в модеме буфер забился (скорость линии 33600) ну и как ты сей факт установишь? Ну и тоже саоме при связи между компом и приборами (которые могут тормозить передачу). Конечно если прибор работает на 9600 и никогда не тормозит передачу - то достаточно и 3х проводов.
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby deathsoft » 14 Aug 2011, 20:04

DimkaM wrote:Понял, что дурак, настройки остались со времён трёх проводков.
Завтра проверю.

Ты еще учти, если на спектруме хардваре флоу контрол включить нельзя, то тебе самому надо будет проверять/выставлять RTS/CTS со стороны спектрума при заполнении буфера, если хардваре флоу контрол реализован в авр, тогда надо просто включить его как в уарте 16c550.
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby DimkaM » 14 Aug 2011, 22:50

deathsoft wrote:если хардваре флоу контрол реализован в авр

Сей момент мне тоже интересен. Завтра выясню. если нет, то нах эти RTS/CTS, буду байтик подтвержнения засылать(собственно щас у мну так и работает, но хочется по уму). Или саппорт надо пинать, чтоб до ума довели.
И ещё интересен простейший алгоритм чексуммы, XOR всех байтов блока прокатит? И вообще какова вероятность порчи данных?
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby SfS » 15 Aug 2011, 06:49

А как узнать, что принимающая сторона готова принять новую порцию данных? То, что буфер передачи пустой, ничего не значит.


От задачи зависит. У меня была задача связи - запрос-подтверждение. Т.е. - пихаю пакет в модем, жду ответа с другого конца. Если ответ пришёл - то данные гарантированно отправлены и буфер пуст.
Для потоковой передачи (когда данные на пакеты не бъются и подтвенрждения нет) - такое не подходит.

Я пока рассматриваю RS232 - только как средство коммуникации с PC. В этом случае буфера всегда хватает.

Если умправлять модемом - то либо организовывать разбиение на пакеты и алгоритм "запрос-подверждение" - а так чаще всего и делают, либо - для потока - разбираться с RTS-CTS :)
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby SfS » 15 Aug 2011, 06:53

deathsoft wrote:Ну-ну, вот допустим скорость передачи 115200 (между компом и модемом), и в модеме буфер забился (скорость линии 33600) ну и как ты сей факт установишь? Ну и тоже саоме при связи между компом и приборами (которые могут тормозить передачу). Конечно если прибор работает на 9600 и никогда не тормозит передачу - то достаточно и 3х проводов.


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

Это ж старое как мир решение. Весь TCP-IP так работает и ещё мульён протоколов - ModBus, SNAP и т.д. и т.п.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby SfS » 15 Aug 2011, 07:05

DimkaM wrote:И ещё интересен простейший алгоритм чексуммы, XOR всех байтов блока прокатит? И вообще какова вероятность порчи данных?


При нормальных проводах и разъёмахя - ИМХО - вероятность искажения по RS232 практически нулевая. Ни разу не видел, чтобы на терминалке символы были битые.
Что, касается CRC - XOR всех байтов - не есть хоршо. Так как любое чётное кол-во ошибок в бите - за ошибку воспринято не будет :))

Лучше так:

Code: Select all
/*
  Name  : CRC-8
  Poly  : 0x31    x^8 + x^5 + x^4 + 1
  Init  : 0xFF
  Revert: false
  XorOut: 0x00
  Check : 0xF7 ("123456789")
  MaxLen: 15 байт(127 бит) - обнаружение
    одинарных, двойных, тройных и всех нечетных ошибок
*/
unsigned char Crc8(unsigned char *pcBlock, unsigned int len)
{
    unsigned char crc = 0xFF;
    unsigned int i;

    while (len--)
    {
        crc ^= *pcBlock++;

        for (i = 0; i < 8; i++)
            crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1;
    }

    return crc;
}
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 15 Aug 2011, 08:30

SfS wrote:Так как любое чётное кол-во ошибок в бите - за ошибку воспринято не будет

SfS wrote:обнаружение
одинарных, двойных, тройных и всех нечетных ошибок
%)
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby DimkaM » 15 Aug 2011, 16:37

В общем проблема походу в Еве, либо конкретно в моей, либо ваще. Блин и CHRV в отпуске. Кто нить может глянуть исходники АВРки, а то я в них не понимаю.

Через эмуль всё ништяк, шлю байтики - C# ожидает CTS, на эмуле поднимаю RTS - писюк выпускает байты.

На Еве нихрена не пашет, шлю байтики - C# ожидает CTS, на Еве поднимаю RTS, и нихрена - CTS на писюке молчит.

Проверил УСБ-КОМ, замкнул RTS-CTS, дергаю RTS, CTS исправно отвечает. А со стороны Евы такой фокус не проходит.

А RTS можно как нить на Еве проверить?! тестером?!
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

PreviousNext

Return to Пентева - софт и железо

Who is online

Users browsing this forum: Google [Bot] and 1 guest

cron