with 12mhz crystal USB work 100%
but i need work with 8Mzh low speed
can i help ?
Code:'*************************************************************************** '* Name : BasicUSB.pbp * '* Author : Darrel Taylor * '* Notice : Copyright (c) 2009 * '* Date : 7/23/2009 * '* Version : 1.0 * '* Notes : * '* : * '*************************************************************************** ;--- if you un-comment these, you must comment the ones in the .inc file --- ASM ; 18F2550/4550, 20mhz crystal ; __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L ; __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H ; __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H ; __CONFIG _CONFIG3H, _PBADEN_OFF_3H ; __CONFIG _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L ENDASM ASM ; 18F13K50/14K50 Only 12mhz crystal can be used for USB __CONFIG _CONFIG1L, _CPUDIV_NOCLKDIV_1L & _USBDIV_OFF_1L __CONFIG _CONFIG1H, _FOSC_HS_1H & _PLLEN_ON_1H & _PCLKEN_ON_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ENDASM DEFINE OSC 48 clear ;--- Setup Interrupts ------------------------------------------------------ INCLUDE "DT_INTS-18.bas" ; Base Interrupt System ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler USB_Handler endm INT_CREATE ; Creates the interrupt processor endasm ;--- Setup USB ------------------------------------------------------------- INCLUDE "DT_HID260.pbp" DEFINE USB_VENDORID 6017 DEFINE USB_PRODUCTID 2000 DEFINE USB_VERSION 1 DEFINE USB_VENDORNAME "Darrel Taylor" DEFINE USB_PRODUCTNAME "DT_HID" DEFINE USB_SERIAL "001" DEFINE USB_INSIZE 32 ; IN report is PIC to PC (8,16,32,64) DEFINE USB_OUTSIZE 16 ; OUT report is PC to PIC DEFINE USB_POLLIN 10 ; Polling times in mS, MIN=1 MAX=10 DEFINE USB_POLLOUT 10 ; --- Each USB LED is optional, comment them if not used ---- DEFINE USB_LEDPOLARITY 1 ; LED ON State [0 or 1] (default = 1) DEFINE USB_PLUGGEDLED PORTB,0 ; LED indicates if USB is connected DEFINE USB_TXLED PORTC,2 ; " " data being sent to PC DEFINE USB_RXLED PORTC,1 ; " " data being received from PC OutCount VAR WORD : OutCount = 0 Value VAR WORD X VAR WORD ;--- Setup ADC ------------------------------------------------------------- DEFINE ADC_BITS 10 ; Number of bits in ADCIN result ADCON2.7 = 1 ; right justify (Change this if ADFM in diff register) ANSEL = %00010000 ; AN4/RC0 Analog ANSELH = 0 ;--- The Main Loop --------------------------------------------------------- Main: FOR X = 0 to 1000 ; Check for incomming USB data while pausing @ ON_USBRX_GOSUB _HandleRX PAUSE 1 NEXT X ADCIN 4, Value OutCount = OutCount + 1 ARRAYWRITE USBTXBuffer,["AN0=",DEC Value," -",DEC OutCount," "] IF Plugged THEN GOSUB DoUSBOut ; only send when USB is connected GOTO Main ;---- This just sends the received packet back to the PC ------------------- HandleRX: ARRAYWRITE USBTXBuffer,[STR USBRXBuffer\USBBufferSizeRX] return




Bookmarks