![Page 1: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/1.jpg)
Saxion University of Applied Sciences
Advanced MicrocontrollersA practical approach
![Page 2: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/2.jpg)
Microcontroller programming
2
Goals Responsibilities
Topics
MicrocontrollersA practical approach
![Page 3: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/3.jpg)
Microcontroller programming
3
Goals Some more advanced
knowledge of microcontrollers
Reading and using data-sheets
Building, programming and documenting a little microcontroller system.
![Page 4: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/4.jpg)
Microcontroller programming
4
Responsibilities
The student is responsible for the hard-en software, there are more groups who must use it
Defects must be reported immediately
![Page 5: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/5.jpg)
Microcontroller programming
5
Topics PIC family Architecture PIC18F2580 Interrupts Serial communication LCD Assembly A very little microcontroller
MicrocontrollersA practical approach
![Page 6: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/6.jpg)
Microcontroller programming
6
Topics PIC family Architecture PIC18F2580 Interrupts Serial communication LCD Assembly A very little microcontroller
MicrocontrollersA practical approach
![Page 7: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/7.jpg)
Microcontroller programming
7
PIC18F2580 Device
![Page 8: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/8.jpg)
Microcontroller programming
8
PIC18F2580 pinout
![Page 9: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/9.jpg)
Microcontroller programming
9
Block diagram
![Page 10: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/10.jpg)
Microcontroller programming
10
Programming
Header Functions
Initialisation…
Main program1. Initialisation (function call)2. Program with function calls in
infinite loop
![Page 11: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/11.jpg)
Microcontroller programming
11
// Project name// Author// Date of creation// Revision number
#include <p18f2580.h>
#define off 0#define on1
Program header
![Page 12: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/12.jpg)
Microcontroller programming
12
Initialisation function Digital pin configuration
void init(void) {PORTB = 0; // All OFFTRISA = 0b11111111; // All inputsTRISC = 0b11111111; // All inputsTRISB = 0b00111111; // RB6, RB7 output
}
![Page 13: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/13.jpg)
Microcontroller programming
13
Write Output function
void LED2(char in) {PORTBbits.RB6 = in; // LED2 = in
}
![Page 14: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/14.jpg)
Microcontroller programming
14
Main Program
void main(void) {init(); // initialisation
while(1) { // infinite loopif (PORTAbits.RA4 == 1) LED2(ON);else
LED2(OFF);}
}
![Page 15: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/15.jpg)
Microcontroller programming
15 21-04-23 15
Interruptssources • External Interrupt RA2/INT • TMR0 Overflow Interrupt • PORTA Change Interrupts • 2 Comparator Interrupts • A/D Interrupt • Timer1 Overflow Interrupt • Timer2 Match Interrupt • EEPROM Data Write Interrupt • Fail-Safe Clock Monitor Interrupt • Enhanced CCP Interrupt
![Page 16: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/16.jpg)
Microcontroller programming
16 21-04-23 16
Interrupts(chapter 10 datasheet)sources
![Page 17: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/17.jpg)
Microcontroller programming
17
Timer 0
• 8-bit/16-bit timer/counter
• Readable and writeable
• 3-bit software programmable prescaler (2-4-8-…-256)
• Internal or external clock select
• Edge select for external clock
• Interrupt on overflow from 0xFF to 0x00
![Page 18: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/18.jpg)
Microcontroller programming
18
Timer 0 T0CON
![Page 19: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/19.jpg)
Microcontroller programming
19
Timer 0 ( interrupt example)
/*********************** pic18f2580 **************************\| Testprogram_1 MPlab C18-compiler ||21 juli 2013 J.S.D. Stokkink |+----------------------------------------------------------------------+| USES: TIMER0 , High-interrupt priority | +---------------------------------------------------------------------+| || TIMER0 gives interrupt each 1sec (internal inerrupt)|| De Xtal frequentie is 20MHz | | after each interrupt 1 second a binairy increase on led |\*************************************************************/#include <p18F2580.h>#pragma config OSC = HS // HS oscillator 20 Mhz#pragma config WDT = OFF // Watchdog Timer disabled#pragma config LVP = OFF // Low Voltage ICSP disabled#pragma config PBADEN = OFF // PortB<4:0> configured as digital I/O
![Page 20: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/20.jpg)
Microcontroller programming
20
Timer 0 ( interrupt example (2))
// Function-declarations:void InterruptHandlerHigh(void); void InitTimer0(void);void EnableHighInterrupts(void);// Global variables:unsigned int count=0;
![Page 21: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/21.jpg)
Microcontroller programming
21
Timer 0 ( interrupt example (3))
#pragma codevoid main (void){ TRISC=0; //led's output PORTC=0; //led off InitTimer0(); EnableHighInterrupts(); // run forever: while(1) {
// do nothing wait on interrupt }}
![Page 22: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/22.jpg)
Microcontroller programming
22
Timer 0 ( interrupt example (4))#pragma codevoid InitTimer0(void){
// init timer 0:INTCONbits.GIE = 0; // disable global interruptINTCON2bits.TMR0IP = 1; // Timer 0 high priority interruptRCONbits.IPEN = 1; // enable priority levelsINTCONbits.PEIE = 1; // enable high priority interruptT0CONbits.T0CS = 0; // internal instuction cycle clock (CLKO)T0CONbits.PSA = 0; // prescaler is assignedT0CONbits.T0PS2 = 1; // prescale value bit 2T0CONbits.T0PS1 = 1; // prescale value bit 1T0CONbits.T0PS0 = 1; // prescale value bit 0 ==> 1:256T0CONbits.T08BIT = 0; // 16-bits timerTMR0H = 72; // set timerTMR0L = 229; // set timer ==> ca 1 secINTCONbits.TMR0IE = 1; // Timer 0 interrupt enabledT0CONbits.TMR0ON = 1; // enable Timer 0INTCONbits.GIE = 1; // enable global interrupt
}
![Page 23: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/23.jpg)
Microcontroller programming
23
Timer 0 ( interrupt example (5))#pragma codevoid EnableHighInterrupts(void){
RCONbits.IPEN = 1; // enable interrupt priority levelsINTCONbits.GIEH = 1; // enable all high priority iterrupts
} // High priority interrupt vextor:#pragma code high_vector = 0x08void high_interrupt(void){
_asm goto InterruptHandlerHigh _endasm}#pragma code#pragma interrupt InterruptHandlerHighvoid InterruptHandlerHigh(void){
if(INTCONbits.TMR0IF) // check for TMR0 overflow {
INTCONbits.TMR0IF = 0; // clear interrupt flagTMR0H = 72; // reload timerTMR0L = 229; // reload timerPORTC++; // increase value on led }
}
![Page 24: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach](https://reader031.vdocument.in/reader031/viewer/2022032612/5697bfab1a28abf838c9b275/html5/thumbnails/24.jpg)
Microcontroller programming
24
Assignments lesson 1
1. Make the example working2. Change the programm, let the
counting do every 2 seconds3. Reset the counting on the LED with a RB0 interrupt