i try this code with 18F4550 and work 1000%
i change code for 18F2550 and not work, not Recognised
Resonator 4Mhz
4k7 in Mclr
470nf in Vusb
0,1nf in Vdd-Vcc
Vusb - 4550 = 3,31
Vusb - 2550 = 3,37
Code:
' =================
asm
__CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
; ; ; USB clock source comes from the 96 MHz PLL divided by 2
; ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
; No prescale (4 MHz oscillator input drives PLL directly)
__CONFIG _CONFIG1H, _FOSC_XTPLL_XT_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
; ; ; Oscillator Switchover mode disabled
; ; Fail-Safe Clock Monitor disabled
; XT oscillator, PLL enabled, XT used by USB
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_2_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 & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
endasm
DEFINE OSC 48
'
' Hardware configuration
' ======================
'
' I/O and PORTs
' -------------
PORTB = 0
PORTC = 0
' PORTD = 0 ' enable for 18f4550
' PORTE = 0 ' enable for 18f4550
TRISB = 0
TRISC = 0
TRISA = $FF
' TRISD = 0 ' enable for 18f4550
' TRISE = 0 ' enable for 18f4550
' USB modulo
UCFG var byte EXT ' include UCFG register... Yeah Melabs didn't :o(
ucfg = %00010100 ' enable internal USB pull-up, Full speed USB
' Interruptores
INTCON = %10100000 ' Enable global and TMR0 interrupts
T0CON = %10000000 ' TMR0, CLK internal, prescaler 1:2, T0ON
'
' Variables & constants definition
' ================================
I Var Byte
USBBufferSizeTX con 8 ' input
USBBufferSizeRX con 8 ' output
Usb_Contador Var Byte '
Usb_Dados var byte[8] ' store ADCs & pushButton data to send to USB
' Constantes
TMR0IF VAR INTCON.2 ' TMR0 overflow int flag
TMR0ON VAR T0CON.7 ' TMR0 on/off bit
TMR0IE VAR INTCON.5 ' TMR0 interrupt enable/disable bit
' Macros
goto Configura
asm
Reload_TMR0 macro
BCF _TMR0ON ; stop timer
MOVE?CW d'65000',TMR0L ; reload for timebase ~100uSec
BCF _TMR0IF ; clear overflow flag
BSF _TMR0ON ; start timer
ENDM
endasm
'-------------------------------------------------------------------------------
Configura:
pause 500
usbinit
@ Reload_TMR0
ON INTERRUPT GOTO Usb_Servico
'-------------------------------------------------------------------------------
Inicio:
gosub Usb_Entrada
goto Inicio
'-------------------------------------------------------------------------------
Usb_Entrada:
tmr0ie = 0
Usb_Contador = USBBufferSizeRX
USBService
USBIn 3, Usb_Dados, Usb_Contador, Timeout
GOSUB Usb_Saida
return
Timeout:
@ Reload_TMR0
tmr0ie = 1
return
'-------------------------------------------------------------------------------
Usb_Saida:
TMR0IE = 0
WaitPC:
'Usb_Contador = USBBufferSizeTX
USBService
USBOut 3, Usb_Dados, Usb_Contador, Waitpc
@ Reload_TMR0
tmr0ie = 1
return
'-------------------------------------------------------------------------------
DISABLE
Usb_Servico:
usbservice
@ Reload_TMR0
RESUME
ENABLE
Bookmarks