Page 19 of 23

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 08:13
by DimkaM
Есть у кого грамотный алгоритм пересылки данных, чтоб ниче не профукать?
хон\хоф не предлагать, чую тормоз. Чёнить с ртс\цтс.

то TS-Labs: им2 выучил, такчто по существу, если есть идеи.

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 10:06
by DimkaM
TS-Labs wrote:Сообщите подтверждение приема.

чексумм еррор

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 10:14
by DDp
чексумм еррор

TS-Labs, нет, скорее всего клиент не поддерживает данный вид протокола. ;)

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 11:08
by DimkaM
Есть какие искодники? на сях. шоб тама программно дергались cts\rts

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 11:27
by DimkaM
TS-Labs wrote:Ящитаю, он никакой не поддерживает )

ну..у тебяж не уарт совсем, свой стандарт какой то придумал.

нашол интересную доку http://www.gaw.ru/pdf/Atmel/app/avr/AVR350.pdf
ща разложу по феншую, буду медитировать.

Re: ZXevolution + RS-232

PostPosted: 24 Jan 2012, 11:29
by DimkaM
во готовый исходник:
Code: Select all
...
POP R16
POP R18
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код

Re: ZXevolution + RS-232

PostPosted: 01 Feb 2012, 09:55
by DimkaM
Сильно близко друг к другу разъёмы usb и vga. Пришлось усбразъём подрезать, чтоб воткнуть.

Re: ZXevolution + RS-232

PostPosted: 01 Feb 2012, 15:25
by robat_e
Кстати, про неудобное расположение разъемов. В рев.б слот для сд-карты расположен рядом с вга и при подключенном мониторе очень трудно выцарапать карточку.

Re: ZXevolution + RS-232

PostPosted: 01 Feb 2012, 18:22
by robat_e
SD карта плавно входит в подпружиненный разъем и с приятным щелчком там фиксируется. Илитные вещи специально для менеджеров среднего звена.

Re: ZXevolution + RS-232

PostPosted: 02 Feb 2012, 14:21
by DimkaM
сосед по гаражу попросил запоститть:
пакет=128байт
делитель= 1, сооттветственно скорость 115200бод(14400 байт/с)
клок проца 7000000тактов/с
соответственно у меня есть 7000000/14400=486тактов на чтение байта.
я трачу 20500тактов на пакет,максимум 174такта на байт.+ может прийти прерывание(максимум одно на пакет) на 100 тактов.Но есть же бухер на 16байт.
в итоге байты просираются(при 14мгц тоже просираются).
при делителе=2 всё ОК.

процедура чтения пакета:
Code: Select all

   MACRO SET_WATCH_DOG _WAIT
   LD a,_WAIT
   ld (count_l),a
   ENDM
;читаем пакет
read_paket
.out=$+1
   ld a,ACK
   ld bc,DAT
   out (c),a
   ld b,high LSR   ;wait byte
.l2   in a,(c):and 0x01:jr z,.l2
   ld b,high DAT
   in a,(c)
   ld de,128
   cp SOH:jr z,.l1
   cp STX:ret nz
   ld de,1024
.l1   ld (.count),de
   ld b,high LSR   ;wait byte
.l3   in a,(c):and 0x01:jr z,.l3
   ld b,high DAT
   in e,(c)
   exx      ;init CRC const
   ld de,0      ;reset CRC
   ld h,high crc_t         ;tabl
   exx
   ld hl,FBUFF
   ld b,high LSR   ;wait byte
.l4   in a,(c):and 0x01:jr z,.l4
   ld b,high DAT
   in a,(c)
   cpl:cp e:jr nz,.ignor   ;повреждённый номер
   ld a,(curr_paket):cp e:jr nz,.ignor   ;не тот пакет
.count=$+1
   ld de,128   ;read data
   ld a,1:ld (count_h),a
.loop
   SET_WATCH_DOG 50
   ld b,high LSR   ;wait byte
.w_b
   in a,(c):and 0x01:jr z,.w_b
   ld b,high DAT
   in a,(c)
   ld (hl),a:inc hl
   exx ;каркулируем црц
   xor d:ld l,a
   ld a,e
   ld e,(hl):inc h
   xor (hl):ld d,a
   dec h
   exx
   dec de:ld a,d:or e
   jr nz,.loop
   call read_byte   ;read CRC
   exx:ld h,a:exx
   call read_byte
   exx:ld l,a
   xor a:sbc hl,de:exx:ret z
   ld a,1   ;кривой црц
   ret

процедура инициализации уарта:
Code: Select all
;uart init
init
   LD BC,LCR
   LD A,%10000000
   OUT (C),A
   LD B,HIGH DLL
   LD A,1
   OUT (C),A
   INC B
   XOR A
   OUT (C),A
   LD B,HIGH LCR
   LD A,3
   OUT (C),A
.res_fifo
   ld bc,FCR   ;reset fifo
   ld a,3:out (c),a
   ld b,high LSR   ;проверяем на высеры из ПЦ
   in a,(c):and 0x01:ret z
   ld b,high DAT
   in a,(c)
   jr .res_fifo
;генерируем црц таблицу
crc_gen
   ld hl,crc_t
.l1   ld d,l:ld e,0
   ld b,8
.l2
   sla e:rl d:jr nc,.l3
   ld a,d:xor 0x10:ld d,a
   ld a,e:xor 0x21:ld e,a
.l3
   djnz .l2

   ld (hl),e:inc h
   ld (hl),d:dec h
   inc l
   jr nz,.l1
   ret

мои домыслы:
1.укажите плиз на говнокод
2.дайте правильные дрова на фтд232, и правильные настройки
3.проц на столько сильно тормозится, что просираются сотни тактов
4.АВРка просирает байты