Lab X USB


Results 1 to 7 of 7

Thread: Lab X USB

Threaded View

  1. #1
    Join Date
    Sep 2009
    Location
    South Wales (UK)
    Posts
    62

    Default Lab X USB

    Posts moved from here:
    http://www.picbasic.co.uk/forum/showthread.php?t=4529
    to make a new thread for Jim.


    Hi,

    I'm trying to get LABXUSB code to work which is a basic USB transmit/receive demo of USB. I get the same list of errors as above.

    I've copied the contents of PBP\USB18 into the folder containing the LABXUSB.BAS file. I then open the LABXUSB.BAS file in microcode studio plus, and push F9 to compile it, and still I get the above error list...

    Am I missing something very obvious (usual!)? Is there a tick box somewhere?

    Best regards, and a belated happy new year to all!

    Cheers

    Jimbo

    The LABXUSB.BAS is listed below:

    Code:
       INCLUDE "LABXUSB.INC"
       
       ' NOTE: USBBuffer(0) "aliased here as CMDByte" holds BufferOut(1) output
       ' from EasyHID.
       
       ' For inbound data packets, the value in CMDByte indicates what data the
       ' host application has requested. For outbound data packets "stuff the PIC
       ' is sending back", the value indicates to the host what data the PIC is
       ' returning.
       
    ' ************************************************************
    ' * main program loop - remember, you must keep the USB      *
    ' * connection alive with a call to USBService every couple  *
    ' * of milliseconds or so...                                 *
    ' ************************************************************
    Main:
       ' These are enabled only for routines in USBDriverService
       ' to cause a response when interrupt flag bits are tested
       @ BCF PIE2, USBIE  ; Disable USB interrupts
       @ BSF UIE, ACTVIE  ; Enable USB Bus Activity Detect Interrupt
       @ BSF UIE, IDLEIE  ; Enable USB Idle Detect Interrupt
       usbinit            ' initialise USB...
       
    ProgramStart: 
    '   GOSUB USB_Interrupts
       gosub DoUSBIn
       ' Find out which command we've received from the USB host
       ' and process the request.
       IF CMDByte = "R" THEN RelayControl
       IF CMDByte = "Z" THEN ShowStatus
      
       goto ProgramStart  
    ' ************************************************************
    ' * Control & data gathering routines                        *
    ' ************************************************************
       
    ShowStatus:
       ADCIN 0, Temp    ' Read A/D channel 0 into Temp variable
       
       ' Load USB buffer with command & data
       CMDByte = "A"    ' USBBuffer(0) = "A"
       USBBuffer(1) = Temp.HighByte
       USBBuffer(2) = Temp.LowByte
       GOSUB DoUSBOut   ' Send data to USB host        
            
    GetTemp:  ' Read temperature from Dallas 1-wire DS18B20 temp sensor
        OWOut DQ, 1, [$CC, $44]       ' Skip ROM search & do temp conversion
        
    Wait_Up:
        OWIn DQ, 4, [Busy]            ' Read busy-bit
        if Busy = 0 Then Wait_Up      ' Still busy..?, Wait_Up..!
        OWOut DQ, 1, [$CC, $BE]       ' Skip ROM search & read scratchpad memory
        OWIn DQ, 2, [Temp.Lowbyte, Temp.Highbyte]' Read two bytes / end comms
        
        ' Load USB buffer with command & data
        CMDByte = "T"  ' USBBuffer(0) = "T"
        USBBuffer(1) = Temp.HighByte
        USBBuffer(2) = Temp.LowByte
        
        ' Turn ON relay if Temperature is > 25 deg C
        ' Just an example. Comment this out if not used.
        IF (Temp >> 4) > 25 THEN
           HIGH LED
        ELSE
           LOW LED
        ENDIF
        
        GOSUB DoUSBOut   ' Send data to USB host
        
        CMDByte = "L"    ' USBBuffer(0) = "L"
        IF LED = 1 THEN  ' Read output pin
           USBBuffer(1) = "O"
           USBBuffer(2) = "N"
           USBBuffer(3) = " "
        ENDIF
        
        IF LED = 0 THEN  ' Read output pin
           USBBuffer(1) = "O"
           USBBuffer(2) = "F"
           USBBuffer(3) = "F"
        ENDIF
        GOSUB DoUSBOut  
        GOTO ProgramStart
        
    RelayControl:
        CMDByte = "L"    ' USBBuffer(0) = "L"
        IF USBBuffer(7) = "1" THEN
           HIGH LED      ' LED or relay ON
           ' Load ON status into buffer
           ' This informs the USB host as to relay status
           USBBuffer(1) = "O"
           USBBuffer(2) = "N"
           USBBuffer(3) = " "
        ENDIF
        
        IF USBBuffer(7) = "0" THEN
           LOW LED       ' LED or relay OFF
           ' Load OFF status into buffer
           ' This informs the USB host as to relay status
           USBBuffer(1) = "O"
           USBBuffer(2) = "F"
           USBBuffer(3) = "F"
        ENDIF
        GOSUB DoUSBOut   ' Send data to USB host
        GOTO ProgramStart
            
        END
    Last edited by Demon; - 23rd January 2012 at 01:56. Reason: New thread

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts