Open source USB echo demo
From DP
Contents |
Overview
This is short into/demo for using the open source USB stack with the PIC24F microcontroller found in the Bus Pirate v4. The code just configures the PIC, sets up the USB CDC class interface, and implements a simple echo function. Once connected to the terminal, the firmware will echo the character you type in increased by one. Code itself contains functions and extras needed for it to function with other PICs such as the PIC18F, but in this demo we'll be focusing only on the code related to the PIC24F
Basic hardware config
CONFIG words
As with each PIC there are CONFIG words that need to be setup to let the uC know in which stat it should operate. These words are located in the confingwords.h file which is included at the to of main.c via the #include "configwords.h" statement.
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2) _CONFIG2( IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV3 & IOL1WAY_ON & PLL_96MHZ_ON & DISUVREG_OFF)
In code Hardware setup
While the CONFIG words are programed in, further hardware setup need to be done, form inside the main function. This is done by calling the SetupBoard() function. Bellow is the function as it relates to the Bus Pirate hardware.
INTCON1bits.NSTDIS = 1; volatile unsigned long delay = 0xffff; CLKDIV = 0x0000; // Set PLL prescaler (1:1) CORCONbits.PSV = 1; // PSV initialisation PSVPAG = 0; // OSCCONbits.SOSCEN = 0; AD1PCFGL = 0x7FD8; //BUSPIRATEV4 has five analog pins b0, b1, b2, b5, b15 AD1PCFGH = 0x2; TRISBbits.TRISB10 = 0; // Let there be LEDS TRISBbits.TRISB8 = 0; TRISBbits.TRISB9 = 0; while (delay--);
This function sets up some interrupt options, the processor clock, and the analog and digital pinouts.
