Hallo,
Ik heb het voorbeeld uit de help functie van MicroBasic voor USB HID geprobeerd (zie hieronder).
In de uitleg hierover staat dat dit werkt onder 48MHz en op in het schema wordt een 8 MHz kristal gebruikt.
Mijn instellingen in WinPic zien jullie in bijlage. Ik gebruik een 20 MHz kristal. (De CPU frequentie is bij mij dan toch 48 MHz? (Hoewel ik niet goed snap dat die frequentie hoger kan zijn dan die van mijn kristal)).
Bij het insteken van de USB krijg ik de melding dat er problemen zijn met het USB apparaat.
Wat doe ik fout?
(Ik heb met de HID terminal van bij tools een descriptor file gemaakt en deze geïncludeerd in mijn programma.)
(Dit is de eerste keer dat ik USB HID in MikroBasic gebruik, ik heb met JAL wel succesvol USB RS232 emulatie gebruikt.)
code:
program USBtest
include USBdsc
dim k as byte
dim userRD_buffer as byte[64]
dim userWR_buffer as byte[64]
sub procedure interrupt
asm
CALL _Hid_InterruptProc
nop
end asm
end sub
sub procedure Init_Main
' Disable all interrupts
' Disable GIE, PEIE, TMR0IE, INT0IE,RBIE
INTCON = 0
INTCON2 = $F5
INTCON3 = $C0
' Disable Priority Levels on interrupts
RCON.IPEN = 0
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0
' Configure all ports with analog function as digital
ADCON1 = ADCON1 or $0F
' Ports Configuration
TRISA = 0
TRISB = 0
TRISC = $FF
TRISD = $FF
TRISE = $07
LATA = 0
LATB = 0
LATC = 0
LATD = 0
LATE = 0
' Clear user RAM
' Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
asm
LFSR FSR0, $000
MOVLW $08
CLRF POSTINC0, 0
CPFSEQ FSR0H, 0
BRA $ - 2
end asm
' Timer 0
T0CON = $07
TMR0H = (65536 - 156) >> 8
TMR0L = (65536 - 156) and $FF
INTCON.T0IE = 1 ' Enable T0IE
T0CON.TMR0ON = 1
end sub
'** Main Program **
main:
Init_Main()
Hid_Enable(@userRD_buffer, @userWR_buffer)
do
for k = 0 to 255
' Prepare send buffer
userWR_buffer[0] = k
' Send the number via USB
Hid_Write(@userWR_buffer, 1)
next k
loop until FALSE
Hid_Disable
end.