From UIT
Revision as of 10:30, 30 September 2022 by Pascal.sartoret (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Welcome to the PICEBS3 wiki

PICEBS3 is the name of a small embedded computer board targeted at teaching embedded systems programming based on the Mikroe EasyPicPro v8 board. As its name suggests, it is the third iteration of a successful family of Microchip PIC board.

The Mikroe board has been just modified for our laboratories usage.

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 PICEBS3 team, provide a comprehensive solution for

  • Practical work for HEI course Information System given in second year.
  • All kind of project featuring a small-sized micro-controller.

What can be done with the PICEBS3?

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 "Microchip Snap"system for programming and debugging. All you need is an USB port and the free MPLAB-X IDE. Caution, the USB câble has to be an USB-A cable.


Photo Schematic Datasheets

PICEBS 3 - EasyPICPro v8 schematic

CPU board 18F97J94

CPU board 18F97J60

Mikrobus CAN MCP2518FD

LCD capacitive 800x480

LCD 2x16 chars

CPU PIC18F97J94 datasheet 
CPU PIC18F97J60 datasheet 
LCD controller SSD1963 datasheet 
CAN FD controller MCP2518FD datasheet 

Here is a list of the main PICEBS3's characteristics:

  • CPU PIC18F97J94
    • High range PIC18 family with 128kB Flash & 4kB RAM, Lite PPS
    • XLP technology (deep sleep @ 80nA)
    • 12 bits ADC
    • 9 timers
    • RTC
    • 4 UART, 2 SPI, 2 I2C
    • USB device (Low and Full Speed)
    • ...
  • CPU PIC18F86K22 (Microchip MCC compatible)
    • High range PIC18 family with 64kB Flash & 4kB RAM
    • XLP technology (deep sleep @ 20nA)
    • 12 bits ADC
    • 11 timers
    • RTC
    • 2 UART, 2 SPI, 2 I2C
    • ...
  • Onboard SNAP debugger (not on EasyPicPro v8 standard)
    • Compatible with MPLABX IDE (usage of USB-A cable is mandatory)
  • I/O ports
    • 10 ports with optional led
    • each of them with a button (pull-up or pull-down selectable)
  • Displays (only one usable at the same time)
    • LCD Display
      • 800x480
      • Capacitive multi points touch screen
      • Backlight
    • 2x16 char display
      • Backlight
  • Networking and communication
    • CAN bus (with external mikroBUS click board)
    • RS232 (throuth USB FTDI)
    • USB interface (device, low or full speed with PIC18F97J94 only)
    • Ethernet interface(available only with PIC18F97J60)
  • Development
    • Almost all CPU pins are available on connectors
    • CPU current measure available on a 1 ohm resistor (not on EasyPicPro v8 standard)


Use MPLABX-IDE (download) development system.

Use XC8 compiler (download) for C programming.

To access these files on hevs gitlab, choose the user: "hevslabs" with the password: "hevslabs" (standard login, not LDAP)

Tips & tricks

  • CPU speed control
// to work at maximum CPU speed (64MHz) insert following code at start.
   OSCCON3 = 0;            // for 64MHz cpu clock (default is 32MHz)
  • Assembler example
#include <xc.inc>  
#include "conf_bits.inc"
PSECT main,class=CODE
 	movlw    0x00        ; move literal value 0x00 to W
 	movwf    TRISH,a     ; move the content of W to TRISH, (access bank)
	movlb	 0x01	     ; select bank
 	movwf    0x125,b     ; move W to memory position 0x125 (banked) 
 	goto $               ; stay here
    end main
  • Configure PPS lite UART1 to FTDI PICEBS3 USB interface
// code in C
  RPOR18_19bits.RPO18R = 1; // map RC6 to RX FTDI (output of CPU) UART1_TX
  RPINR0_1bits.U1RXR = 4;   // map RC7 to TX FTDI (input of CPU) UART1_RX

// code in assembler (movff because banked)
  MOVLW  0x01
  MOVFF  WREG,RPOR18_19     ; map RC6 to UART1_TX
  MOVLW  0x04
  MOVFF  WREG,RPINR0_1      ; map RC7 to UART1_RX

  • 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 implementation with XC8 compiler (below 2.0) and (2.0 or above)
// below 2.0 implementation
void interrupt AnyISR(void)
  if(INT0IF == 1)
// 2.0 or above implementation
void __interrupt(high_priority) AnyISR(void)
  if(INT0IF == 1)
  • Remove warning conversion in compiler 2.0 or above
In the XC8 Compiler "Additional options", insert the line below
-Xparser -Wno-conversion

Bugs, issues, questions and comments

Feel free to contact the PICEBS3 team if you encounter a problem. Do not forget to have a look at the Tips & tricks section.

Personal tools