Presentation is loading. Please wait.

Presentation is loading. Please wait.

Embedded Systems Prepared By:

Similar presentations


Presentation on theme: "Embedded Systems Prepared By:"— Presentation transcript:

1 Embedded Systems Prepared By:- 130350111009 130350111005
Review: Introduction to Microcontrollers

2 Processors General purpose processors: Large number of pins
80386 Pentium Core Duo Large number of pins External memory External peripherals 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 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,… UBC 104 Embedded Systems

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

6 Motes Sensor nodes based on Atmel ATMega128 UBC 104 Embedded Systems
* Figures from CrossbowMPR-MIBUser Manual 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 UBC 104 Embedded Systems

8 Typical 8051s 32 input / output lines.
Internal data (RAM) memory 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 UBC 104 Embedded Systems

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

10 Pin-Out of an 8051 UBC 104 Embedded Systems

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

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

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

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

15 * Figure from Atmel AT89C51RD2 Datasheet
UBC 104 Embedded Systems

16 Ports Driving low-power peripherals ie. LEDs, relays
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 Counts */ wait (); /* call wait function */ } for (j=0x80; j> 0x01; j>>=1) { /* Blink LED 6, 5, 4, 3, 2, 1 */ UBC 104 Embedded Systems

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

19 Motivation for Next Topics
UBC104 Embedded Systems Motivation for Next Topics

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

21 Example: Controller Engineering
UBC 104 Embedded Systems

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

23 UBC104 Embedded Systems Interrupts & Timers

24 Today’s Topics Interrupts Timers UBC 104 Embedded Systems

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

26 Interrupts Program time t UBC 104 Embedded Systems

27 Interrupts Interrupt Program time t UBC 104 Embedded Systems

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

29 Interrupt Handling Address space in code space Code that deals with interrupts: Interrupt Handler or Interrupt Service Routines (ISRs) 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 UBC 104 Embedded Systems

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

32 Interrupt Service Routine
Program Program Interrupt Service Routine mul R1, 9 mov R1, cent mov R1, 0x90 mov sensor, R1 ret time t UBC 104 Embedded Systems

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

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

35 Interrupt Overheads Interrupt Latency Interrupt Termination
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 UBC 104 Embedded Systems

36 Interrupt Response Time
Interrupt Latency Interrupt Response Time= Interrupt Latency + Time in Interrupt Routine 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 UBC 104 Embedded Systems

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

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

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

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

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

43 External Interrupts Pins for external interrupts
UBC 104 Embedded Systems

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

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

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

47 Timer A timer is a counter that is increased with every time an instruction is executed e.g with 12MHz increases a counter every µ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 UBC 104 Embedded Systems

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

49 SFR Map – Timer Registers
UBC 104 Embedded Systems

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

51 SFR Map – Timer Control UBC 104 Embedded Systems

52 SFR Map – Timer 2 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 µs // Reload value is FC18 (hex) = (decimal) // Timer (16-bit) overflows when it reaches (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 } UBC 104 Embedded Systems

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

55 Interrupt Flags Bits that are set if the interrupt occurs
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 */ 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 Level-triggered threshold t trigger point Edge-triggered t trigger point UBC 104 Embedded Systems

58 Real-Time Systems predictable 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 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 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(); } UBC 104 Embedded Systems

61 Cyclic Executive (continued)
void timer(void) interrupt 5 { set(time_flag); } void EnterIdleMode(void) { PCON |= 0x01; Frame Tdelay,1 T1 T2 T3 T1 T2 T3 t IdleMode 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 UBC 104 Embedded Systems

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

64 Endless Loops Two types of tasks: Run-To-Completion tasks
Endless-Loop tasks 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 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; } UBC 104 Embedded Systems

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

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

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

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

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

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


Download ppt "Embedded Systems Prepared By:"

Similar presentations


Ads by Google