| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Social distancing? Try a better way to work remotely on your online files. Dokkio, a new product from PBworks, can help your team find, organize, and collaborate on your Drive, Gmail, Dropbox, Box, and Slack files. Sign up for free.

View
 

rk86-2018-usb

Page history last edited by alexcp 10 months, 4 weeks ago

USB интерфейс на базе FT245R, который можно воткнуть вместо ВВ55

 

 

Со стороны хоста (PC) это выглядит как виртуальный последовательный порт (/dev/tty.usbserial-XXXXXXXX или COMx), а со стороны РК - как два порта, один двунаправленный для данных, второй, только на чтение, содержит два бита статуса очередей чтения/записи. Если воткнуть плату в РК вместо D14, то порт данных будет находиться по всем четным адресам 0xAxxx, а порт статуса - по всем нечетным. Их можно читать/писать даже из Монитора, директивами D или L и M или F, соответственно.

К сожалению, в схеме допущена ошибка - вывод 5 U4 подключен к A0, а должен бы к /A0. Из-за этого данных порт на запись/передачу расположен не по четному адресу, а по нечетному, по которому на чтение выдаются биты состояния FIFO. Исправлю в следующей редакции.

 

Пример использования из ассемблера:

;===========================================================================

;  FT245R use example

;  Created by @alexcp on 18 Dec 2018

;  

;

FT245R  equ     0A000h  ;  base address of FT245R FIFO

DATA    equ     0       ;  Data register

STAT    equ     1       ;  Status register

;

;  Define FIFO port

FIFO_DATA   equ   FT245R+DATA

FIFO_STATUS equ   FT245R+STAT

RXEMPTY equ     1       ; MASK FOR RX BUFFER EMPTY

TXFULL  equ     2       ; MASK FOR TX BUFFER FULL

;

;===========================================================================

;  Get a character to A

;

;  Return A=char, CY=0 if data received

;         CY=1 if timeout

;

;  Uses 4 bytes of stack including return address

;

GETCHAR:

        PUSH    D

        LXI     D,8000h       ;long timeout

gc10:   DCX     D

        MOV     A,D

        ORA     E

        JZ      gc90          ;exit if timeout

        LDA     FIFO_STATUS   ;read device status

        ANI     RXEMPTY

        JNZ     gc10          ;not ready yet.

;

;  Data received:  return CY=0. data in A

        XRA     A             ;cy=0

        LDA     FIFO_DATA     ;read data

        POP     D

        RET

;

;  Timeout:  return CY=1

gc90:   STC                   ;cy=1

        POP     D

        RET

;

;===========================================================================

;  Output character in A

;

;  Uses 4 bytes of stack including return address

;

PUTCHAR:

        PUSH    PSW           ;save byte to output

pc10:   LDA     FIFO_STATUS   ;read device status

        ANI     TXFULL        ;tx full ?

        JNZ     pc10

 

        POP     PSW

        STA     FIFO_DATA     ;transmit char

        RET

 

USB интерфейс позволяет связать РК с настольным компьютером и, например, запустить на нем отладчик, в моем случае NoICE. Это, конечно, не Eclipse с OpenOCD, но сильно лучше, чем никакого отладчика. Для его работы нужен небольшой монитор, который я по-быстрому передрал из готового примера для 8085 и разместил в ПЗУ, начиная с адреса F000, да простят меня поклонники ДОС 2.9. Исходник и скомпилированный .bin прилагаются.

 

Одна из функций отладчика - загрузка программ в память РК. Прощай, кассетный магнитофон!

 

Comments (0)

You don't have permission to comment on this page.