saxion university of applied sciences advanced microcontrollers a practical approach lesson 2 serial...
TRANSCRIPT
![Page 1: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/1.jpg)
Saxion University of Applied Sciences
Advanced MicrocontrollersA practical approach
lesson 2 serial communication
![Page 2: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/2.jpg)
Microcontroller programming
2
Topics Some about architecture Serial communication
MicrocontrollersA practical approach
![Page 3: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/3.jpg)
Microcontroller programming
3
Morse code telegraphy RS-232 (low-speed, implemented by Serial Ports) RS485 Universal Serial Bus (moderate-speed, for
connecting computers to peripherals) FireWire Fibre Channel (high-speed, for connecting
computers to mass storage devices) InfiniBand (very high speed, broadly comparable in
scope to PCI) Serial Attached SCSI Serial ATA PCI Express CAN
Microcontrollers serial communicationA practical approach
![Page 4: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/4.jpg)
Microcontroller programming
4
Half duplex Full duplex 5,6,7,8 databits ASCII (0-127) Stop bit(s) Parity DCE (Data communication equipment) DTE(Data terminal Equipment (PC))
Microcontrollers serial communicationA practical approach
![Page 5: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/5.jpg)
Microcontroller programming
5
(PC))
RS232 connectorA practical approach 9 Pin Connector on a DTE device (PC connection)
Male RS232 DB9
Pin Number Direction of signal:
1 Carrier Detect (CD) (from DCE) Incoming signal from a modem
2 Received Data (RD) Incoming Data from a DCE
3 Transmitted Data (TD) Outgoing Data to a DCE
4 Data Terminal Ready (DTR) Outgoing handshaking signal
5 Signal Ground Common reference voltage
6 Data Set Ready (DSR) Incoming handshaking signal
7 Request To Send (RTS) Outgoing flow control signal
8 Clear To Send (CTS) Incoming flow control signal
9 Ring Indicator (RI) (from DCE) Incoming signal from a modem
![Page 6: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/6.jpg)
Microcontroller programming
6
RS232 voltagesA practical approach
Level Transmitter (V)
Receiver (V)
Space status (0) +5 ... +15 +3 ... +25
Mark status (1) -5 ... -15 -3 ... -25
Not defined - -3 .. -3 …+3 . +3
![Page 7: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/7.jpg)
Microcontroller programming
7
RS232 cablelenghtA practical approach
Baud rate Maximum cabellength(m)
19200 15
9600 150
4800 300
2400 900
![Page 8: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/8.jpg)
Microcontroller programming
8
Topics PIC family Architecture PIC18F2580 Interrupts Serial communication LCD Assembly A very little microcontroller
Serial communiactionA practical approach
![Page 9: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/9.jpg)
Microcontroller programming
9
PIC18 UARTpractical approach • Asynchronous
- Auto-wake-up
- Auto baud calibration
- 13-bit Break character
• Synchronous –
selectable clock
• Synchronous –
clock polarity
![Page 10: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/10.jpg)
Microcontroller programming
10
Baud ratepractical approach
![Page 11: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/11.jpg)
Microcontroller programming
11
PIC18F2580 pinout
![Page 12: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/12.jpg)
Microcontroller programming
12
Programming
Header Functions
Initialisation…
Main program1. Initialisation (function call)2. Program with function calls in
infinite loop
![Page 13: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/13.jpg)
Microcontroller programming
13
/*********************** pic18f2580 **********************************\| Testprogram_1 MPlab C18-compiler || 11 sept 2012/21 juli 2013 J.S.D. Stokkink |+-----------------------------------------------------------------------------------+| Gebruit van INT0 , TIMER0 , UART , High-iterrupt priority |+-----------------------------------------------------------------------------------+| WERKING: || RB0 via schakelaar naar GND geeft INT0 interrupt text to ser|| ial port TX pin || TIMER0 is ingesteld op ca 1sec || De Xtal frequentie is 20MHz || After InitUART() ,putc(c,stdout) and puts("string") || De op RB2 aangesloten LED zal knipperen met ca 1Hz |\**************************************************************************/
Program header
![Page 14: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/14.jpg)
Microcontroller programming
14
Main Program send serial#include <p18F2580.h>#include <stdio.h> // t.b.v. puts() en putc() functies#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// Function-declarations:void InterruptHandlerHigh(void);void InitINT0(void);void InitUART(void);void InitTimer0(void);void EnableHighInterrupts(void);
// Globale variabelen:char ch = '0'; //start with character '0'#pragma codevoid main (void){ TRISC=0; //led's output tx output
InitINT0();InitUART();InitTimer0();EnableHighInterrupts();
// run forever: while(1) { //do nothing}}
![Page 15: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/15.jpg)
Microcontroller programming
15
Iniatalisation RB0#pragma codevoid InitINT0(void){
PORTB = 0; // clear PORT B TRISB = 0x01; // RB0=input; RB1-7: output INTCON2bits.RBPU=0; // pull-ups portB enabled
INTCON2bits.INTEDG0 =1; // interrupt on rising edgeINTCONbits.PEIE = 1; // enable high priority interruptINTCONbits.INT0IE = 1; // enable INT0
}
![Page 16: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/16.jpg)
Microcontroller programming
16
Initialisation UARTvoid InitUART(void){
// setup UART:SPBRGH=0; SPBRG=31; // interne clock Fosc=20MHz ->9600
// Baud p error 0,16%TXSTAbits.SYNC = 0; // Enable asynchronous serial portRCSTAbits.SPEN = 1; // Enable asynchronous serial portTXSTAbits.TXEN = 1; // Enable transmission; alsputs("\rUART initialised\r"); // To Pc OR BLUETOOTH
}
For initialisation timer see lesson 1
![Page 17: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/17.jpg)
Microcontroller programming
17
Initialisation interruptvoid 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}
![Page 18: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/18.jpg)
Microcontroller programming
18
Interrupt Service Routine#pragma interrupt InterruptHandlerHighvoid InterruptHandlerHigh(void){
if(INTCONbits.TMR0IF) // check for TMR0 overflow{
INTCONbits.TMR0IF = 0; // clear interrupt flagTMR0H = 72; // reload timerTMR0L = 229; // reload timerPORTCbits.RC2 = !PORTCbits.RC2; // toggle LED on RC2PORTBbits.RB3 = !PORTBbits.RB3; // toggle LED on RC2
ch++; //next character (see ASCII table)putc(ch,stdout); // ASCII-karakter naar PC}if(INTCONbits.INT0IF) // check for INT0 flag {INTCONbits.INT0IF =0; // clear interrupt INT0 (RB0) flag puts("\n"); puts("\rRB0 pressed\r"); // to PC}
}
![Page 19: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/19.jpg)
Microcontroller programming
19
Extra part ISR for recieve if (PIR1bits.RCIF == 1) //check for recieve interrupt { TXSTAbits.TXEN=0; // transmitter off if (RCREG=='a') {PORTCbits.RC0=1; puts(" end \r ");} //LED on if (RCREG=='b') PORTCbits.RC0=0; //read receiverif character = ‘b' LED of TXSTAbits.TXEN=1; // transmitter on PIR1bits.RCIF=0; // interrupt flag off }
![Page 20: Saxion University of Applied Sciences Advanced Microcontrollers A practical approach lesson 2 serial communication](https://reader035.vdocuments.net/reader035/viewer/2022062404/551a71db550346545e8b6120/html5/thumbnails/20.jpg)
Microcontroller programming
20
Assignments lesson 2
1. Make the send serial example working : a. check the output on a scoop. (explain) RS232 output and 5v output b.Checkthe output on a terminal(via USB
or Bluetooth) (install terminal program on your
phone(BT) or PC 2. Make the recieving program working:3. Connect two boards let them
communicate