Hardware/PICEBS3/Welcome
(→Tips & tricks) |
(→Tips & tricks) |
||
Line 132: | Line 132: | ||
RPINR0_1bits.U1RXR = 4; // map RC7 to TX FTDI (input of CPU) UART2_RX | RPINR0_1bits.U1RXR = 4; // map RC7 to TX FTDI (input of CPU) UART2_RX | ||
− | // code in assembler | + | // code in assembler (movff because banked) |
− | + | ||
MOVLW 0x01 | MOVLW 0x01 | ||
− | + | MOVFF WREG,RPOR18_19,b | |
MOVLW 0x04 | MOVLW 0x04 | ||
− | MOVWF RPINR0_1,b | + | MOVWF WREG,RPINR0_1,b |
</pre> | </pre> |
Revision as of 17:10, 17 March 2021
|
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 systems 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.
Hardware
Photo | Schematic | Datasheets |
---|---|---|
CPU PIC18F97J94 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
- 12 bits ADC
- 9 timers
- RTC
- 4 UART, 2 SPI, 2 I2C
- USB device
- ...
- 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)
- Capacitive multi points touch screen
- LCD Display
- 800x480
- Backlight
- Capacitive multi points touch screen
- Networking and communication
- CAN bus
- RS232 (throuth USB FTDI)
- USB interface (device, low or full speed)
- Ethernet interface(not with the CPU module PIC18F97J94)
- Development
- Almost all CPU pins are available on connectors
- CPU current measure available on a 1 ohm resistor (not on EasyPicPro v8 standard)
Software
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)
- Source files for assembler laboratories
- Source files for C laboratories
- Tools
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 main: 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) UART2_RX // code in assembler (movff because banked) MOVLW 0x01 MOVFF WREG,RPOR18_19,b MOVLW 0x04 MOVWF WREG,RPINR0_1,b
- 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) { ... } }
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.