Hi Guys
I'm pretty new to all of this, but here's my attempt.
I've attached a schematic of the device i am using.
What i am attempting to make here is some sort of USB to Serial Port Converter.
The code i loaded onto the chip is as follows:
Code:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 2009/01/02 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
@ __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@ __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
'_CONFIG1H, _FOSC_XTPLL_XT_1H
@ __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_28_2L & _VREGEN_ON_2L
@ __CONFIG _CONFIG2H, _WDT_OFF_2H
@ __CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H
@ __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
' ****************************** Configure Hardware *********************************************
trisb = %11111100
trisc = %10111111 ' Set TX (PortC.6) to out, rest in
spbrg = 25 ' Calculate ((CPU speed mhz/Baud)/16)- 1 25 = 115200 baud EX:((48000000/115200)/16)-1
rcsta = %10010000 ' Enable serial port and continuous receive
txsta = %00100000 ' Enable transmit and asynchronous mode/brgh = 0 bit 2
baudcon =%00001000 ' Bit3 = 1: High speed usart 16 bit
'***************************** Variables ******************************************
USBBufferTX Var Byte[1]
USBBufferRX var Byte[1]
USBBufferCount Var Byte
SerBufferTX Var Byte
SerBufferRX var Byte[1]
BufferRX var Byte
SerBufferCount Var Byte
Indexer var byte
Xmit_Start var bit ' Start serial data transmission
Status_Bits var byte ' Status bits to Pc
Data_Delay var word ' Delay for dataout
Data_Out var word ' Data
Status_Bits = 0
LED Var PORTB.1
Define OSC 48
USBInit
high led
pause 1000
Low LED ' LED off
USBService
for Indexer = 0 to 0
USBBufferRX[Indexer]= 0
next
usbbuffercount = 1
main:
goSUB usb_rx
goSUB com_rx
goto main
' Transmit USB Data
USB_TX:
' TX buffer size
USBService
USBOut 3, serBufferrX, USBBufferCount, main ' Transmit data
RETURN
' Receive USB Data
USB_RX:
USBService
USBIn 3, USBBufferRX, USBBufferCount, exitsub ' Receive data if available,then exit
serbuffertx=usbbufferrx[0]
goSUB com_tx
return
'GOSUB Main
'Serial Receive
COM_RX:
hserin 1, exitsub, [bufferrx]
serbufferrx[0]=bufferrx
goSUB usb_TX
goSUB main
'Serial Transmit
COM_TX:
hserout [serbuffertx]
RETURN
exitsub:
return
Now this code compiles and i can connect via a hyperterminal to both the USB virtual and the physical Serial port. However if i enter anything in either of hyperterminals, it gives nothing and after a while of constant typing the hyperterminals start freezing on me. So i take it i've done something horrifically wrong.
Any suggestions?
Bookmarks