ZXevolution + RS-232

ZX evolution software and hardware

Postby lvd » 15 Aug 2011, 18:06

SfS wrote:А как ты узнаешь, что на другом конце модемной линии данные получены и обработаны?

Ты внатуре гонишь. А если обработать пакет -- занимает дохера времени, то твой пц будет долбиться одним и тем же пакетом (который постоянно успешно будет проёбываться)? А потом как спектрум найдёт начало этого пакета, когда уж его обработает? А если и найдёт, то как узнает, что он его только что обработал? В общем какое-то изобретательство велосипеда вместо давно проверенных ртс-цтс.

SfS wrote:Весь TCP-IP так работает

тцп или ип? И да, в ип УЖЕ есть пакеты с црц, и тцп не парится на предмет того, дошёл ли целый пакет или шлак. А ты смешал всё в одну кучу -- вот сам и разбирайся, изобретай велосипед вместо использования ртс-цтс или (сюрприз!) ксон-ксофф :)
Многого нет здесь: http://lvd.nedopc.com
Image
User avatar
lvd
 
Posts: 1786
Joined: 07 Apr 2007, 22:28
Group: Registered users

Postby SfS » 15 Aug 2011, 21:12

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


О да. Не тот лагоритм. Вообще с работы писать плохо - иногда такая фигня получается :)
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby deathsoft » 15 Aug 2011, 21:24

lvd wrote:Ты внатуре гонишь. А если обработать пакет -- занимает дохера времени, то твой пц будет долбиться одним и тем же пакетом (который постоянно успешно будет проёбываться)? А потом как спектрум найдёт начало этого пакета, когда уж его обработает? А если и найдёт, то как узнает, что он его только что обработал? В общем какое-то изобретательство велосипеда вместо давно проверенных ртс-цтс.

Тут добавить нечего, +1.
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby deathsoft » 15 Aug 2011, 21:25

lvd wrote:или (сюрприз!) ксон-ксофф

Это ахтунг, т.к. некоторые байты данных становятся резервными и передаются с префиксами (драйвер ком порта при этом на порядок сложнее чем с rts/cts).
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby SfS » 15 Aug 2011, 21:33

lvd wrote:Ты внатуре гонишь. А если обработать пакет -- занимает дохера времени, то твой пц будет долбиться одним и тем же пакетом (который постоянно успешно будет проёбываться)? А потом как спектрум найдёт начало этого пакета, когда уж его обработает? А если и найдёт, то как узнает, что он его только что обработал? В общем какое-то изобретательство велосипеда вместо давно проверенных ртс-цтс.

тцп или ип? И да, в ип УЖЕ есть пакеты с црц, и тцп не парится на предмет того, дошёл ли целый пакет или шлак. А ты смешал всё в одну кучу -- вот сам и разбирайся, изобретай велосипед вместо использования ртс-цтс или (сюрприз!) ксон-ксофф :)


Я гоню. Но вот любой промышленный протокол именно так и работает "запрос-квитанция" ). Практически - всё что ты написал значения не имеет, так как:

1. Не указана задача для которой разрабатывается протокол. Лично я хотел файлы передавать. И команды.
2. Что мешает выставить время ожидания ответа на PC такое, что оно будет больше времени обработки пакета на ZX? как в общем-то практически и делается везде на практике...
3. Что мешает принимать пакеты на ZX и складывать их в память (или даже в файл) - а потом обработать все принятые данные? Хотя, честно говоря, я не представляю - что такое можно практически делать с, например 256-байтным пакетом дольше 2секунд...
4. ХОN-XOFF - хорошо, но требует дополнительного кодирования-декодирования потока (замена символов 13h и 11h). И никак не гарантирует контроля целостности данных. Как и RTS-CTS.
5. Сюрприз! CRC есть и в TCP! биты 16 бит, начниая со 128го бита заголовка ) А IP - это как раз добавление к протоколу TCP той самой квитанции-подтверждения. Так что "дошёл шлак" - такого не бывает. Либо доходит пакет целиком, либо бракуется весь. Гарантированная доставка - это именно наличие подтверждения на каждый пакет.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby deathsoft » 15 Aug 2011, 23:53

SfS wrote:Я гоню. Но вот любой промышленный протокол именно так и работает "запрос-квитанция" ).

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

Ну и на последок, тото дураки добавили в ethernet протокол спец пакеты для управления нагрузкой rx/tx flow control (в гигабитных картах).
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby SfS » 16 Aug 2011, 07:43

deathsoft wrote:Простой промышленный протокол - передача данных из компьютера в модем (именно данных а не окманд, уже после того как модемы законектились), данные можно слать непрерывно, пока модем не укажет что его буфер переполнен, при этом абсолютно не важно, с какой скоростью модем разгребает этот буфер и передает его в телефонную сеть (а там и ретрансмиты есть и црц и т.д.).


И что с того? В любом случае - PC реализовывать всё тот же алгоритм - "запрос-подтверждение". RTS-CTS полезен в том и только в том случае, когда длина пакета больше, чем размер буфера модема, например - непрерывный поток данных. Чего в реальности наблюдается крайне редко. По крайней мере, за 8 лет разработки аппаратуры передачи данных, мне ни разу не встретился полноценный модем (GSM, ТЧ, Спутниковй), буфер которого не схавал бы за раз 1.5 - 2 кБайта. Единственное короткобуферное устройство - радиоудлиннители модульного исполнения. Там буфер 16 байт - но это ни фига не "полноценные модемы". И то - сокращаем длину пакета до 16 байт и живём жорошо, поскольку надёжность радиосвязи - оставляет желать лучшего.

deathsoft wrote:Ну и на последок, тото дураки добавили в ethernet протокол спец пакеты для управления нагрузкой rx/tx flow control (в гигабитных картах).


RS232 - это "гигабитная карта" ?)

ИМХО, какого нефритового стержня теоретезировать?
Задача - яйца выеденного не стоит. Так что пляшем от задачи, а не от "гигабитных карт", "марсианских домов" и т.п.

Самый простой способ - передавать пакет (короткий заголовок, данные, CRC) и получать подтверждение - (заголовок, CRC).
Временные затраты - минимальны. Надёжность - максимальна.

А самая главная фишка - что это будет работать одинаково как по 3м проаодкам, так и через два модема, подсоединённые всё по тем же 3м проводкам. Разница - только инициализация модема + дозвон.

Из практики:
Предположим, что данные передаются пакетами по 256байт (ну, скажем для удобства - сектора TRD).
Заголовок и СRC - 5 байт (скажем - адрес источника 1б, приёмника 1б, флаги - 1б, ID пакета - 1б, CRC - 1б).
Т.е. Длина Посылки - 261 байт, длина ответа - 5 байт.
При скорости 19200 цикл запрос-ответ уйдёт (в иделе) время (261+5)/1920 = 0.14 сек
Если пакеты складываются в память - то таймаута 1сек для ожидания ответа - достаточно.
Если пакеты пишутся на диск - просто увеличиваем таймаут - и всё.

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

Одни плюсы - CRC - гарантия целостности пакета. Подтверждение = разрешение отправки следующего пакета. И никаких лишних проводов. Можно хоть по токовой петле за 5 км слать :)
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 16 Aug 2011, 08:06

DimkaM wrote:Кто нить может глянуть исходники АВРки, а то я в них не понимаю.

??? Всё ещё актуально.

SfS wrote:запускалка программок для RS232.

Ты бы отдельный топик чтоли создал, а то хрен найдёшь потом. И как бы под виндой юзать.
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 » 16 Aug 2011, 08:20

DimkaM wrote:Ты бы отдельный топик чтоли создал, а то хрен найдёшь потом. И как бы под виндой юзать.


Создам, как оберну всё в протокол и причешу. А здесь - это скорее простой примерчик как чего инициализировать и работать с портом. Может кому понадобится.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 245
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 16 Aug 2011, 09:13

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


Меня смущает вот этот момент
Code: Select all
main.c
71        PORTD = 0b11111111; // inputs pulled up
72        DDRD  = 0b00000000;
Это получается PD5 (который RTS) работает на вход? А должно быть на выход. Или я что-то забыл из курса по АВР?! В других местах инициализации вроде не нашёл(ни DDRD, ни RS232RTS_DDR).
У DDp всё правильно:
Code: Select all
_uart.asm   
81      SBI     DDRD,5


LVD поправь плиз инициализацию DDRD :beggar:
Last edited by DimkaM on 16 Aug 2011, 15:12, edited 1 time in total.
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: No registered users and 1 guest

cron