Help needed with bitfogavs USB HID.

Post here to discuss programming with swordfish basic

Moderators: Chuckt, Garth, bitfogav

Post Reply
User avatar
brad
Site Admin
Site Admin
Posts: 2576
Joined: Fri Mar 26, 2010 10:30 pm

Help needed with bitfogavs USB HID.

Post by brad » Thu Nov 29, 2012 9:43 am

Hi everyone, I have been experimenting with bitfogavs USB HID software but have been having trouble compiling the swordfish code (bitfogav, this ones for you)

I have downloaded and copied the latest USB HID files from the swordfish site to my swordfish library. I opened up your HID ver 2 code and clicked compile. This is what came up:
screen-capture.png
screen-capture.png (11.39 KiB) Viewed 5662 times
Any idea's as to what's going on here?

User avatar
bitfogav
Moderator
Moderator
Posts: 908
Joined: Sun Mar 28, 2010 9:03 pm
Location: United Kingdom
Contact:

Re: Help needed with bitfogavs USB HID.

Post by bitfogav » Fri Nov 30, 2012 4:15 am

Im not sure if your question has already been answered at Digital-DIY but I would say its because the latest USB HID files on the Swordfish website are something that Jerry (jmessina at digital-diy) has put together and updated and the usual USB locations/names have been changed. I would suspect that the new USB files are conflicting with what should be the old USB version?.

My USB board and app was designed with only the original USB Swordfish files (versions 1.1) and not the updated USB files which are found here SF USB Version 1.4 :)

I have just tested my app and the SF code for version 2, I have not linked the new USB files into Swordfish so I am still using the old 1.1 version and I did get a compile failure but that was because I have a missing included file "iHIDDesc.bas" I have just noticed that it is not included on the Digital DIY post, sorry thats my mistake.

Here is a working app and my usb board version 2: (note if you want to compile it with swordfish then I would remove the new USB files?)
Bitfogavs USB Board Ver 2.rar
Visual basic app
(5.67 MiB) Downloaded 341 times
iHIDDesc.rar
Missing include file
(2.11 KiB) Downloaded 314 times
Swordfish Code:

Code: Select all

// device and clock...
Device = 18F2550
Clock = 48
   
// 20Mhz crystal, 48Mhz internal (FS USB)
Config
   PLLDIV = 5,               '}
   CPUDIV = OSC1_PLL2,       '} Set oscillator options to give 48MHz
   USBDIV = 2,               '} internal clock from 20MHz crystal
   FOSC = HSPLL_HS,          '} 
   VREGEN = ON               '} Enable internal 3.3V regulator for USB
   

// this is the programs descriptor, generated by EasyHID - you
// can find it in the same folder as this program...
#option USB_DESCRIPTOR = "iHIDDesc.bas"

// uncomment this line when we are not using the HID module service mode
'#option USB_SERVICE = False    'USB not automatically serviced - call
                                'HID.Service every 1mS


// import the HID and other used modules...
Include "usbhid.bas"
Include "USART.bas"
Include "convert.bas"


Dim BufferOut(32) As Byte Absolute TXReportRAM
Dim BufferIn(32) As Byte Absolute RXReportRAM
Dim i As Byte

Dim button1 As PORTC.0
Dim button2 As PORTC.1

Dim button_debounce As Word     // button debounce

Dim led1 As PORTB.0
Dim led2 As PORTB.1
Dim led3 As PORTB.2
Dim led4 As PORTB.3

Dim button_one As Boolean
Dim button_two As Boolean

// Subroutins and Functions

Sub checkleds()                     // test to check all leds on start-up (power on)
    Dim i As Byte    
    
    For i = 0 To 3        
        PORTB.Bits(i) = 1        
            DelayMS(50)        
        PORTB.Bits(i) = 0
            DelayMS(50)            
    Next
End Sub

Sub debounce_buttons()              // debounce all buttons
    If button_debounce <> 0 Then
        Dec(button_debounce)
    EndIf
End Sub


Sub sendBufferData()               // send USB buffer (bufferOut)
    For i = 0 To Bound(BufferOut)   
        BufferOut(i) = i
    Next  
    
        If button_one = true Then  // check button1 settings
            BufferOut(6) = 100
        Else 
            BufferOut(6) = 0
        EndIf
        
        If button_two = true Then  // check button2 settings
            BufferOut(7) = 100
        Else 
            BufferOut(7) = 0
        EndIf
       
        // send report
        HID.WriteArray(BufferOut,32)  // Write an array of bytes
End Sub


// setup USART (avoid using pickit usart as it slows down comms to pc - crashs VB app)
SetBaudrate(br115200)  // Usart baud rate..
'SetBaudrate(br38400)   // for Pickit2 uart tool.. this is the max baud rate for pickit2

Output(led1)
Output(led2)
Output(led3)
Output(led4)

// Init Variables
BufferOut(6) = 0
BufferOut(7) = 0

button_one = false
button_two = false

button_debounce = 200

checkleds 

// main program loop
While True
    // connect to USB...
    Repeat
    Until Attached
    
    While Attached

        // check for new report
        If HID.DataAvailable Then
           HID.ReadReport          // Read a HID report into RXReport buffer
        EndIf 
             

            // Remeber BufferOut(0) always equl 0 - physical data starts from BufferIn(1)
            If button1 = 0 And button_debounce = 0 And button_one = false Then
                    button_one = true
                    button_debounce = 50000     // debounce our button,  it is high due to clock speed.
                    sendBufferData
            ElseIf button1 = 0 And button_debounce = 0 And button_one = true Then               
                    button_one = false  
                    button_debounce = 50000     // debounce our button,  it is high due to clock speed.
                    sendBufferData 
            EndIf


            // Remeber BufferOut(0) always equl 0 - physical data starts from BufferIn(1)
            If button2 = 0 And button_debounce = 0 And button_two = false Then
                    button_two = true
                    button_debounce = 50000     // debounce our button,  it is high due to clock speed.
                    sendBufferData
            ElseIf button2 = 0 And button_debounce = 0 And button_two = true Then               
                    button_two = false  
                    button_debounce = 50000     // debounce our button,  it is high due to clock speed.
                    sendBufferData 
            EndIf
            
        
            // Led 1
            If BufferIn(0) = 100 Then
                High(led1)
            Else 
                Low(led1)
            EndIf  
        
            // Led 2 
            If BufferIn(1) = 100 Then
                High(led2)
            Else 
                Low(led2)
            EndIf 
        
            // Led 3
            If BufferIn(2) = 100 Then
                High(led3)
            Else 
                Low(led3)
            EndIf 
        
            // Led 4
            If BufferIn(3) = 100 Then
                High(led4)
            Else 
                Low(led4)
            EndIf 
    
        debounce_buttons // calls Sub to debounce our buttons. 

    Wend
Wend
If you don't know what Voltage your country is using, you shouldn't be doing electronics ;-)

User avatar
brad
Site Admin
Site Admin
Posts: 2576
Joined: Fri Mar 26, 2010 10:30 pm

Re: Help needed with bitfogavs USB HID.

Post by brad » Fri Nov 30, 2012 8:04 am

Thanks bitfogav - it was the new include files!

I don't know why I didn't think of that when I was wracking my brain for hours yesterday trying to figure it out...

I can now (once again) look forward to some awesome USB communications!

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest