Hardware/PICEBS3/Welcome

(Difference between revisions)
Jump to: navigation, search
(Tips & tricks)
(Hardware)
(21 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 ;-) Just ask the laboratory responsible [[User:sap|Pascal Sartoretti]] (sap) for the procedure to follow.
+
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 [http://sin.begincoding.net ''Information systems''] given in second year.
+
* 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 37: Line 37:
  
 
[[Media:Schematic-18F97J94.pdf|CPU board 18F97J94]]
 
[[Media:Schematic-18F97J94.pdf|CPU board 18F97J94]]
 +
 +
[[Media:Schematic-18f97J60.pdf|CPU board 18F97J60]]
  
 
[[Media:mcp2518fd-2-click-schematic-v100.pdf|Mikrobus CAN MCP2518FD]]
 
[[Media:mcp2518fd-2-click-schematic-v100.pdf|Mikrobus CAN MCP2518FD]]
Line 46: Line 48:
 
  ||
 
  ||
 
  [[Media:18F97J94.pdf|CPU PIC18F97J94 datasheet]]  
 
  [[Media:18F97J94.pdf|CPU PIC18F97J94 datasheet]]  
 +
 +
[[Media:18F97j60.pdf|CPU PIC18F97J60 datasheet]]
  
 
  [[Media:SSD1963.pdf|LCD controller SSD1963 datasheet]]  
 
  [[Media:SSD1963.pdf|LCD controller SSD1963 datasheet]]  
Line 61: Line 65:
 
* CPU PIC18F97J94
 
* CPU PIC18F97J94
 
** High range PIC18 family with 128kB Flash & 4kB RAM, Lite PPS
 
** High range PIC18 family with 128kB Flash & 4kB RAM, Lite PPS
 +
** XLP technology (deep sleep @ 80nA)
 
** 12 bits ADC
 
** 12 bits ADC
 
** 9 timers
 
** 9 timers
 +
** RTC
 
** 4 UART, 2 SPI, 2 I2C
 
** 4 UART, 2 SPI, 2 I2C
** USB
+
** 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)
 
* Onboard SNAP debugger (not on EasyPicPro v8 standard)
** Compatible with MPLABX (uage of USB-A cable is mandatory)
+
** Compatible with MPLABX IDE (usage of USB-A cable is mandatory)
 
* I/O ports
 
* I/O ports
 
** 10 ports with optional led
 
** 10 ports with optional led
 
** each of them with a button (pull-up or pull-down selectable)
 
** each of them with a button (pull-up or pull-down selectable)
** Capacitive multi points touch screen
+
* Displays (only one usable at the same time)
* LCD Display
+
** LCD Display
** 800x480
+
*** 800x480
** Backlight
+
*** Capacitive multi points touch screen
** 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 (throuth USB FTDI)
 
** RS232 (throuth USB FTDI)
** USB interface (device, low or full speed)
+
** USB interface (device, low or full speed with PIC18F97J94 only)
** Ethernet interface(not with the CPU module PIC18F97J94)
+
** Ethernet interface(available only with PIC18F97J60)
  
 
* Development
 
* Development
Line 96: Line 112:
  
 
* Source files for assembler laboratories
 
* Source files for assembler laboratories
** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/configuration-picebs3/blob/master/conf_bits.inc Configuration bits for PICEBS3 in assembler]
+
** [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@gitlab.hevs.ch/course/picebs3/configuration-picebs3/blob/master/conf_bits.c Configuration bits for PICEBS3 in C]
+
** [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@gitlab.hevs.ch/course/picebs3/can-library CAN librarie files]
 
** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/can-library CAN librarie files]
 
** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/lcd-library LCD librarie files]
 
** [https://hevslabs:hevslabs@gitlab.hevs.ch/course/picebs3/lcd-library LCD librarie files]
Line 115: Line 131:
 
<pre>
 
<pre>
 
#include <xc.inc>   
 
#include <xc.inc>   
 +
#include "conf_bits.inc"
 +
PSECT main,class=CODE
 
main:     
 
main:     
 
  movlw    0x00        ; move literal value 0x00 to W
 
  movlw    0x00        ; move literal value 0x00 to W
Line 120: Line 138:
 
movlb 0x01     ; select bank
 
movlb 0x01     ; select bank
 
  movwf    0x125,b    ; move W to memory position 0x125 (banked)  
 
  movwf    0x125,b    ; move W to memory position 0x125 (banked)  
loop:
+
  goto $              ; stay here
  goto loop
+
 
     end main
 
     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 130: Line 160:
 
   ...
 
   ...
 
</pre>
 
</pre>
* Interrupt implementation with XC8 compiler 2.0 or above
+
* 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)
 
void __interrupt(high_priority) AnyISR(void)
 
{
 
{
Line 139: Line 178:
 
   }
 
   }
 
}
 
}
 +
</pre>
 +
* Remove warning conversion in compiler 2.0 or above
 +
<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 |PICEBS3 team]] if you encounter a problem. Do not forget to have a look at the [[#Tips & tricks| Tips & tricks]] section.
 
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.

Revision as of 10:30, 30 September 2022

Contents

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.

PICEBS3.jpg

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
PICEBS3.jpg PICEBS 3 Box

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)

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)

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.

Personal tools
Namespaces
Variants
Actions
Navigation
Browse
Toolbox