Суббота, Май 30, 2020

Demo

Разберемся с USB ,что нам для этого нужно?

  1. Библиотека от Microchip.
  2. С18 версии 3.34 (есть на торренте).
  3. Proteus v7.10 (есть на торренте).
  4. MPLAB IDE v8.83

Устанавливаем библиотеку на диск и заходим c:\microchip_solutions_v2013-02-15\USB\Device - MCHPUSB - Generic Driver Demo\Firmware\ . Запускаем файл проекта USB Device - MCHPUSB - Generic Driver - C18 - PICDEM FSUSB.mcp.

Для начала нужно установить конфигурацию Кварца(кристала). Открываем файл main.c и меняем число в строке #pragma config PLLDIV   = 5 - на нужное нам,а нам нужно число делитель 4=F/x где х-то число которой нужно менять,F-частота кварца ,например, кварц 4МГц 4=4/1-записываем #pragma config PLLDIV = 1.Нельзя ставить кварц с дробным числом частоты ,например,32.864.Работать не будет.Ставим кварц 4,8,16,20 и т.д.

 

/** INCLUDES *******************************************************/
#include "USB/usb.h"
#include "USB/usb_function_generic.h"
#include "user.h"                              // Modifiable
#include "HardwareProfile.h"

 

/** CONFIGURATION **************************************************/
#if defined(PICDEM_FS_USB)      // Configuration bits for PICDEM FS USB Demo Board (based on PIC18F4550)
        #pragma config PLLDIV   = 1     //4МГц кварц #pragma config PLLDIV   = 5  было // (20 MHz crystal on PICDEM FS USB board)
        #if (USB_SPEED_OPTION == USB_FULL_SPEED)
            #pragma config CPUDIV   = OSC1_PLL2  
        #else
            #pragma config CPUDIV   = OSC3_PLL4   
        #endif
        #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
        #pragma config FOSC     = HSPLL_HS
        #pragma config FCMEN    = OFF
        #pragma config IESO     = OFF
        #pragma config PWRT     = OFF
        #pragma config BOR      = ON
        #pragma config BORV     = 3
        #pragma config VREGEN   = ON      //USB Voltage Regulator
        #pragma config WDT      = OFF
        #pragma config WDTPS    = 32768
        #pragma config MCLRE    = ON
        #pragma config LPT1OSC  = OFF
        #pragma config PBADEN   = OFF
//      #pragma config CCP2MX   = ON
        #pragma config STVREN   = ON
        #pragma config LVP      = OFF
//      #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
        #pragma config XINST    = OFF       // Extended Instruction Set
        #pragma config CP0      = OFF
        #pragma config CP1      = OFF
//      #pragma config CP2      = OFF
//      #pragma config CP3      = OFF
        #pragma config CPB      = OFF
//      #pragma config CPD      = OFF
        #pragma config WRT0     = OFF
        #pragma config WRT1     = OFF
//      #pragma config WRT2     = OFF
//      #pragma config WRT3     = OFF
        #pragma config WRTB     = OFF       // Boot Block Write Protection
        #pragma config WRTC     = OFF
//      #pragma config WRTD     = OFF
        #pragma config EBTR0    = OFF
        #pragma config EBTR1    = OFF
//      #pragma config EBTR2    = OFF
//      #pragma config EBTR3    = OFF
        #pragma config EBTRB    = OFF

 

#elif defined(PICDEM_FS_USB_K50)

Вся работа этого примера происходит в файле user.c,функция ProcessIO(),которая вызывает функцию ServiceRequests(),которая принимает пакеты и с помощью оператора switch(OUTPacket.CMD) включает светодиоды.


Back to Top