1

Тема: Интерфейсная плата с 580ВВ51

Пытаюсь на "Агат 9" завести последовательный интерфейс 580ВВ51 на интерфейсной плате от "Агат 7".  Плата установлена в слот 3. Если я правильно понимаю, при такой установке 0xC0B8 - регистр данных, 0xC0B9 - регистр команд/статуса. Если верить схеме в книге Мымрина, скорость установлена 4800. Инициализирую ВВ51, но ни передача данных, ни приём не происходят. Инициализирую, вручную вводя данные через МОНИТОР. Возможно, я неправильно что-то делаю с инициализацией, возможно, неисправна плата. Собственно, вопрос: кто-нибудь использовал на "девятке" плату интерфейса от "семёрки"? В частности - 580ВВ51.

2

Re: Интерфейсная плата с 580ВВ51

Там вроде CTS надо в ноль поставить для разрешения передачи.

3 Отредактировано AlexBel (11-07-2021 23:19)

Re: Интерфейсная плата с 580ВВ51

Т.е. вход CTS физически подключить к GND?

Было бы хорошо пример правильной инициализации. Вроде бы, всё сделал в соответствии с даташитом, но, мало ли...

4

Re: Интерфейсная плата с 580ВВ51

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

5 Отредактировано Voldemar0 (12-07-2021 07:41)

Re: Интерфейсная плата с 580ВВ51

Я CTS никуда не подключал, всё работало и так.

Инициализация (слот 5, видимо):

 LDA #$15
 STA $C0D9
 STA $C0D9
 STA $C0D9
 LDA #$40
 STA $C0D9
 LDA #:01000010 4E  11:80-97 (88) 10:21-24 (22) - в скобках делители для PC, вероятно
 STA $C0D9
START1:
 LDA #:00010101 05
 STA $C0D9

В этом коде важно, чтобы он исполнялся после УПР-СБР, т.е. никаких других обращений к микре не должно быть. Она после первой записи в регистр режима на этот же адрес ставит регистр управления. В ранних прогах я прямо выводит надпись "Нажмите УПР-СБР для продолжения",
ну и игры с вектором сброса. А потом отказался - всё равно кроме меня туда никто ничего не пишет.

Почему-то я использовал обмен по 5 бит:

;
; ЧТЕНИЕ БАЙТА.
;
RBYTE:
 JSR RCIF
 ASL A
 ASL A
 ASL A
 ASL A
 STA SAVX
 JSR RCIF
 AND #$F
 ORA SAVX
 RTS
;
; ЧТЕНИЕ ЦИФРЫ.
;
RCIF:
 BIT $C063
 BPL BREAK

 LDA $C089,X
 AND #:00000010
 BEQ RCIF

 LDA $C089,X
 AND #:00110000
 BNE ERR.R

 LDA $C088,X
 PHA
 LDA #$15
 STA $C089,X
 PLA
 RTS

;
; ВЫВОД СООБЩЕНИЙ ОБ ОШИБКАХ.
;
BREAK:
 JSR PRINT
 DCI "BREAK SIGNALED OR ILLEGAL KEY."
EXIT:
 JMP (ADREXIT)
*
ERR.R:
 JSR PRINT
 DCI "OШИБKA ПEPEБEГAHИЯ ИЛИ ФOPMЫ."
 JMP EXIT
;
; BЫBOД БAЙTA.
;
WBYTE:
 PHA
 LSR A
 LSR A
 LSR A
 LSR A
 JSR WCIF
 PLA
;
; BЫBOД ЦИФPЫ.
;
WCIF:
 PHA
WC.1:
 LDA $C089,X
 LSR A
 BCC WC.1
 PLA
 STA $C088,X
 BIT $C063
 BPL BREAK
 RTS

6 Отредактировано AlexBel (12-07-2021 13:49)

Re: Интерфейсная плата с 580ВВ51

Терминал настроен на 4800, 8N1. Плата установлена в слот 3. По примеру выше написал программу:

Spoiler
CTRL     EQU $C0B9
DATA     EQU $C0B8

         ORG $4000
         OBJ $4000
         
         LDS #$15
         STA CTRL
         STA CTRL
         STA CTRL
         LDA #$40
         STA CTRL
         LDA #$4E
         STA CTRL
         LDA #$05
         STA CTRL
         RTS

Запускаю, инициализирую. Пишу в регистр данных 0x00. В терминале получаю 0x80. Пишу 0x0F, получаю 0x87. Пишу 0x12, получаю 0x8A. Если посмотреть побитно, получается:

00 - 00000000
80 - 10000000

0F - 00001111
87 - 10000111

12 - 00010010
8A - 00001010

Если из терминала отправляю 0x87, в регистре данных нахожу 0x07. Отправляю 0x8F, получаю 0x0F, отправляю 0xFF, получаю 0xFF. Отправляю 0x00, получаю 0x00, отправляю 0x34, получаю 0x74.

Понять, что происходит, пока что, не смог. Опробовал две платы. Одну подключил к обычному RS232 через штатный разъём. Вторую подключил по TTL через адаптер USB<>UART. Обе платы ведут себя одинаково. Буду благодарен за подсказку, у самого из идей только плюнуть на этот ВВ51 и сделать плату с 6551...

7 Отредактировано Voldemar0 (13-07-2021 05:57)

Re: Интерфейсная плата с 580ВВ51

Ты посмотри длину посылки :)
Я ж писал: это режим 5 бит.

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

8 Отредактировано AlexBel (13-07-2021 09:28)

Re: Интерфейсная плата с 580ВВ51

Вот инструкция для ВВ51:

Spoiler

http://forum.agatcomp.ru//misc.php?action=pun_attachment&amp;item=960&amp;download=1

По битам:

7 6 5 4 3 2 1 0
0 1 0 0 1 1 1 0 = 0x4E

7-6 = 01 = 1 стоп-бит
5-4 = 00 = без контроля чётности
3-2 = 11 = 8 бит данных
1-0 = 10 = частоту делим на 16

Где я что упустил?

Post's attachments

Attachment icon ВВ51_инструкция.JPG 31.52 kb, 119 downloads since 2021-07-13 

9

Re: Интерфейсная плата с 580ВВ51

:)
Может быть я поэтому 5 бит и использовал :)
что не переключалась ВВ куда надо.

10

Re: Интерфейсная плата с 580ВВ51

Спаял на макетке ACIA 6551 по простейшей схеме, подключил, проинициализировал в соответствии с даташитом,  проверил - данные в обе стороны передаются отлично! Не знаю, что этому ВВ51 нужно. Причём на двух платах одинаковое поведение. Теперь, наверное, когда работает 6551, плата интерфейса Агата уже не очень актуальна, но, всё же, хотелось бы найти причину такого поведения ВВ51...