Welcome to the PICEBS2 wiki
PICEBS2 (hardware details) is the name of a small embedded computer board targeted at teaching embedded systems programming. As its name suggests, it is the second iteration of a successful family of Microchip PIC board, this time with the objective to realize an all-in-one system (the debugger PICKIT3 is included on board).
Please note that, as a student, you can loan a board for free during your studies to work at home ;-) Just ask the laboratory responsible Pascal Sartoretti (sap) for the procedure to follow.
We, the PICEBS2 team, provide a comprehensive solution for
- Practical work for HEI course Information systems given in second year.
- All kind of project featuring a small-sized micro-controller.
What can be done with the PICEBS2?
The board is powerful enough to run applications with:
- LCD and touch screen interface
- Serial port usage (UART)
- CAN interface
To program this board, you do not require an external programming probe, as it already includes a PICKIT3 system for programming and debugging. All you need is an USB port and the free MPLAB-X IDE.
Here is a list of the main PICEBS2's characteristics:
- CPU PIC18F87K22
- High range PIC18 family with 128kB Flash & 4kB RAM
- 12 bits ADC
- 11 timers
- UART, SPI, I2C
- Onboard PICKIT3 debugger
- Compatible with MPLABX
- Can be used standalone or turned off
- LCD Display
- 320x240, 265k colors
- Resistive touch screen
- Networking and communication
- CAN bus
- PS2 keyboard
- Olimex UEXT
- All CPU pins are available on a connector
- Standard HES-SO//Valais 26 pin header on board
- Source files for assembler laboratories
- Source files for C laboratories
Tips & tricks
- CPU speed control
// to work at maximum CPU speed (64MHz) insert following code at start. PLLEN = 1; // activate PLL x4 OSCCON = 0b01110000; // for 64MHz cpu clock (default is 8MHz) // Caution -> the PLL needs up to 2 [ms] to start ! // Wait a moment if needed with: __delay_ms(2); ...
- Change one bit on a port
// to change one bit on a port, use LATx and not PORTx LATH2 = 1; // turn led on for example ...
- Interrupt on change on PORTB (RB4-RB7)
// to clear the interrupt flag you have to read the PORTB ... PORTB; // clear the latch change on PORTB RBIF = 0; // clear the interrupt itself ...
- Reduce current consumption
// To reduce consumption at minimum, do at least LCD_PowerOff(); // turn all LCD parts off UART_PowerOff(); // turn UART driver off Can_PowerOff(); // turn off MCP2515 chipset // And define unused GPIOs as output TRISB5 = 0; // for example ... // You can measure (between white and yellow test points) about 630 uA after a SLEEP();
- Link in low address range (download time reduced)
- To reduce the time to download, you need to write a linker special command In the "XC8 linker" - "Extra Linker Option" write the following line: "-L-ACODE=0x0-0x10000 -L-AMEDIUMCONST=0x0-0x10000" - Another solution is to have an interrupt routine (even if nothing in) The full program needs to be smaller than 50% of CPU Flash memory.