Hardware/PICEBS3/Welcome
(→Hardware) |
(→Hardware) |
||
(45 intermediate revisions by one user not shown) | |||
Line 9: | Line 9: | ||
The Mikroe board has been just modified for our laboratories usage. | 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 | + | 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 [[User:sap|Pascal Sartoretti]] (sap) for the procedure to follow. |
[[File:PICEBS3.jpg|400px|center]] | [[File:PICEBS3.jpg|400px|center]] | ||
We, [[Hardware/PICEBS/2/Team |the PICEBS3 team]], provide a comprehensive solution for | We, [[Hardware/PICEBS/2/Team |the PICEBS3 team]], provide a comprehensive solution for | ||
− | * Practical work for [http://hevs.ch HEI] course | + | * Practical work for [http://hevs.ch HEI] course Information System given in second year. |
* All kind of project featuring a small-sized micro-controller. | * All kind of project featuring a small-sized micro-controller. | ||
Line 28: | Line 28: | ||
=== Hardware === | === Hardware === | ||
− | |||
− | + | {|class=wikitable | |
+ | |- | ||
+ | ! Photo || Schematic || Datasheets | ||
+ | |- | ||
+ | | [[File:PICEBS3.jpg|200px]] [[File:picbox.jpg|200px|PICEBS 3 Box]]|| | ||
+ | [[Media:easypic-PRO-v8-schematic.pdf|PICEBS 3 - EasyPICPro v8 schematic]] | ||
− | * CPU | + | [[Media:Schematic-18F97J94.pdf|CPU board 18F97J94]] |
− | ** High range PIC18 family with 128kB Flash & 4kB RAM | + | |
− | ** | + | [[Media:Schematic-18f97J60.pdf|CPU board 18F97J60]] |
+ | |||
+ | [[Media:mcp2518fd-2-click-schematic-v100.pdf|Mikrobus CAN MCP2518FD]] | ||
+ | |||
+ | [[Media:tft-board-capacitive-5-schematic-v108.pdf|LCD capacitive 800x480]] | ||
+ | |||
+ | [[Media:lcd-2x16-datasheet.pdf|LCD 2x16 chars]] | ||
+ | |||
+ | || | ||
+ | [[Media:18F97J94.pdf|CPU PIC18F97J94 datasheet]] | ||
+ | |||
+ | [[Media:18F97j60.pdf|CPU PIC18F97J60 datasheet]] | ||
+ | |||
+ | [[Media:SSD1963.pdf|LCD controller SSD1963 datasheet]] | ||
+ | |||
+ | [[Media:MCP2518FD.pdf|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 | ** 12 bits ADC | ||
− | ** | + | ** 9 timers |
− | ** UART, SPI, I2C | + | ** RTC |
+ | ** 4 UART, 2 SPI, 2 I2C | ||
+ | ** USB device (Low and Full Speed) | ||
+ | ** ... | ||
+ | * CPU PIC18F97J60 (Microchip MCC compatible, green dot on the CPU board) | ||
+ | ** High range PIC18 family with 128kB Flash & 8kB RAM | ||
+ | ** Local onboard oscillator @ 25MHz | ||
+ | ** 10 bits ADC | ||
+ | ** 5 timers | ||
+ | ** RTC | ||
+ | ** 2 UART, 2 MSSP (SPI or I2C) | ||
+ | ** Ethernet module | ||
** ... | ** ... | ||
− | * Onboard | + | * Onboard SNAP debugger (not on EasyPicPro v8 standard) |
− | ** Compatible with MPLABX | + | ** Compatible with MPLABX IDE (usage of USB-A cable is mandatory) |
− | ** | + | * I/O ports |
− | * LCD Display | + | ** 10 ports with optional led |
− | ** | + | ** each of them with a button (pull-up or pull-down selectable) |
− | ** Backlight | + | * Displays (only one usable at the same time) |
− | ** | + | ** LCD Display |
+ | *** 800x480 | ||
+ | *** Capacitive multi points touch screen | ||
+ | *** Backlight | ||
+ | ** 2x16 char display | ||
+ | *** Backlight | ||
* Networking and communication | * Networking and communication | ||
− | ** CAN bus | + | ** CAN bus (with external mikroBUS click board) |
− | ** RS232 | + | ** RS232 (throuth USB FTDI) |
− | ** | + | ** USB interface (device, low or full speed with PIC18F97J94 only) |
− | ** | + | ** Ethernet interface(available only with PIC18F97J60) |
+ | |||
* Development | * Development | ||
− | ** | + | ** Almost all CPU pins are available on connectors |
− | ** | + | ** CPU current measure available on a 1 ohm resistor (not on EasyPicPro v8 standard) |
=== Software === | === Software === | ||
+ | Use MPLABX-IDE ([https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide download]) development system. | ||
+ | |||
+ | Use XC8 compiler ([https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-xc-compilers#tabs 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 assembler laboratories | ||
− | ** [https://hevslabs:hevslabs@ | + | ** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/configuration-picebs3/blob/master/conf_bits.inc Configuration bits for PICEBS3 18F97J94 in assembler] |
* Source files for C laboratories | * Source files for C laboratories | ||
− | ** [https://hevslabs:hevslabs@ | + | ** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/configuration-picebs3/blob/master/conf_bits.c Configuration bits for PICEBS3 18F97J94 in C] |
− | ** [https://hevslabs:hevslabs@ | + | ** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/can-library CAN librarie files] |
− | ** [https://hevslabs:hevslabs@ | + | ** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/lcd-library LCD librarie files] |
− | + | ||
* Tools | * Tools | ||
** [https://hevslabs:hevslabs@repos.hevs.ch/svn/picebs2-labs/trunk/incbin.exe incbin.exe -> Transform any file in a 'C' table of characters (for bitmaps, ...)] | ** [https://hevslabs:hevslabs@repos.hevs.ch/svn/picebs2-labs/trunk/incbin.exe incbin.exe -> Transform any file in a 'C' table of characters (for bitmaps, ...)] | ||
Line 72: | Line 126: | ||
<pre> | <pre> | ||
// to work at maximum CPU speed (64MHz) insert following code at start. | // to work at maximum CPU speed (64MHz) insert following code at start. | ||
− | + | OSCCON3 = 0; // for 64MHz cpu clock (default is 32MHz) | |
− | + | ||
− | + | ||
− | + | ||
... | ... | ||
+ | </pre> | ||
+ | * Assembler example | ||
+ | <pre> | ||
+ | #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 | ||
+ | </pre> | ||
+ | * Configure PPS lite UART1 to FTDI PICEBS3 USB interface | ||
+ | <pre> | ||
+ | // 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 | ||
+ | |||
</pre> | </pre> | ||
* Change one bit on a port | * Change one bit on a port | ||
Line 84: | Line 161: | ||
... | ... | ||
</pre> | </pre> | ||
− | * Interrupt | + | * Interrupt implementation with XC8 compiler (below 2.0) and (2.0 or above) |
<pre> | <pre> | ||
− | // | + | // 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) | |
− | + | { | |
− | + | ... | |
− | + | } | |
− | + | } | |
</pre> | </pre> | ||
− | * | + | * Remove warning conversion in compiler 2.0 or above |
<pre> | <pre> | ||
− | + | In the XC8 Compiler "Additional options", insert the line below | |
− | + | -Xparser -Wno-conversion | |
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
== Bugs, issues, questions and comments == | == Bugs, issues, questions and comments == | ||
− | Feel free to contact the [[Hardware/PICEBS/2/Team | | + | Feel free to contact the [[Hardware/PICEBS/2/Team |PICEBS3 team]] if you encounter a problem. Do not forget to have a look at the [[#Tips & tricks| Tips & tricks]] section. |
Latest revision as of 14:01, 7 February 2023
|
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.
Hardware
Photo | Schematic | Datasheets |
---|---|---|
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 PIC18F97J60 (Microchip MCC compatible, green dot on the CPU board)
- High range PIC18 family with 128kB Flash & 8kB RAM
- Local onboard oscillator @ 25MHz
- 10 bits ADC
- 5 timers
- RTC
- 2 UART, 2 MSSP (SPI or I2C)
- Ethernet module
- ...
- 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
- LCD Display
- 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)
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) 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.