Steve,
You're dealing with bytes. PORTA.1 = USBBuffer[1] isn't the way to go since you can't place a byte value on a single port "bit".
Just place the byte you need on the whole port. You can send a single byte value from the PC app, and simply place it on the port.
I.E. PORTA = USBBuffer[1] should work fine - assuming that's the byte element you want.
Sending data from the PIC to PC is equally simple. Here's one example. Note this isn't everything. Just the sections I added to the framework file created with EasyHID.
On the PC side, modify the USB framework file created with EasyHID something like this;Code:DEFINE OSC 48 DEFINE LOADER_USED 1 DEFINE ADC_BITS 10 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source /32 DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS DEFINE RESET_ORG 800h ' <-- I used the Microchip USB loader BufferSize con 8 DataBuffer Var Byte(BufferSize) ' data buffer DataBufferCount Var Byte ' buffer size Quanta con 1251 TRISD = 0 PORTD = 0 ' Variables X VAR byte Adval VAR WORD TRISA.0 = 1 ' RA0 input ADCON1 = %00001110 ' A/D channel 0 ADCON2 = %10000011 ' Right justify for 10-bit USBInit Main: GOSUB DoUSBIn PORTD = DataBuffer[7] ADCIN 0,adval ' Read A/D channel 0 into ADval variable ADval = ADval */ Quanta ' Quanta result ' Load data buffer DataBuffer(0) = Adval DIG 3 DataBuffer(1) = "." DataBuffer(2) = Adval DIG 2 DataBuffer(3) = Adval DIG 1 DataBuffer(4) = Adval DIG 0 GOSUB DoUSBOut FOR X = 0 to 99 ' Short delay between updates PAUSEUS 1000 USBSERVICE ' Maintain HID connection during delay period NEXT X GOTO Main
Dim MyText As String ' create your string storage space
In the OnRead sub-routine;
MyText = (CStr(BufferIn(1)) + Chr$(BufferIn(2)) + CStr(BufferIn(3)) + CStr(BufferIn(4)) + CStr(BufferIn(5)) + "V")
Label1.Caption = MyText ' Place string text into label displaying A/D value
Judy,
Reading three pulse widths or A/D values doesn't really have anything to do with USB. The USB PIC is just another PIC with the addition of the USB module. Using the onboard A/D is pretty much the same as any other PIC.
All you need here is the datasheet, and a little time to experiment getting your pulse measurement & A/D routines working. Sending this all to the PC via the USB module is no more than stuffing your values into the outgoing buffer like in the previous example.
Just be sure to keep the USB connection alive by avoiding the use of blocking functions, long delays, etc,,. It's really not that hard, but you will need to experiment a tad.




Bookmarks