Presentation is loading. Please wait.

Presentation is loading. Please wait.

UBC104 Embedded Systems Review: Interrupts & Timers.

Similar presentations


Presentation on theme: "UBC104 Embedded Systems Review: Interrupts & Timers."— Presentation transcript:

1 UBC104 Embedded Systems Review: Interrupts & Timers

2 UBC 104 Embedded Systems 2 Block Diagram

3 UBC 104 Embedded Systems 3 Interrupts Definition of ‘Interrupt’ Event that disrupts the normal execution of a program and causes the execution of special instructions

4 UBC 104 Embedded Systems 4 Interrupt Handling Code that deals with interrupts: Interrupt Handler or Interrupt Service Routines (ISRs) Possible code: void ISR(void) interrupt 1 { ++interruptcnt; } Interrupt number

5 UBC 104 Embedded Systems 5 Interrupt Overheads Interrupt arrives Complete current instruction Save essential register information Vector to ISR Save additional register information Execute body of ISR Restore other register information Return from interrupt and restore essential registers Resume task Interrupt Latency Interrupt Termination

6 UBC 104 Embedded Systems 6 SFR Map – Timer

7 UBC 104 Embedded Systems 7 Timer Code void TimerInit(void) { T2CON=0x04;// Load Timer 2 control register TH2=0xFC; // Load Timer 2 high byte RCAP2H=0xFC;// Load Timer 2 reload capt. reg. high byte TL2=0x18;// Load Timer 2 low byte RCAP2L=0x18;// Load Timer 2 reload capt. reg. low byte ET2 = 1; // Enable interrupt TR2 = 1;// Start Timer 2 running } void handleTimer2 (void) interrupt 5 { /* execute interrupt code */ } Initialization Start of Timer Interrupt Service Routine

8 UBC 104 Embedded Systems 8 Calculation of Register Settings Oscillator = 24 MHz Timer clock= (24 / 12) MHz = 2 MHz Timer cycle = = 500ns Delay count = delay time / cycle time 1 ms / 500 ns = 2000 Base number= = = 6192 = 0x MHz 1

9 UBC 104 Embedded Systems 9 Summary: Interrupts & Timers Interrupts: Event that disrupts the normal execution of a program and causes the execution of special instructions Interrupt Latency: Time from event to execution of service routine Interrupt Response Time: Interrupt latency + Time for service routine Interrupt Termination: Time taken after interrupt service routine Timer: Counter that causes interrupt at overflow

10 UBC104 Embedded Systems RS232 Communication

11 UBC 104 Embedded Systems 11 Overview Basics of serial communications RS232 details 8051-support for serial communication

12 UBC 104 Embedded Systems 12 SFR Map – UART Registers

13 UBC 104 Embedded Systems 13 UART Registers

14 UBC 104 Embedded Systems 14 Serial Interface Basics Also called Universal Asynchronus Receiver/ Transmitter (UART) or after the I standards:  RS232 (-C) or EIA232

15 UBC 104 Embedded Systems 15 Serial Interface Basics also called Universal Asynchronus Receiver/ Transmitter (UART) or the relevant standards:  RS232 (-C) or EIA232 2 Receive Data 3 Transmit Data 5 Signal Ground

16 UBC 104 Embedded Systems 16 Typical 3-wire Interface

17 UBC 104 Embedded Systems 17 uController Pin-Out

18 UBC 104 Embedded Systems 18 RS232 Signals Signals between +25V and -25V; some say ±15V usually +12V to -12V

19 UBC 104 Embedded Systems 19 RS232 Signals Signals between +25V and -25V; some say ±15V usually +12V to -12V Logic ‘1’ Logic ‘0’

20 UBC 104 Embedded Systems 20 RS232 Signals Signals between +25V and -25V; some say ±15V usually +12V to -12V

21 UBC 104 Embedded Systems 21 RS232 Signals Signals between +25V and -25V; some say ±15V usually +12V to -12V 8051 runs on 3V or 5V

22 UBC 104 Embedded Systems 22 RS232 Signals Signals between +25V and -25V; some say ±15V usually +12V to -12V 8051 runs on 3V or 5V Driver chip translates between voltages

23 UBC 104 Embedded Systems 23 Valid Signals

24 UBC 104 Embedded Systems 24 Valid Signals Figure courtesy of

25 UBC 104 Embedded Systems 25 MCBx51 Board TX0 RX0 2 3

26 UBC 104 Embedded Systems 26 Basic 3-Wire Connection of Machines TXD GND RXD

27 UBC 104 Embedded Systems 27 Basic 3-Wire Connection of Machines What goes over these wires? TXD GND RXD

28 UBC 104 Embedded Systems 28 RS-232 Frame Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit)

29 UBC 104 Embedded Systems 29 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit)

30 UBC 104 Embedded Systems 30 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

31 UBC 104 Embedded Systems 31 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop 1 1 Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

32 UBC 104 Embedded Systems 32 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

33 UBC 104 Embedded Systems 33 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

34 UBC 104 Embedded Systems 34 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

35 UBC 104 Embedded Systems 35 RS-232 Frame StartD0D1D2D3D4D5D6D7Stop Every RS-232 consists of:  1 start bit  8 data bits  1 stop bit  (optional 1 parity bit) ‘a’= 0x61 =

36 UBC 104 Embedded Systems 36 Signal Timing StartD0D1D2D3D4D5D6D7Stop ?

37 UBC 104 Embedded Systems 37 Signal Timing (continued) StartD0D1D2D3D4D5D6D7Stop ? bit period

38 UBC 104 Embedded Systems 38 Baud Rate Baud specifies the inverse of the bit-period e.g Baud = a bit-period of 1/9600 second = microseconds Typicall data rates: 75, 110, 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 33600, 56000, and (rarely) baud.

39 UBC 104 Embedded Systems 39 Serial I/O with bare hands #define BIT_PERIOD 1042 sendByte(unsigned char content) { unsigned char mask; mask= 1; P3.1= 0; // Start bit wait (BIT_PERIOD); for (i= 0; i<8; i++) {// Send content P3.1= (content&mask) ? 1 : 0; wait (BIT_PERIOD); mask<= 1; } P3.1= 0;// Stop bit wait (BIT_PERIOD); P3.1= 1; }

40 UBC 104 Embedded Systems 40 Serial I/O with bare hands #define BIT_PERIOD 1042 sendByte(unsigned char content) { unsigned char mask; mask= 1; P3.1= 0; // Start bit wait (BIT_PERIOD); for (i= 0; i<8; i++) {// Send content P3.1= (content&mask) ? 1 : 0; wait (BIT_PERIOD); mask<= 1; } P3.1= 0;// Stop bit wait (BIT_PERIOD); P3.1= 1; }

41 UBC 104 Embedded Systems 41 Serial I/O with bare hands #define BIT_PERIOD 1042 sendByte(unsigned char content) { unsigned char mask; mask= 1; P3.1= 0; // Start bit wait (BIT_PERIOD); for (i= 0; i<8; i++) {// Send content P3.1= (content&mask) ? 1 : 0; wait (BIT_PERIOD); mask<= 1; } P3.1= 0;// Stop bit wait (BIT_PERIOD); P3.1= 1; } You do not need to do this!!!

42 UBC 104 Embedded Systems 42 UART modes Mode 0: 8 data bits (LSB first) are transmitted/received at a fixed baud rate of 1/12 of the oscillator frequency. (synchronus mode)

43 UBC 104 Embedded Systems 43 UART modes Mode 0: 8 data bits (LSB first) are transmitted/received at a fixed baud rate of 1/12 of the oscillator frequency. (synchronus mode) Mode 1: 10 bits are transmitted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), and a stop bit (1) at a variable baud rate.

44 UBC 104 Embedded Systems 44 UART modes Mode 0: 8 data bits (LSB first) are transmitted/received at a fixed baud rate of 1/12 of the oscillator frequency. (synchronus mode) Mode 1: 10 bits are transmitted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), and a stop bit (1) at a variable baud rate. Mode 2: 11 bits are transmitted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmit, the 9th data bit (TB8 in SCON) can be assigned the value of 0 or 1 (for example, the parity bit (P, in the PSW) could be moved into TB8). On receive, the 9th data bit goes into RB8 in Special Function register SCON. The baud rate is programmable to either 1/32 or 1/64 the oscillator frequency. Mode 3: Mode 3 is the same as Mode 2 in all respects except the baud rate is variable.

45 UBC 104 Embedded Systems 45 UART modes Mode 0: 8 data bits (LSB first) are transmitted/received at a fixed baud rate of 1/12 of the oscillator frequency. (synchronus mode) Mode 1: 10 bits are transmitted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), and a stop bit (1) at a variable baud rate. Mode 2: 11 bits are transmitted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmit, the 9th data bit (TB8 in SCON) can be assigned the value of 0 or 1 (for example, the parity bit (P, in the PSW) could be moved into TB8). On receive, the 9th data bit goes into RB8 in Special Function register SCON. The baud rate is programmable to either 1/32 or 1/64 the oscillator frequency. Mode 3: Mode 3 is the same as Mode 2 in all respects except the baud rate is variable. Mode 0 Baud Rate = 12 Oscillator Frequency Mode 2 Baud Rate = 2 SMOD1 x 64 Oscillator Frequency Mode 1/3 Baud Rate = 2 SMOD1 x 32 Timer Overflow Rate

46 UBC 104 Embedded Systems 46 SMOD1 SMOD1: Double Baud rate SMOD0: Enables framing error detection

47 UBC 104 Embedded Systems 47 Framing Error Detection

48 UBC 104 Embedded Systems 48 Timer 1 Mode 1/3 Baud Rate = 2 SMOD1 x 32 Timer Overflow Rate Mode 1/3 Baud Rate = 12 x [256 – TH1] Oscillator Frequency 2 SMOD1 x 32 Baud Rate [256 – TH1] = Oscillator Frequency 2 SMOD1 x 3212 x Baud Rate TH1 = 256 – Oscillator Frequency 2 SMOD1 x 3212 x

49 UBC 104 Embedded Systems 49 Timer 1 Commonly Used BAUD Rates

50 UBC 104 Embedded Systems 50 SCON Documentation

51 UBC 104 Embedded Systems 51 SCON & SBUF SCON controls the functionality of the UART device:  SM0&SM1= Determine the mode  SM2= Multiprocessor Flag  REN= Receive Enable Flag  TB8/RB8= Transmit/Receive Parity Flag  TI/RI = Transmit/Receive Interrupt Flag SBUF is the transmit&receive buffer

52 UBC 104 Embedded Systems 52 SBUF SBUF is actually two separate registers: a transmit buffer and a receive buffer register:  When data is moved to SBUF, it goes to the transmit buffer where it is held for serial transmission; moving a byte to SBUF initiates the transmission.  When data is moved from SBUF, it comes from the receive buffer.

53 UBC 104 Embedded Systems 53 SBUF and TI/RI 8 data SBUF 8 TI Stop bit Start bit Send 8-bit data Transmitter Buffer is empty 10 bit parallel to serial conversion Serial data transmit TRANSMITTER HALF 8 data bits start bit stop bit Tx bit 8 data SBUF 8 RI Start bit Stop bit Receive 8-bit data Receive data is available 10 bit serial to parallel conversion Serial data receive RECEIVER HALF 8 data bits stopstart Rx

54 UBC 104 Embedded Systems 54 SBUF and Parity Bit in TB8/RB8

55 UBC 104 Embedded Systems 55 Timer 1 Example 1.Set T1 for Mode 2 2.Load TH1 with the initial value 3.Set SCON for Mode 1 4.Start Timer1 5.Clear TI 6.Load SBUF with the byte to be transferred 7.Wait until TI becomes 1 8.Go back to Step5 for next byte TCON= 0x20; TH1= 0xF5; SCON|= 0x50; TR1= 1; TI= 0; do { SBUF= byte[i]; while (!TI); } while(more_bytes);

56 UBC 104 Embedded Systems 56 Timer 1 Example (continued) 1.Set T1 for Mode 2 2.Load TH1 with the initial value 3.Set SCON for Mode 1 4.Start Timer1 5.Clear RI 6.Wait for byte to be received 7.Copy received byte out of SBUF 8.Return received byte TCON= 0x20; TH1= 0xF5; SCON|= 0x50; TR1= 1; RI= 0; while (!RI); result= SBUF; return SBUF;

57 UBC 104 Embedded Systems 57 Possible Configurations

58 UBC 104 Embedded Systems 58 T2CON Documentation

59 UBC 104 Embedded Systems 59 Timer 2 Commonly Used BAUD Rates

60 UBC 104 Embedded Systems 60 Timer 2 Calculation Mode 1/3 Baud Rate = 32 x [65536 – (RCAP2H, RCAP2L)] Oscillator Frequency Baud Rate (RCAP2H,RCAP2L) = – Oscillator Frequency 32 x

61 UBC 104 Embedded Systems 61 Timer2 Example 1.Set T1 for Mode 2 2.Load RCAP high/low with the initial value 3.Set SCON for Mode 1 4.Start Timer1 5.Clear TI 6.Load SBUF with the byte to be transferred 7.Wait until TI becomes 1 8.Go back to Step5 for next byte T2CON|= 0x30; RCAP2H = 0xFF; RCAP2L = 0xB2; SCON|= 0x50; TR2= 1; TI= 0; do { SBUF= byte[i]; while (!TI); } while(more_bytes);

62 UBC 104 Embedded Systems 62 Internal Baud-Rate Generator

63 UBC 104 Embedded Systems 63 BDRCON

64 UBC 104 Embedded Systems 64 Using BRL to Transmit 1.Set T1 for Mode 2 2.Load TH1 with the initial value 3.Set SCON for Mode 1 4.Start Timer1 5.Clear TI 6.Load SBUF with the byte to be transferred 7.Wait until TI becomes 1 8.Go back to Step5 for next byte BDRCON= 0x0E; BRL= 0xF5; SCON|= 0x50; BDRCON|= 0x10; TI= 0; do { SBUF= byte[i]; while (!TI); } while(more_bytes);


Download ppt "UBC104 Embedded Systems Review: Interrupts & Timers."

Similar presentations


Ads by Google