SlideShare a Scribd company logo
INTRODUCTION TO
MICRO-
CONTROLLERS
PART 2
PREPARED BY
BASEM IBRAHEEM
MODIFIED BY
KHALED M. IBRAHEEM
ADVANCED
MICROCONTROLLER
PROGRAMMING
ARDUINO PLATFORM PROGRAMMING
AGENDA
• DELAY !!!
• IDLE STATE
• INTERRUPTS ARE NOT AVAILABLE
• BLINKING WITHOUT DELAY
• INTERRUPT
• MILLIS
THE PROBLEM
• Assume that:
• We have a fire fighting robot. It keep moving searching for
fire. Digital fire detector sensor is used. It is connected to
pin 4. If the sensor detected fire, it sends HIGH for half a
second then return LOW.
• This robot has a fire fighting tool to vanquish fire (bump/
fan …etc.)
• This tool is connected to pin 12 and is activated by
sending HIGH.
• The robot has a blinking led that blinks every second.
BASIC DELAY
void setup() {
pinMode(13, OUTPUT);
pinMode(4, INPUT);
pinMode(12, OUTPUT);}
void loop() {
Alarm = digitalRead (4);
if (Alarm == HIGH) // If there is fire
digitalWrite(12, HIGH); // set the Fire Fighter on
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
for (int x=0; x < 1000; x++) { // Wait for 1 second
delay(1);
}
digitalWrite(13, LOW); // set the LED on
for (int x=0; x < 1000; x++) { // Wait for 1 second
delay(1);
}
}
void setup() {
pinMode(13, OUTPUT);
pinMode(4, INPUT);
pinMode(12, OUTPUT);}
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
for (int x=0; x < 1000; x++) { // wait for a secoond
delay(1);
Alarm = digitalRead (4);
if (Alarm == HIGH) // If there is fire
digitalWrite(12, HIGH); // set the Fire Fighter on
}
digitalWrite(13, LOW); // set the LED off
for (int x=0; x < 1000; x++) { // wait for a secoond
delay(1);
Alarm = digitalRead (4);
if (Alarm == HIGH) // If there is fire
digitalWrite(12, HIGH); // set the Fire Fighter on
}
}
unsigned long interval=1000; // the time we need to wait
unsigned long previousMillis=0; // millis() returns an unsigned long.
int Alarm;
bool ledState = false; // state variable for the LED
void setup() {
pinMode(13, OUTPUT);
pinMode(4, INPUT);
pinMode(12, OUTPUT);}
digitalWrite(13, ledState); }
void loop() {
unsigned long currentMillis = millis(); // grab current time
// check if "interval" time has passed (1000 milliseconds)
if ((unsigned long)(currentMillis - previousMillis) >= interval) {
ledState = !ledState; // "toggles" the state
digitalWrite(13, ledState); // sets the LED based on ledState
// save the "current" time
previousMillis = millis();
}
Alarm = digitalRead (4);
if (Alarm == HIGH) // If there is fire
digitalWrite(12, HIGH); // set the Fire Fighter on
}
const byte ledPin = 13; // LED
const byte FanPin = 12; // Fan
const byte interruptPin = 2;// Sensor input
unsigned long interval=1000; // the time we need to wait
unsigned long previousMillis=0; // millis() returns an unsigned long.
bool ledState = false; // state variable for the LED
void setup() {
pinMode(FanPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), ActivateFan, RISING); //LOW - CHANGE - RISING -
FALLING - HIGH for Due, Zero //and
MKR1000 boards
}
void loop() {
unsigned long currentMillis = millis(); // grab current time
// check if "interval" time has passed (1000 milliseconds)
if ((unsigned long)(currentMillis - previousMillis) >= interval) {
ledState = !ledState; // "toggles" the state
digitalWrite(ledPin, ledState); // sets the LED based on ledState
// save the "current" time
previousMillis = millis(); }}
void ActivateFan() {
digitalWrite(FanPin, HIGH); // set the Fire Fighter on
MEMORIES
REMEMBERING CHANGES
• THE SUPPORTED MICRO-CONTROLLERS ON THE UNO ARDUINO
BOARDS HAVE DIFFERENT AMOUNTS OF EEPROM: 1024 BYTES ON
THE ATMEGA328
• EPROM IS MEMORY WHOSE VALUES ARE KEPT WHEN THE BOARD IS
TURNED OFF (LIKE A TINY HARD DRIVE).
• YOU CAN READ , WRITE , CLEAR , UPDATE
• EEPROM UPDATE: STORES VALUES READ FROM A0 INTO EEPROM, WRITING THE
VALUE ONLY IF DIFFERENT, TO INCREASE EEPROM LIFE.
#include <EEPROM.h>
int addr = 0;
void setup() {}
void loop() {
int val = analogRead(0) / 4;
EPROM.write(addr, val);
addr = addr + 1;
if (addr == EEPROM.length()) {
addr = 0;
}
delay(100);
}
REMEMBERING CHANGES
REMEMBERING CHANGES
#include <EEPROM.h>
int a = 0;
int value;
void setup(){}
void loop()
{
value = EEPROM.read(a);
a = a + 1;
if (a == 512)
a = 0;
delay(500);
}
read()
Description
Reads a byte from the EEPROM.
Locations that have never been written to
have the value of 255.
Syntax
EEPROM.read(address)
Parameters
address: the location to read from, starting
from 0 (int)
Returns
the value stored in that location (byte)
MEMORIES OF AVR / ARDUINO
• MEMORY : THE FIRST THING TO GO
• THERE ARE THREE POOLS OF MEMORY IN THE MICROCONTROLLER USED ON AVR-
BASED ARDUINO BOARDS :
• FLASH MEMORY (PROGRAM SPACE), IS WHERE THE ARDUINO SKETCH IS STORED.
• SRAM (STATIC RANDOM ACCESS MEMORY) IS WHERE THE SKETCH CREATES AND
MANIPULATES VARIABLES WHEN IT RUNS.
• EEPROM IS MEMORY SPACE THAT PROGRAMMERS CAN USE TO STORE LONG-TERM
INFORMATION.
• ATMEGA328 CHIP
• FLASH 32K BYTES (OF WHICH 0.5 K IS USED FOR THE BOOTLOADER)
• SRAM 2K BYTES
• EEPROM 1K BYTE
SKETCH TOO BIG
MY PROGRAM WAS FINE UNTIL :
• "INCLUDED ONE MORE LIBRARY"
• "ADDED SOME MORE LED PIXELS"
• "OPENED A FILE ON THE SD CARD"
• "INITIALIZED A GRAPHICAL DISPLAY"
• "MERGED IN ANOTHER SKETCH"
• "ADDED A NEW FUNCTION
MEMORY ARCHITECTURES
• VON NEUMANN VS HARVARD’S
• SINGLE DATA/PROGRAM PATH
• SEPARATE PATHS (HARVARD)
• FLEXIBILITY VS PERFORMANCE
PC CPU (INTEL / CYRIX / AMD)
• HYBRID ARCHITECTURE
• CACHE MODELS INCLUDE SEPARATE BUSSES FOR DATA CACHE AND
INSTRUCTION CACHE.
• MEMORY (RAM) MODEL INCLUDE VON-NEUMANN FLEXIBLE ARCHITECTURE.
• COST !
AVR ARCHITECTURE FOR ATMEGA328P
• HARVARD
• FLASH FOR SKETCH (PROGRAM)
• SRAM FOR DATA
• COMPILER AND RUNTIME SYSTEM (ARDUINO BOOT LOADER) WORKS TO HANDLE
ALLOCATION AND DEALLOCATION , AS WELL AS TASK SPACE /SEGMENT
PROTECTION. (AND SWAPPING IN OTHER OSS)
GETTING INTO MEMORY MANAGEMENT
• FLASH 32 KB
• SRAM 2 KB
• EPROM 1KB
• 10,000 TO 100,000 TIMES LESS THAN PC MEMORY
DIFFERENCES
Flash SRAM EEPROM
Program Data
Static Data Reserved Block
Constants - Globals – Initial values
Byte by Byte operation
Static , 10 , 000 write
cycles , fused down when
written .
Volatile and Dynamic
Heap : Dynamically allocated data
items growing up
Stack : function calls and interrupr
handler calls growing down
Slower than SRAM , with 100,000
write cycles
FREE MEMORY
• DISTANCE BETWEEN HEAP AND STACK
• DEFRAGMENTATION OF HEAP
• FF (FIRST FIT) ALGORITHM, WHERE THE LIST IS SCANNED FROM THE BEGINNING FOR THE FIRST
“HOLE” THAT IS LARGE ENOUGH.
• NF (NEXT FIT) WHERE THE LIST IS SCANNED FROM WHERE THE LAST SEARCH ENDED FOR THE
NEXT “HOLE” THAT IS LARGE ENOUGH.
• BF (BEST FIT) WHERE THE ENTIRE LIST IS SEARCHED FOR THE HOLE THAT BEST FITS THE NEW
DATA.
• WF (WORST FIT), WHICH PLACES DATA IN THE LARGEST AVAILABLE “HOLE.”
• QF (QUICK FIT) WHERE A LIST IS KEPT OF MEMORY SIZES AND ALLOCATION IS DONE FROM THIS
INFORMATION.
MEASURING FREE MEMORY
• MIKROC STATISTICS LIBRARY
• FREEMEMORY()
ROUTINE FOR ARDUINO
HTTPS://GITHUB.COM/MPFLAGA/ARDUINO-MEMORYFREE
OPTIMIZING MEMORY USAGE
1- OPTIMIZING FLASH USAGE – APPLICATION
CODE
• REMOVE DEAD CODE
• UNUSED LIBRARIES (JUST COMMENT AND COMPILE)
• UNUSED FUNCTIONS
• UNUSED VARIABLES
• UNREACHABLE CODE
• REFACTOR (REPEATED CODE)
• ELIMINATE THE BOOTLOADER
2- OPTIMIZING SRAM USAGE
• PIXELS 3 BYTES PER PIXEL IN RGB
• WOULD YOU RUN A 32X32 PIXEL RGB DISPLAY ON UNO 328P ?
• 32*32=1024
• 1024*3 BYTES = 3072 BYTES = 3K
• UNO 328P SRAM = 2K
• 1 BYTE PER 8 PIXELS IN MONOCHROM
• COMMUNICATION BUFFERS
2- OPTIMIZING SRAM USAGE – DATA AND
DYNAMIC ALLOCATIONS
• REMOVE UNUSED VARIABLES
• F() FIXED STRINGS TO POINTERS TO BASE ADDRESS IN FLASH
• RESERVE() FOR GROWING STRINGS
CONT. 2- OPTIMIZING SRAM USAGE – DATA
AND DYNAMIC ALLOCATIONS
• MOVING CONSTANTS TO PROGMEM
• REDUCING UNUSED BUFFER SIZES OR DATA TYPES
• SERIAL BUFFER SIZE FOR FAST COMMUNICATION 64 BYTES , MAKE IT 32 BYTES
• ALLOCATE LOCAL VARIABLES IN A FUNCTION SCOPE TO ENSURE CLEANUP WITH
STACK POP.
• AVOID DYNAMIC HEAP ALLOCATIONS - THESE CAN QUICKLY FRAGMENT THE
LIMITED HEAP-SPACE.
• PREFER LOCAL TO GLOBAL ALLOCATION - STACK VARIABLES ONLY EXIST WHILE THEY
ARE BEING USED. IF YOU HAVE VARIABLES THAT ONLY ARE USED IN A SMALL SECTION
OF YOUR CODE, CONSIDER MAKING THAT CODE INTO A FUNCTION AND DECLARING
THE VARIABLES LOCAL TO THE FUNCTION.
MEMORY MANAGEMENT UNIT
• MANAGING THE MAPPING BETWEEN LOGICAL (PHYSICAL) MEMORY AND TASK MEMORY
REFERENCES.
• DETERMINING WHICH PROCESSES TO LOAD INTO THE AVAILABLE MEMORY SPACE.
• ALLOCATING AND DEALLOCATING OF MEMORY FOR PROCESSES THAT MAKE UP THE
SYSTEM.
• SUPPORTING MEMORY ALLOCATION AND DEALLOCATION OF CODE REQUESTS (WITHIN
A PROCESS),
• SUCH AS THE C LANGUAGE “ALLOC” AND “DEALLOC” FUNCTIONS, OR SPECIFIC BUFFER
ALLOCATION AND
• DEALLOCATION ROUTINES.
• TRACKING THE MEMORY USAGE OF SYSTEM COMPONENTS.
WHY DOES ADC TAKE TIME?
FLASH A/D CONVERTER
Vref
Vref /2
“00“
“01“
“10“
“11“
Vref /4 3Vref /4
Encoding of voltage intervals
h(t)
No decoding of h(t) > Vref
RESOLUTION AND SPEED OF FLASH A/D-
CONVERTER
• PARALLEL COMPARISON WITH REFERENCE
VOLTAGE
• SPEED: O(1)
• HARDWARE COMPLEXITY: O(N)
• APPLICATIONS: E.G. IN VIDEO PROCESSING
HIGHER RESOLUTION: SUCCESSIVE
APPROXIMATION
• KEY IDEA: BINARY SEARCH:
• SET MSB='1'
• IF TOO LARGE: RESET MSB
• SET MSB-1='1'
• IF TOO LARGE: RESET MSB-1
Speed: O(log2(n))
Hardware complexity: O(log2(n))
with n= # of distinguished
voltage levels;
slow, but high precision possible.
h(t)
w(t)
V-
SUCCESSIVE APPROXIMATION (2)
1100
1000
1010
1011
t
V
Vx
V-
h(t)

More Related Content

Similar to An Introduction to Microcontrollers part 2

Introduction to embedded System.pptx
Introduction to embedded System.pptxIntroduction to embedded System.pptx
Introduction to embedded System.pptxPratik Gohel
 
micro controllers 1.ppt
micro controllers 1.pptmicro controllers 1.ppt
micro controllers 1.pptsiminkhan
 
8051 microcontroller
8051 microcontroller8051 microcontroller
8051 microcontrollersnehapvs
 
Module -4_microprocessor (1).pptx
Module -4_microprocessor (1).pptxModule -4_microprocessor (1).pptx
Module -4_microprocessor (1).pptxDrVaibhavMeshram
 
introduction of microprocessor
introduction of microprocessorintroduction of microprocessor
introduction of microprocessorReetika Singh
 
embedded system introduction to microcontrollers
embedded system introduction to microcontrollersembedded system introduction to microcontrollers
embedded system introduction to microcontrollersBarER4
 
Microcontroller overview 1
Microcontroller overview 1Microcontroller overview 1
Microcontroller overview 1Sally Salem
 
Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Luis Grangeia
 
Aerospike Go Language Client
Aerospike Go Language ClientAerospike Go Language Client
Aerospike Go Language ClientSayyaparaju Sunil
 
UNIT 3 - General Purpose Processors
UNIT 3 - General Purpose ProcessorsUNIT 3 - General Purpose Processors
UNIT 3 - General Purpose ProcessorsButtaRajasekhar2
 
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERS
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERSPIC-MICROCONTROLLER TUTORIALS FOR BEGINNERS
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERSVISHNU KP
 
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3Raahul Raghavan
 
8085 microprocessor ramesh gaonkar
8085 microprocessor   ramesh gaonkar8085 microprocessor   ramesh gaonkar
8085 microprocessor ramesh gaonkarjemimajerome
 
introductiontoarduino-111120102058-phpapp02.pdf
introductiontoarduino-111120102058-phpapp02.pdfintroductiontoarduino-111120102058-phpapp02.pdf
introductiontoarduino-111120102058-phpapp02.pdfHebaEng
 
INTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERINTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERAnkita Jaiswal
 

Similar to An Introduction to Microcontrollers part 2 (20)

Introduction to embedded System.pptx
Introduction to embedded System.pptxIntroduction to embedded System.pptx
Introduction to embedded System.pptx
 
micro controllers 1.ppt
micro controllers 1.pptmicro controllers 1.ppt
micro controllers 1.ppt
 
CPU.ppd
CPU.ppdCPU.ppd
CPU.ppd
 
8051 microcontroller
8051 microcontroller8051 microcontroller
8051 microcontroller
 
Project_updated
Project_updatedProject_updated
Project_updated
 
Module -4_microprocessor (1).pptx
Module -4_microprocessor (1).pptxModule -4_microprocessor (1).pptx
Module -4_microprocessor (1).pptx
 
introduction of microprocessor
introduction of microprocessorintroduction of microprocessor
introduction of microprocessor
 
embedded system introduction to microcontrollers
embedded system introduction to microcontrollersembedded system introduction to microcontrollers
embedded system introduction to microcontrollers
 
Microcontroller overview 1
Microcontroller overview 1Microcontroller overview 1
Microcontroller overview 1
 
Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2
 
Aerospike Go Language Client
Aerospike Go Language ClientAerospike Go Language Client
Aerospike Go Language Client
 
UNIT 3 - General Purpose Processors
UNIT 3 - General Purpose ProcessorsUNIT 3 - General Purpose Processors
UNIT 3 - General Purpose Processors
 
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERS
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERSPIC-MICROCONTROLLER TUTORIALS FOR BEGINNERS
PIC-MICROCONTROLLER TUTORIALS FOR BEGINNERS
 
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
 
8085 microprocessor ramesh gaonkar
8085 microprocessor   ramesh gaonkar8085 microprocessor   ramesh gaonkar
8085 microprocessor ramesh gaonkar
 
Micro processor
Micro processorMicro processor
Micro processor
 
EE6502 Microprocessor & Microcontroller Regulation 2013
EE6502 Microprocessor & Microcontroller Regulation 2013EE6502 Microprocessor & Microcontroller Regulation 2013
EE6502 Microprocessor & Microcontroller Regulation 2013
 
introductiontoarduino-111120102058-phpapp02.pdf
introductiontoarduino-111120102058-phpapp02.pdfintroductiontoarduino-111120102058-phpapp02.pdf
introductiontoarduino-111120102058-phpapp02.pdf
 
INTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERINTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLER
 
Uc1(vii sem)
Uc1(vii sem)Uc1(vii sem)
Uc1(vii sem)
 

Recently uploaded

Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdfKamal Acharya
 
internship exam ppt.pptx on embedded system and IOT
internship exam ppt.pptx on embedded system and IOTinternship exam ppt.pptx on embedded system and IOT
internship exam ppt.pptx on embedded system and IOTNavyashreeS6
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfAbrahamGadissa
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单
一比一原版(UofT毕业证)多伦多大学毕业证成绩单一比一原版(UofT毕业证)多伦多大学毕业证成绩单
一比一原版(UofT毕业证)多伦多大学毕业证成绩单tuuww
 
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdfONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdfKamal Acharya
 
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdfONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdfKamal Acharya
 
Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdfKamal Acharya
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-IVigneshvaranMech
 
Online book store management system project.pdf
Online book store management system project.pdfOnline book store management system project.pdf
Online book store management system project.pdfKamal Acharya
 
An improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technologyAn improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technologyBOHRInternationalJou1
 
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...Roi Lipman
 
Paint shop management system project report.pdf
Paint shop management system project report.pdfPaint shop management system project report.pdf
Paint shop management system project report.pdfKamal Acharya
 
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and VisualizationKIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and VisualizationDr. Radhey Shyam
 
Supermarket billing system project report..pdf
Supermarket billing system project report..pdfSupermarket billing system project report..pdf
Supermarket billing system project report..pdfKamal Acharya
 
retail automation billing system ppt.pptx
retail automation billing system ppt.pptxretail automation billing system ppt.pptx
retail automation billing system ppt.pptxfaamieahmd
 
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4T.D. Shashikala
 
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data StreamKIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data StreamDr. Radhey Shyam
 
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...Amil baba
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringC Sai Kiran
 
Attraction and Repulsion type Moving Iron Instruments.pptx
Attraction and Repulsion type Moving Iron Instruments.pptxAttraction and Repulsion type Moving Iron Instruments.pptx
Attraction and Repulsion type Moving Iron Instruments.pptxkarthikeyanS725446
 

Recently uploaded (20)

Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdf
 
internship exam ppt.pptx on embedded system and IOT
internship exam ppt.pptx on embedded system and IOTinternship exam ppt.pptx on embedded system and IOT
internship exam ppt.pptx on embedded system and IOT
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单
一比一原版(UofT毕业证)多伦多大学毕业证成绩单一比一原版(UofT毕业证)多伦多大学毕业证成绩单
一比一原版(UofT毕业证)多伦多大学毕业证成绩单
 
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdfONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
 
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdfONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
 
Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdf
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
 
Online book store management system project.pdf
Online book store management system project.pdfOnline book store management system project.pdf
Online book store management system project.pdf
 
An improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technologyAn improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technology
 
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
 
Paint shop management system project report.pdf
Paint shop management system project report.pdfPaint shop management system project report.pdf
Paint shop management system project report.pdf
 
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and VisualizationKIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
 
Supermarket billing system project report..pdf
Supermarket billing system project report..pdfSupermarket billing system project report..pdf
Supermarket billing system project report..pdf
 
retail automation billing system ppt.pptx
retail automation billing system ppt.pptxretail automation billing system ppt.pptx
retail automation billing system ppt.pptx
 
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4
RM&IPR M4.pdfResearch Methodolgy & Intellectual Property Rights Series 4
 
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data StreamKIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
 
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
 
Attraction and Repulsion type Moving Iron Instruments.pptx
Attraction and Repulsion type Moving Iron Instruments.pptxAttraction and Repulsion type Moving Iron Instruments.pptx
Attraction and Repulsion type Moving Iron Instruments.pptx
 

An Introduction to Microcontrollers part 2

  • 1. INTRODUCTION TO MICRO- CONTROLLERS PART 2 PREPARED BY BASEM IBRAHEEM MODIFIED BY KHALED M. IBRAHEEM
  • 3. AGENDA • DELAY !!! • IDLE STATE • INTERRUPTS ARE NOT AVAILABLE • BLINKING WITHOUT DELAY • INTERRUPT • MILLIS
  • 4. THE PROBLEM • Assume that: • We have a fire fighting robot. It keep moving searching for fire. Digital fire detector sensor is used. It is connected to pin 4. If the sensor detected fire, it sends HIGH for half a second then return LOW. • This robot has a fire fighting tool to vanquish fire (bump/ fan …etc.) • This tool is connected to pin 12 and is activated by sending HIGH. • The robot has a blinking led that blinks every second.
  • 5. BASIC DELAY void setup() { pinMode(13, OUTPUT); pinMode(4, INPUT); pinMode(12, OUTPUT);} void loop() { Alarm = digitalRead (4); if (Alarm == HIGH) // If there is fire digitalWrite(12, HIGH); // set the Fire Fighter on digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second }
  • 6. void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // set the LED on for (int x=0; x < 1000; x++) { // Wait for 1 second delay(1); } digitalWrite(13, LOW); // set the LED on for (int x=0; x < 1000; x++) { // Wait for 1 second delay(1); } }
  • 7. void setup() { pinMode(13, OUTPUT); pinMode(4, INPUT); pinMode(12, OUTPUT);} } void loop() { digitalWrite(13, HIGH); // set the LED on for (int x=0; x < 1000; x++) { // wait for a secoond delay(1); Alarm = digitalRead (4); if (Alarm == HIGH) // If there is fire digitalWrite(12, HIGH); // set the Fire Fighter on } digitalWrite(13, LOW); // set the LED off for (int x=0; x < 1000; x++) { // wait for a secoond delay(1); Alarm = digitalRead (4); if (Alarm == HIGH) // If there is fire digitalWrite(12, HIGH); // set the Fire Fighter on } }
  • 8. unsigned long interval=1000; // the time we need to wait unsigned long previousMillis=0; // millis() returns an unsigned long. int Alarm; bool ledState = false; // state variable for the LED void setup() { pinMode(13, OUTPUT); pinMode(4, INPUT); pinMode(12, OUTPUT);} digitalWrite(13, ledState); } void loop() { unsigned long currentMillis = millis(); // grab current time // check if "interval" time has passed (1000 milliseconds) if ((unsigned long)(currentMillis - previousMillis) >= interval) { ledState = !ledState; // "toggles" the state digitalWrite(13, ledState); // sets the LED based on ledState // save the "current" time previousMillis = millis(); } Alarm = digitalRead (4); if (Alarm == HIGH) // If there is fire digitalWrite(12, HIGH); // set the Fire Fighter on }
  • 9. const byte ledPin = 13; // LED const byte FanPin = 12; // Fan const byte interruptPin = 2;// Sensor input unsigned long interval=1000; // the time we need to wait unsigned long previousMillis=0; // millis() returns an unsigned long. bool ledState = false; // state variable for the LED void setup() { pinMode(FanPin, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), ActivateFan, RISING); //LOW - CHANGE - RISING - FALLING - HIGH for Due, Zero //and MKR1000 boards } void loop() { unsigned long currentMillis = millis(); // grab current time // check if "interval" time has passed (1000 milliseconds) if ((unsigned long)(currentMillis - previousMillis) >= interval) { ledState = !ledState; // "toggles" the state digitalWrite(ledPin, ledState); // sets the LED based on ledState // save the "current" time previousMillis = millis(); }} void ActivateFan() { digitalWrite(FanPin, HIGH); // set the Fire Fighter on
  • 11. REMEMBERING CHANGES • THE SUPPORTED MICRO-CONTROLLERS ON THE UNO ARDUINO BOARDS HAVE DIFFERENT AMOUNTS OF EEPROM: 1024 BYTES ON THE ATMEGA328 • EPROM IS MEMORY WHOSE VALUES ARE KEPT WHEN THE BOARD IS TURNED OFF (LIKE A TINY HARD DRIVE). • YOU CAN READ , WRITE , CLEAR , UPDATE • EEPROM UPDATE: STORES VALUES READ FROM A0 INTO EEPROM, WRITING THE VALUE ONLY IF DIFFERENT, TO INCREASE EEPROM LIFE.
  • 12. #include <EEPROM.h> int addr = 0; void setup() {} void loop() { int val = analogRead(0) / 4; EPROM.write(addr, val); addr = addr + 1; if (addr == EEPROM.length()) { addr = 0; } delay(100); } REMEMBERING CHANGES
  • 13. REMEMBERING CHANGES #include <EEPROM.h> int a = 0; int value; void setup(){} void loop() { value = EEPROM.read(a); a = a + 1; if (a == 512) a = 0; delay(500); } read() Description Reads a byte from the EEPROM. Locations that have never been written to have the value of 255. Syntax EEPROM.read(address) Parameters address: the location to read from, starting from 0 (int) Returns the value stored in that location (byte)
  • 14. MEMORIES OF AVR / ARDUINO • MEMORY : THE FIRST THING TO GO • THERE ARE THREE POOLS OF MEMORY IN THE MICROCONTROLLER USED ON AVR- BASED ARDUINO BOARDS : • FLASH MEMORY (PROGRAM SPACE), IS WHERE THE ARDUINO SKETCH IS STORED. • SRAM (STATIC RANDOM ACCESS MEMORY) IS WHERE THE SKETCH CREATES AND MANIPULATES VARIABLES WHEN IT RUNS. • EEPROM IS MEMORY SPACE THAT PROGRAMMERS CAN USE TO STORE LONG-TERM INFORMATION. • ATMEGA328 CHIP • FLASH 32K BYTES (OF WHICH 0.5 K IS USED FOR THE BOOTLOADER) • SRAM 2K BYTES • EEPROM 1K BYTE
  • 16. MY PROGRAM WAS FINE UNTIL : • "INCLUDED ONE MORE LIBRARY" • "ADDED SOME MORE LED PIXELS" • "OPENED A FILE ON THE SD CARD" • "INITIALIZED A GRAPHICAL DISPLAY" • "MERGED IN ANOTHER SKETCH" • "ADDED A NEW FUNCTION
  • 17. MEMORY ARCHITECTURES • VON NEUMANN VS HARVARD’S • SINGLE DATA/PROGRAM PATH • SEPARATE PATHS (HARVARD) • FLEXIBILITY VS PERFORMANCE
  • 18. PC CPU (INTEL / CYRIX / AMD) • HYBRID ARCHITECTURE • CACHE MODELS INCLUDE SEPARATE BUSSES FOR DATA CACHE AND INSTRUCTION CACHE. • MEMORY (RAM) MODEL INCLUDE VON-NEUMANN FLEXIBLE ARCHITECTURE. • COST !
  • 19. AVR ARCHITECTURE FOR ATMEGA328P • HARVARD • FLASH FOR SKETCH (PROGRAM) • SRAM FOR DATA • COMPILER AND RUNTIME SYSTEM (ARDUINO BOOT LOADER) WORKS TO HANDLE ALLOCATION AND DEALLOCATION , AS WELL AS TASK SPACE /SEGMENT PROTECTION. (AND SWAPPING IN OTHER OSS)
  • 20. GETTING INTO MEMORY MANAGEMENT • FLASH 32 KB • SRAM 2 KB • EPROM 1KB • 10,000 TO 100,000 TIMES LESS THAN PC MEMORY
  • 21. DIFFERENCES Flash SRAM EEPROM Program Data Static Data Reserved Block Constants - Globals – Initial values Byte by Byte operation Static , 10 , 000 write cycles , fused down when written . Volatile and Dynamic Heap : Dynamically allocated data items growing up Stack : function calls and interrupr handler calls growing down Slower than SRAM , with 100,000 write cycles
  • 22. FREE MEMORY • DISTANCE BETWEEN HEAP AND STACK • DEFRAGMENTATION OF HEAP • FF (FIRST FIT) ALGORITHM, WHERE THE LIST IS SCANNED FROM THE BEGINNING FOR THE FIRST “HOLE” THAT IS LARGE ENOUGH. • NF (NEXT FIT) WHERE THE LIST IS SCANNED FROM WHERE THE LAST SEARCH ENDED FOR THE NEXT “HOLE” THAT IS LARGE ENOUGH. • BF (BEST FIT) WHERE THE ENTIRE LIST IS SEARCHED FOR THE HOLE THAT BEST FITS THE NEW DATA. • WF (WORST FIT), WHICH PLACES DATA IN THE LARGEST AVAILABLE “HOLE.” • QF (QUICK FIT) WHERE A LIST IS KEPT OF MEMORY SIZES AND ALLOCATION IS DONE FROM THIS INFORMATION.
  • 23. MEASURING FREE MEMORY • MIKROC STATISTICS LIBRARY • FREEMEMORY() ROUTINE FOR ARDUINO HTTPS://GITHUB.COM/MPFLAGA/ARDUINO-MEMORYFREE
  • 25. 1- OPTIMIZING FLASH USAGE – APPLICATION CODE • REMOVE DEAD CODE • UNUSED LIBRARIES (JUST COMMENT AND COMPILE) • UNUSED FUNCTIONS • UNUSED VARIABLES • UNREACHABLE CODE • REFACTOR (REPEATED CODE) • ELIMINATE THE BOOTLOADER
  • 26. 2- OPTIMIZING SRAM USAGE • PIXELS 3 BYTES PER PIXEL IN RGB • WOULD YOU RUN A 32X32 PIXEL RGB DISPLAY ON UNO 328P ? • 32*32=1024 • 1024*3 BYTES = 3072 BYTES = 3K • UNO 328P SRAM = 2K • 1 BYTE PER 8 PIXELS IN MONOCHROM • COMMUNICATION BUFFERS
  • 27. 2- OPTIMIZING SRAM USAGE – DATA AND DYNAMIC ALLOCATIONS • REMOVE UNUSED VARIABLES • F() FIXED STRINGS TO POINTERS TO BASE ADDRESS IN FLASH • RESERVE() FOR GROWING STRINGS
  • 28. CONT. 2- OPTIMIZING SRAM USAGE – DATA AND DYNAMIC ALLOCATIONS • MOVING CONSTANTS TO PROGMEM • REDUCING UNUSED BUFFER SIZES OR DATA TYPES • SERIAL BUFFER SIZE FOR FAST COMMUNICATION 64 BYTES , MAKE IT 32 BYTES • ALLOCATE LOCAL VARIABLES IN A FUNCTION SCOPE TO ENSURE CLEANUP WITH STACK POP. • AVOID DYNAMIC HEAP ALLOCATIONS - THESE CAN QUICKLY FRAGMENT THE LIMITED HEAP-SPACE. • PREFER LOCAL TO GLOBAL ALLOCATION - STACK VARIABLES ONLY EXIST WHILE THEY ARE BEING USED. IF YOU HAVE VARIABLES THAT ONLY ARE USED IN A SMALL SECTION OF YOUR CODE, CONSIDER MAKING THAT CODE INTO A FUNCTION AND DECLARING THE VARIABLES LOCAL TO THE FUNCTION.
  • 29. MEMORY MANAGEMENT UNIT • MANAGING THE MAPPING BETWEEN LOGICAL (PHYSICAL) MEMORY AND TASK MEMORY REFERENCES. • DETERMINING WHICH PROCESSES TO LOAD INTO THE AVAILABLE MEMORY SPACE. • ALLOCATING AND DEALLOCATING OF MEMORY FOR PROCESSES THAT MAKE UP THE SYSTEM. • SUPPORTING MEMORY ALLOCATION AND DEALLOCATION OF CODE REQUESTS (WITHIN A PROCESS), • SUCH AS THE C LANGUAGE “ALLOC” AND “DEALLOC” FUNCTIONS, OR SPECIFIC BUFFER ALLOCATION AND • DEALLOCATION ROUTINES. • TRACKING THE MEMORY USAGE OF SYSTEM COMPONENTS.
  • 30. WHY DOES ADC TAKE TIME?
  • 31. FLASH A/D CONVERTER Vref Vref /2 “00“ “01“ “10“ “11“ Vref /4 3Vref /4 Encoding of voltage intervals h(t) No decoding of h(t) > Vref
  • 32. RESOLUTION AND SPEED OF FLASH A/D- CONVERTER • PARALLEL COMPARISON WITH REFERENCE VOLTAGE • SPEED: O(1) • HARDWARE COMPLEXITY: O(N) • APPLICATIONS: E.G. IN VIDEO PROCESSING
  • 33. HIGHER RESOLUTION: SUCCESSIVE APPROXIMATION • KEY IDEA: BINARY SEARCH: • SET MSB='1' • IF TOO LARGE: RESET MSB • SET MSB-1='1' • IF TOO LARGE: RESET MSB-1 Speed: O(log2(n)) Hardware complexity: O(log2(n)) with n= # of distinguished voltage levels; slow, but high precision possible. h(t) w(t) V-