Presentation is loading. Please wait.

Presentation is loading. Please wait.

UBC104 Embedded Systems Review: Introduction to Microcontrollers.

Similar presentations


Presentation on theme: "UBC104 Embedded Systems Review: Introduction to Microcontrollers."— Presentation transcript:

1 UBC104 Embedded Systems Review: Introduction to Microcontrollers

2 UBC 104 Embedded Systems 2 Processors General purpose processors:  80386  Pentium  Core Duo Large number of pins External memory External peripherals * Figure from Intel 386 DX Datasheet

3 UBC 104 Embedded Systems 3 General Purpose Registers Registers are dedicated for moving data  EAX, EBX, ECX, EDX: general purpose registers  EBP: Base pointer  ESP: Stack pointer  ESI, EDI: Index register

4 UBC 104 Embedded Systems 4 Microcontrollers Support for peripherals inside uController Limited number of pins Dedicated purpose  Controlling devices, taking measurements Controller families:  68H12: Motorola 68H11, 68HC12, …  8051: Intel 8051, 8052, 80251,…  PIC: Microchip PIC16F628, 18F452, 16F877, …  AVR: Atmel ATmega128, ATtiny28L, AT90S8515,…

5 UBC 104 Embedded Systems 5 Rita51J 8051 128K of SRAM 128K FLASH ROM Serial port Digital I/O lines * Figure from www.rigelcorp.com

6 UBC 104 Embedded Systems 6 Motes Sensor nodes based on Atmel ATMega128 * Figures from CrossbowMPR-MIBUser Manual

7 UBC 104 Embedded Systems 7 Microcontroller Families 68H12: Motorola 68H11, 68HC12, … 8051: Intel 8051, 8052, 80251,… PIC: Microchip PIC16F628, 18F452, 16F877, … AVR: Atmel ATmega128, ATtiny28L, AT90S8515,…  We are going to look at 8051s

8 UBC 104 Embedded Systems 8 Typical 8051s 32 input / output lines. Internal data (RAM) memory - 256 bytes. Up to 64 kbytes of ROM memory (usually flash) Three 16-bit timers / counters 9 interrupts (2 external) with two priority levels. Low-power Idle- and Power-down modes

9 UBC 104 Embedded Systems 9 Datasheets – Your New Friends! * Figure from Atmel AT89C51RD2 Datasheet

10 UBC 104 Embedded Systems 10 Pin-Out of an 8051

11 UBC 104 Embedded Systems 11 8051 Components Ports RAM Interrupt Controller Timer SPI Controller * Figure from Atmel AT89C51RD2 Datasheet

12 UBC 104 Embedded Systems 12 8051 Internal RAM & SFRs * Figure from Atmel AT89C51RD2 Datasheet

13 UBC 104 Embedded Systems 13 Special Function Registers (SFR) * Figure from Atmel AT89C51RD2 Datasheet

14 UBC 104 Embedded Systems 14 Special Function Registers (SFR) * Figure from Atmel AT89C51RD2 Datasheet

15 UBC 104 Embedded Systems 15 * Figure from Atmel AT89C51RD2 Datasheet

16 UBC 104 Embedded Systems 16 Ports Driving low-power peripherals ie. LEDs, relays

17 UBC 104 Embedded Systems 17 Accessing Ports in C void main (void) { unsigned int i; /* Delay var */ unsigned char j; /* LED var */ while (1) { /* Loop forever */ for (j=0x01; j< 0x80; j<<=1) { /* Blink LED 0, 1, 2, 3, 4, 5, 6 */ P1 = j; /* Output to LED Port */ for (i = 0; i < 10000; i++) { /* Delay for 10000 Counts */ wait (); /* call wait function */ } for (j=0x80; j> 0x01; j>>=1) { /* Blink LED 6, 5, 4, 3, 2, 1 */ P1 = j; /* Output to LED Port */ for (i = 0; i < 10000; i++) { /* Delay for 10000 Counts */ wait (); /* call wait function */ }

18 UBC 104 Embedded Systems 18 Summary General information about 8051 Special Function Registers (SFRs)  Control of functionality of uController Ports  Input/Output of uController

19 UBC104 Embedded Systems Motivation for Next Topics

20 UBC 104 Embedded Systems 20 Tasks for Microcontroller Controlling of processes (autonomic)  e.g. speed of vehicles, chemical processes Control of devices through human operator  e.g. remote control, etc

21 UBC 104 Embedded Systems 21 Example: Controller Engineering

22 UBC 104 Embedded Systems 22 Topics for the Following Lectures Interrupts & Timers Communication Analog to digital (A/D) conversation Pulse Width Modulation

23 UBC104 Embedded Systems Interrupts & Timers

24 UBC 104 Embedded Systems 24 Today’s Topics Interrupts Timers

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

26 UBC 104 Embedded Systems 26 Interrupts Program time t

27 UBC 104 Embedded Systems 27 Interrupts Interrupt Program time t

28 UBC 104 Embedded Systems 28 Interrupts Program Interrupt Service Routine Interrupt Program time t

29 UBC 104 Embedded Systems 29 Interrupt Handling Code that deals with interrupts: Interrupt Handler or Interrupt Service Routines (ISRs) Address space in code space

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

31 UBC 104 Embedded Systems 31 Interrupts Interrupt Program time t mov R1, centmul R1, 9div R1, 5add R1, 32mov fahr, R1 fahr= (cent * ) +32 9 5

32 UBC 104 Embedded Systems 32 Interrupts Program Interrupt Service Routine Interrupt Program time t mov R1, cent mul R1, 9 mov R1, 0x90mov sensor, R1ret

33 UBC 104 Embedded Systems 33 Interrupts Program Save Context Interrupt Service Routine Restore Context Interrupt Program time t mov R1, cent mul R1, 9

34 UBC 104 Embedded Systems 34 Interrupts Program Save Context Interrupt Service Routine Restore Context Interrupt Program time t mov R1, cent mul R1, 9 eg push R1 eg pop R1

35 UBC 104 Embedded Systems 35 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

36 UBC 104 Embedded Systems 36 Interrupt Response Time Interrupt Latency Interrupt Response Time= Interrupt Latency + Time in Interrupt Routine

37 UBC 104 Embedded Systems 37 Interrupts Internal or External Handling can be enabled/disabled Prioritized General 8051:  3x timer interrupts,  2x external interrupts  1x serial port interrupt

38 UBC 104 Embedded Systems 38 Interrupt Priorities Each interrupt source has an inherent priority associated with it

39 UBC 104 Embedded Systems 39 Interrupt Priorities Priorities can be adapted by programs Original 8051 provides 1- bit per interrupt to set the priority

40 UBC 104 Embedded Systems 40 2-bit Interrupt Priorities The 89C52RD2 provides 2bit-interrupt priorities

41 UBC 104 Embedded Systems 41 2-bit Interrupt Priorities (continued)

42 UBC 104 Embedded Systems 42 2-bit Interrupt Priorities (continued)

43 UBC 104 Embedded Systems 43 External Interrupts Pins for external interrupts

44 UBC 104 Embedded Systems 44 External Interrupts External Interrupts: Level- or edge-triggered

45 UBC 104 Embedded Systems 45 External Interrupts External Interrupts: Level- or edge-triggered threshold Level-triggered trigger point t

46 UBC 104 Embedded Systems 46 External Interrupts External Interrupts: Level- or edge-triggered threshold Level-triggered Edge-triggered trigger point t t

47 UBC 104 Embedded Systems 47 Timer A timer is a counter that is increased with every time an instruction is executed e.g. 8051 with 12MHz increases a counter every 1.000 µs General 8051 has 3 timer:  2 16-bit timer  1 16-bit timer with extra- functionality (introduced with the 8052) Timer/Counter Mode Control Register TMOD Timer/Counter Control Register TCON

48 UBC 104 Embedded Systems 48 Timer High- & Low-Registers

49 UBC 104 Embedded Systems 49 SFR Map – Timer Registers

50 UBC 104 Embedded Systems 50 Timer Control Timer/Counter Mode Control Register TMOD Timer/Counter Control Register TCON

51 UBC 104 Embedded Systems 51 SFR Map – Timer Control

52 UBC 104 Embedded Systems 52 SFR Map – Timer 2

53 UBC 104 Embedded Systems 53 Timer Code void TimerInit(void) { // Timer 2 is configured as a 16-bit timer, // which is automatically reloaded when it overflows // This code (generic 8051/52) assumes a 12 MHz system osc. // The Timer 2 resolution is then 1.000 µs // Reload value is FC18 (hex) = 64536 (decimal) // Timer (16-bit) overflows when it reaches 65536 (decimal) // Thus, with these setting, timer will overflow every 1 ms 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 }

54 UBC 104 Embedded Systems 54 Interrupt Code for Timer 2 void handleTimer2 (void) interrupt 5 { /* execute interrupt code */ }

55 UBC 104 Embedded Systems 55 Interrupt Flags Bits that are set if the interrupt occurs

56 UBC 104 Embedded Systems 56 Code for Interrupt Flags /* Configure Timer 0 as a 16-bit timer */ TMOD &= 0xF0; /* Clear all T0 bits (T1 left unchanged) */ TMOD |= 0x01; /* Set required T0 bits (T1 left unchanged) */ ET0 = 0; /* No interrupts */ /* Values for 50 ms delay */ TH0 = 0x3C; /* Timer 0 initial value (High Byte) */ TL0 = 0xB0; /* Timer 0 initial value (Low Byte) */ TF0 = 0; /* Clear overflow flag */ TR0 = 1; /* Start Timer 0 */ while (TF0 == 0); /* Loop until Timer 0 overflows (TF0 == 1) */ TR0 = 0; /* Stop Timer 0 */

57 UBC 104 Embedded Systems 57 Summary: Interrupts Definition of ‘Interrupt’: Event that disrupts the normal execution of a program and causes the execution of special instructions Handling can be enabled/disabled Prioritized Internal or External External Interrupts:  Level-triggered  Edge-triggered 8051: 3 timer interrupts, 2 external interrupts & a serial port interrupt threshold Level-triggered Edge-triggered trigger point t t

58 UBC 104 Embedded Systems 58 Real-Time Systems Definition: A real-time system needs to be predictable in terms of values and time Correctness of an RT system depends on functionality as well as temporal behaviour

59 UBC 104 Embedded Systems 59 Clock Driven Scheduling Decision on what job execute are made at specific time instants chosen a priori before the system starts operation A schedule of jobs is created off-line and used at run time The scheduler dispatches jobs according to the stored schedule at each scheduling decision time Clock-driven scheduling has minimal overhead during run time

60 UBC 104 Embedded Systems 60 Cyclic Executive #define TASK_MAX 4 typedef void (func_ref)(void); int delay[TASK_MAX]; func_ref task_ref[TASK_MAX]; void cyclic_executive() { int task= 0; while(1) { settimer(delay[task]); taskref[task](); task= (task==TASK_MAX) ? task+1 : 0; clear(time_flag); while (time_flag) enterIdleMode(); }

61 UBC 104 Embedded Systems 61 Cyclic Executive (continued) void timer(void) interrupt 5 { set(time_flag); } void EnterIdleMode(void) { PCON |= 0x01; } T1T1 T2T2 T delay,1 T3T3 T1T1 T2T2 T3T3 IdleMode t Frame

62 UBC 104 Embedded Systems 62 Problems with Cyclic Executives Timing Accuracy Actually constructing the cyclic executive (Typical realistic problem: 40 minor cycles and 400 entries) Inflexibility  must reconstruct schedule even for minor changes Incorporating Aperiodic/Sporadic Tasks, or very long period tasks I/O only by polling

63 UBC 104 Embedded Systems 63 General Embedded Programming Endless loops Idle mode for 8051 Generic main() function

64 UBC 104 Embedded Systems 64 Endless Loops Two types of tasks:  Run-To-Completion tasks  Endless-Loop tasks

65 UBC 104 Embedded Systems 65 Endless Loops Two types of tasks:  Run-To-Completion tasks  Endless-Loop tasks Interrupt handler are run-to-completion tasks The majority of generic tasks are endless loops

66 UBC 104 Embedded Systems 66 Endless Loops Two types of tasks:  Run-To-Completion tasks  Endless-Loop tasks Interrupt handler are run-to-completion tasks The majority of generic tasks are endless loops Example Code: void ExampleTask(void) { while(1) { waitForActivation; doTask; }

67 UBC 104 Embedded Systems 67 Idle Mode 8051s implement an “idle” mode which consumes less power

68 UBC 104 Embedded Systems 68 Idle Mode 8051s implement an “idle” mode which consumes less power

69 UBC 104 Embedded Systems 69 Idle Mode 8051s implement an “idle” mode which consumes less power from Pont: Atmel 89S53  normal mode11mA  idle mode 2mA

70 UBC 104 Embedded Systems 70 Idle Mode 8051s implement an “idle” mode which consumes less power from Pont: Atmel 89S53  normal mode11mA  idle mode 2mA Example Code: void EnterIdleMode(void) { PCON |= 0x01; }

71 UBC 104 Embedded Systems 71 Generic main() Function void main(void) { /* initialize system */ /* initialize tasks */ while (1) { /* loop forever */ EnterIdleMode(); /* PCON |= 0x01*/ }

72 UBC 104 Embedded Systems 72 Summary Cyclic executives Endless loops Idle mode


Download ppt "UBC104 Embedded Systems Review: Introduction to Microcontrollers."

Similar presentations


Ads by Google