SlideShare a Scribd company logo
Lecture 6 – Introduction to the
ATmega328 and Ardunio
CSE P567
Outline
  Lecture 6
  ATmega architecture and instruction set
  I/O pins
  Arduino C++ language
  Lecture 7
  Controlling Time
  Interrupts and Timers
  Lecture 8
  Guest lecture – Radio communication
  Lecture 9
  Designing PID Controllers
AVR Architecture
AVR Architecture
  Clocks and Power
  Beyond scope of this
course
AVR Architecture
  CPU
  Details coming
AVR Architecture
  Harvard architecture
  Flash – program memory
  32K
  SRAM – data memory
  2K
  EEPROM
  For long-term data
  On I/O data bus
Memory
  Flash (32K) (15-bit addresses)
  Program memory – read only
  Non-volatile
  Allocate data to Flash using PROGMEM keyword
  see documentation
  SRAM (2K)
  Temporary values, stack, etc.
  Volatile
  Limited space!
  EEPROM (1K)
  Long-term data
  see documentation on EEPROM library
AVR CPU
  Instruction Fetch
and Decode
AVR CPU
  ALU Instructions
AVR CPU
  I/O and special
functions
AVR Register File
  32 8-bit GP registers
  Part of SRAM memory space
Special Addressing Registers
  X,Y and Z registers
  16-bit registers made using registers 26 – 31
  Support indirect addressing
AVR Memory
  Program memory – Flash
  Data memory - SRAM
Addressing Modes
  Direct register
addressing
Addressing Modes
  Direct I/O addressing
Addressing Modes
  Direct data memory addressing
Addressing Modes
  Direct data memory with displacement addressing
Addressing Modes
  Indirect data memory addressing
Addressing Modes
  Indirect data memory addressing with pre-decrement
Addressing Modes
  Indirect data memory addressing with post-increment
Addressing Modes
  Program memory addressing (constant data)
SRAM Read/Write Timing
Stack Pointer Register
  Special register in I/O space [3E, 3D]
  Enough bits to address data space
  Initialized to RAMEND (address of highest memory address)
  Instructions that use the stack pointer
Program Status Register (PSR)
  
  Status bits set by instructions/Checked by Branch/Skip
instructions
  I – Global interrupt enable
  T – Flag bit
  H – Half carry (BCD arithmetic)
  S – Sign
  V – Overflow
  N – Negative
  Z – Zero
  C – Carry
Simple 2-Stage Pipeline
  Branch/Skip??
Single-Cycle ALU Instructions
  Most instructions execute in one cycle
  Makes program timing calculations (relatively) easy
  No cache misses
  1 clock/instruction
Addressing Modes
  JMP, CALL – Direct Program Memory Addressing
Addressing Modes
  IJMP, ICALL – Indirect program memory addressing
Addressing Modes
  RJMP, RCALL – Relative program memory addressing
Arithmetic Instructions
Logical Instructions
Jump and Call Instructions
Skip and Branch Instructions
Skip and Branch (cont)
Move, Load
Store
Load/Store Program Memory
Move, I/O, Push/Pop
Shift and Bit Instructions
Bit Instructions (cont)
AVR Architecture
  Three timers
  Very flexible
  Choose clock rate
  Choose “roll-over” value
  Generate interrupts
  Generate PWM signals
  (represent 8-bit value with
using a clock signal)
  More in next lecture…
Arduino Timing Functions
  delay(ms)
  wait for ms milliseconds before continuing
  delayMicroseconds(us)
  wait for us microseconds before continuing
  unsigned long millis( )
  return number of milliseconds since program started
  unsigned long micros( )
  return number of microseconds since program started
  resolution of 4 microseconds
AVR Architecture
  Interface to pins
  Each pin directly
programmable
  Program direction
  Program value
  Program pull-ups
  Some pins are special
  Analog vs. Digital
  Clocks
  Reset
I/O Ports
  3 8-bit Ports (B, C, D)
  Each port controlled by 3 8-bit registers
  Each bit controls one I/O pin
  DDRx – Direction register
  Defines whether a pin is an input (0) or and output (1)
  PINx – Pin input value
  Reading this “register” returns value of pin
  PORTx – Pin output value
  Writing this register sets value of pin
Pin Circuitry
Pin Input
off
DDRx = 0
PORTx
PINx
Synchronization Timing
  Note:Takes a clock cycle for data output to be reflected
on the input
Pin Output
on
DDRx = 1
PORTx
PINx
Pin Input – PORT controls pullup
off
DDRx = 0
PORTx
PINx
I/O Ports
  Pullups
  If a pin is an input (DDRxi = 0):
  PORTxi = 0 – pin is floating
  PORTxi = 1 – connects a pullup to the pin
  Keeps pin from floating if noone driving
  Allows wired-OR bus
  Individual bits can be set cleared using bit-ops
  A bit can be toggled by writing 1 to PINxi
  SBI instruction e.g.
I/O Protection
Lecture6
Arduino Digital and Analog I/O Pins
  Digital pins:
  Pins 0 – 7: PORT D [0:7]
  Pins 8 – 13: PORT B [0:5]
  Pins 14 – 19: PORT C [0:5] (Arduino analog pins 0 – 5)
  digital pins 0 and 1 are RX and TX for serial communication
  digital pin 13 connected to the base board LED
  Digital Pin I/O Functions
  pinMode(pin, mode)
  Sets pin to INPUT or OUTPUT mode
  Writes 1 bit in the DDRx register
  digitalWrite(pin, value)
  Sets pin value to LOW or HIGH (0 or 1)
  Writes 1 bit in the PORTx register
  int value = digitalRead(pin)
  Reads back pin value (0 or 1)
  Read 1 bit in the PINx register
Arduino Analog I/O
  Analog input pins: 0 – 5
  Analog output pins: 3, 5, 6, 9, 10, 11 (digital pins)
  Analog input functions
  int val = analogRead(pin)
  Converts 0 – 5v. voltage to a 10-bit number (0 – 1023)
  Don’t use pinMode
  analogReference(type)
  Used to change how voltage is converted (advanced)
  Analog output
  analogWrite(pin, value)
  value is 0 – 255
  Generates a PWM output on digital pin (3, 5, 6, 9, 10, 11)
  @490Hz frequency
AVR Architecture
  Analog inputs
  Convert voltage to a
10-bit digital value
  Can provide reference
voltages
PWM – Pulse Width Modulation
  Use one wire to represent a multi-bit value
  A clock with a variable duty cycle
  Duty cycle used to represent value
  We can turn it into a analog voltage using an integrating filter
Port Special Functions
  Lots of special uses for pins
  Clock connections
  Timer connections
  e.g. comparator output for PWM
  Interrupts
  Analog references
  Serial bus I/Os
  USART
  PCI
Reading and Writing Pins Directly
  Only one pin can be changed using the Arduino I/O
functions
  Setting multiple pins takes time and instructions
  To change multiple pins simultaneously, directly read/write
the pin registers
  DDR{A/B/C}
  PORT{A/B/C}
  PIN{A/B/C}
  e.g. to set all digital pins 0 – 7 to a value:
  PORTD = B01100101;
AVR Architecture
  Special I/O support
  Serial protocols
  Uses special pins
  Uses timers
  Beyond scope of this
course
Arduino C Programs
  Arduino calls these “sketches”
  Basically C with libraries
  Program structure
  Header: declarations, includes, etc.
  setup()
  loop()
  Setup is likeVerilog initial
  executes once when program starts
  loop() is likeVerilog always
  continuously re-executed when the end is reached
Blink Program
int ledPin = 13; // LED connected to digital pin 13
// The setup() method runs once, when the sketch starts
void setup() {
// initialize the digital pin as an output:
pinMode(ledPin, OUTPUT);
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop()
{
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000); // wait for a second
}
The Arduino C++ Main Program
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
Arduino Serial I/O
  Communication with PC via USB serial line
  Use the Serial Monitor in the IDE
  Or set up a C or Java (or you-name-it) interface
  Example Serial library calls
  Serial.begin(baud-rate)
  9600 default
  Serial.println(string)
  int foo = Serial.read()
  Read one byte (input data is buffered)
  See documentation for more
Example Program

More Related Content

PDF
96000707 gas-turbine-control
PPTX
AVR programming - BASICS
PPT
Chp6 assembly language programming for pic copy
PPTX
Programmable Logic Controller | Ladder Logic diagrams| Block diagram | I/O Mo...
PPT
Types of instructions
PPT
8085 paper-presentation-1232646931472979-2
PPTX
Prerequriment of microcontroller
PDF
Writing c code for the 8051
96000707 gas-turbine-control
AVR programming - BASICS
Chp6 assembly language programming for pic copy
Programmable Logic Controller | Ladder Logic diagrams| Block diagram | I/O Mo...
Types of instructions
8085 paper-presentation-1232646931472979-2
Prerequriment of microcontroller
Writing c code for the 8051

What's hot (19)

PDF
Assembler Programming
PPT
microprocessor
PPTX
digital logic circuits, digital component
PPTX
Peripherals and interfacing
PDF
Introduction to Embedded C for 8051 and Implementation of Timer and Interrupt...
PPTX
Embedded System Programming on ARM Cortex M3 and M4 Course
PDF
Embedded system (Chapter 3) io_port_programming
PDF
8086 assembly
PDF
Assembly programming
PPT
Chp7 pic 16 f84 interfacing - copy
PPTX
Presentation
PPTX
Microcontroller ppt
PPTX
PPTX
8051 programming skills using EMBEDDED C
PDF
Assembly programming II
PPT
microprocessor
PDF
Assembler4
PPT
Best-embedded-corporate-training-in-mumbai
PPTX
Embedded system (Chapter )
Assembler Programming
microprocessor
digital logic circuits, digital component
Peripherals and interfacing
Introduction to Embedded C for 8051 and Implementation of Timer and Interrupt...
Embedded System Programming on ARM Cortex M3 and M4 Course
Embedded system (Chapter 3) io_port_programming
8086 assembly
Assembly programming
Chp7 pic 16 f84 interfacing - copy
Presentation
Microcontroller ppt
8051 programming skills using EMBEDDED C
Assembly programming II
microprocessor
Assembler4
Best-embedded-corporate-training-in-mumbai
Embedded system (Chapter )
Ad

Similar to Lecture6 (20)

PPTX
Lecture6.pptx
PDF
AVR arduino dasar
PPTX
Arduino intro.pptx
PPT
01 Intro to the Arduino and it's basics.ppt
PDF
introductiontoarduino-111120102058-phpapp02.pdf
PPTX
arduinoedit.pptx
PDF
Arduino reference
PPTX
Arduino Foundations
PPTX
How to use an Arduino
PPTX
Introduction To Arduino-converted for s.pptx
PPT
Introduction to Arduino 16822775 (2).ppt
PPTX
Arduino cic3
PDF
Arduino-workshop.computer engineering.pdf
PPTX
Introduction to Arduino Microcontroller
PPTX
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
PPTX
02 General Purpose Input - Output on the Arduino
PDF
Arduino microcontroller ins and outs with pin diagram
PPTX
Arduino.pptx
PDF
arduinocourse-180308074529 (1).pdf
Lecture6.pptx
AVR arduino dasar
Arduino intro.pptx
01 Intro to the Arduino and it's basics.ppt
introductiontoarduino-111120102058-phpapp02.pdf
arduinoedit.pptx
Arduino reference
Arduino Foundations
How to use an Arduino
Introduction To Arduino-converted for s.pptx
Introduction to Arduino 16822775 (2).ppt
Arduino cic3
Arduino-workshop.computer engineering.pdf
Introduction to Arduino Microcontroller
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
02 General Purpose Input - Output on the Arduino
Arduino microcontroller ins and outs with pin diagram
Arduino.pptx
arduinocourse-180308074529 (1).pdf
Ad

More from Mahmut Yildiz (16)

TXT
Arm code arduino
PDF
Drv8833 motor driver datasheet
PDF
PDF
Lecture7
PDF
Microsd card spec
PDF
Micro sd specification
PPTX
Comunication project
PDF
Audioprocessing
PDF
Us6330335
PDF
96683234 project-report-steganography
PPT
Amplitude modulation
PPT
Introduction to modulation and demodulation
PDF
Matlabders
PDF
Matlab.pdf
PDF
Matlab grafik
PDF
Basic Info for Matlab
Arm code arduino
Drv8833 motor driver datasheet
Lecture7
Microsd card spec
Micro sd specification
Comunication project
Audioprocessing
Us6330335
96683234 project-report-steganography
Amplitude modulation
Introduction to modulation and demodulation
Matlabders
Matlab.pdf
Matlab grafik
Basic Info for Matlab

Recently uploaded (20)

PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
Welding lecture in detail for understanding
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PDF
PPT on Performance Review to get promotions
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPTX
web development for engineering and engineering
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
Geodesy 1.pptx...............................................
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPTX
UNIT 4 Total Quality Management .pptx
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PPT
Mechanical Engineering MATERIALS Selection
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
UNIT-1 - COAL BASED THERMAL POWER PLANTS
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Welding lecture in detail for understanding
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPT on Performance Review to get promotions
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
web development for engineering and engineering
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
Geodesy 1.pptx...............................................
Lecture Notes Electrical Wiring System Components
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
UNIT 4 Total Quality Management .pptx
Automation-in-Manufacturing-Chapter-Introduction.pdf
Mechanical Engineering MATERIALS Selection
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Model Code of Practice - Construction Work - 21102022 .pdf
Mitigating Risks through Effective Management for Enhancing Organizational Pe...

Lecture6

  • 1. Lecture 6 – Introduction to the ATmega328 and Ardunio CSE P567
  • 2. Outline   Lecture 6   ATmega architecture and instruction set   I/O pins   Arduino C++ language   Lecture 7   Controlling Time   Interrupts and Timers   Lecture 8   Guest lecture – Radio communication   Lecture 9   Designing PID Controllers
  • 4. AVR Architecture   Clocks and Power   Beyond scope of this course
  • 6. AVR Architecture   Harvard architecture   Flash – program memory   32K   SRAM – data memory   2K   EEPROM   For long-term data   On I/O data bus
  • 7. Memory   Flash (32K) (15-bit addresses)   Program memory – read only   Non-volatile   Allocate data to Flash using PROGMEM keyword   see documentation   SRAM (2K)   Temporary values, stack, etc.   Volatile   Limited space!   EEPROM (1K)   Long-term data   see documentation on EEPROM library
  • 8. AVR CPU   Instruction Fetch and Decode
  • 9. AVR CPU   ALU Instructions
  • 10. AVR CPU   I/O and special functions
  • 11. AVR Register File   32 8-bit GP registers   Part of SRAM memory space
  • 12. Special Addressing Registers   X,Y and Z registers   16-bit registers made using registers 26 – 31   Support indirect addressing
  • 13. AVR Memory   Program memory – Flash   Data memory - SRAM
  • 14. Addressing Modes   Direct register addressing
  • 16. Addressing Modes   Direct data memory addressing
  • 17. Addressing Modes   Direct data memory with displacement addressing
  • 18. Addressing Modes   Indirect data memory addressing
  • 19. Addressing Modes   Indirect data memory addressing with pre-decrement
  • 20. Addressing Modes   Indirect data memory addressing with post-increment
  • 21. Addressing Modes   Program memory addressing (constant data)
  • 23. Stack Pointer Register   Special register in I/O space [3E, 3D]   Enough bits to address data space   Initialized to RAMEND (address of highest memory address)   Instructions that use the stack pointer
  • 24. Program Status Register (PSR)     Status bits set by instructions/Checked by Branch/Skip instructions   I – Global interrupt enable   T – Flag bit   H – Half carry (BCD arithmetic)   S – Sign   V – Overflow   N – Negative   Z – Zero   C – Carry
  • 26. Single-Cycle ALU Instructions   Most instructions execute in one cycle   Makes program timing calculations (relatively) easy   No cache misses   1 clock/instruction
  • 27. Addressing Modes   JMP, CALL – Direct Program Memory Addressing
  • 28. Addressing Modes   IJMP, ICALL – Indirect program memory addressing
  • 29. Addressing Modes   RJMP, RCALL – Relative program memory addressing
  • 32. Jump and Call Instructions
  • 33. Skip and Branch Instructions
  • 34. Skip and Branch (cont)
  • 36. Store
  • 39. Shift and Bit Instructions
  • 41. AVR Architecture   Three timers   Very flexible   Choose clock rate   Choose “roll-over” value   Generate interrupts   Generate PWM signals   (represent 8-bit value with using a clock signal)   More in next lecture…
  • 42. Arduino Timing Functions   delay(ms)   wait for ms milliseconds before continuing   delayMicroseconds(us)   wait for us microseconds before continuing   unsigned long millis( )   return number of milliseconds since program started   unsigned long micros( )   return number of microseconds since program started   resolution of 4 microseconds
  • 43. AVR Architecture   Interface to pins   Each pin directly programmable   Program direction   Program value   Program pull-ups   Some pins are special   Analog vs. Digital   Clocks   Reset
  • 44. I/O Ports   3 8-bit Ports (B, C, D)   Each port controlled by 3 8-bit registers   Each bit controls one I/O pin   DDRx – Direction register   Defines whether a pin is an input (0) or and output (1)   PINx – Pin input value   Reading this “register” returns value of pin   PORTx – Pin output value   Writing this register sets value of pin
  • 46. Pin Input off DDRx = 0 PORTx PINx
  • 47. Synchronization Timing   Note:Takes a clock cycle for data output to be reflected on the input
  • 48. Pin Output on DDRx = 1 PORTx PINx
  • 49. Pin Input – PORT controls pullup off DDRx = 0 PORTx PINx
  • 50. I/O Ports   Pullups   If a pin is an input (DDRxi = 0):   PORTxi = 0 – pin is floating   PORTxi = 1 – connects a pullup to the pin   Keeps pin from floating if noone driving   Allows wired-OR bus   Individual bits can be set cleared using bit-ops   A bit can be toggled by writing 1 to PINxi   SBI instruction e.g.
  • 53. Arduino Digital and Analog I/O Pins   Digital pins:   Pins 0 – 7: PORT D [0:7]   Pins 8 – 13: PORT B [0:5]   Pins 14 – 19: PORT C [0:5] (Arduino analog pins 0 – 5)   digital pins 0 and 1 are RX and TX for serial communication   digital pin 13 connected to the base board LED   Digital Pin I/O Functions   pinMode(pin, mode)   Sets pin to INPUT or OUTPUT mode   Writes 1 bit in the DDRx register   digitalWrite(pin, value)   Sets pin value to LOW or HIGH (0 or 1)   Writes 1 bit in the PORTx register   int value = digitalRead(pin)   Reads back pin value (0 or 1)   Read 1 bit in the PINx register
  • 54. Arduino Analog I/O   Analog input pins: 0 – 5   Analog output pins: 3, 5, 6, 9, 10, 11 (digital pins)   Analog input functions   int val = analogRead(pin)   Converts 0 – 5v. voltage to a 10-bit number (0 – 1023)   Don’t use pinMode   analogReference(type)   Used to change how voltage is converted (advanced)   Analog output   analogWrite(pin, value)   value is 0 – 255   Generates a PWM output on digital pin (3, 5, 6, 9, 10, 11)   @490Hz frequency
  • 55. AVR Architecture   Analog inputs   Convert voltage to a 10-bit digital value   Can provide reference voltages
  • 56. PWM – Pulse Width Modulation   Use one wire to represent a multi-bit value   A clock with a variable duty cycle   Duty cycle used to represent value   We can turn it into a analog voltage using an integrating filter
  • 57. Port Special Functions   Lots of special uses for pins   Clock connections   Timer connections   e.g. comparator output for PWM   Interrupts   Analog references   Serial bus I/Os   USART   PCI
  • 58. Reading and Writing Pins Directly   Only one pin can be changed using the Arduino I/O functions   Setting multiple pins takes time and instructions   To change multiple pins simultaneously, directly read/write the pin registers   DDR{A/B/C}   PORT{A/B/C}   PIN{A/B/C}   e.g. to set all digital pins 0 – 7 to a value:   PORTD = B01100101;
  • 59. AVR Architecture   Special I/O support   Serial protocols   Uses special pins   Uses timers   Beyond scope of this course
  • 60. Arduino C Programs   Arduino calls these “sketches”   Basically C with libraries   Program structure   Header: declarations, includes, etc.   setup()   loop()   Setup is likeVerilog initial   executes once when program starts   loop() is likeVerilog always   continuously re-executed when the end is reached
  • 61. Blink Program int ledPin = 13; // LED connected to digital pin 13 // The setup() method runs once, when the sketch starts void setup() { // initialize the digital pin as an output: pinMode(ledPin, OUTPUT); } // the loop() method runs over and over again, // as long as the Arduino has power void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); // wait for a second }
  • 62. The Arduino C++ Main Program int main(void) { init(); setup(); for (;;) loop(); return 0; }
  • 63. Arduino Serial I/O   Communication with PC via USB serial line   Use the Serial Monitor in the IDE   Or set up a C or Java (or you-name-it) interface   Example Serial library calls   Serial.begin(baud-rate)   9600 default   Serial.println(string)   int foo = Serial.read()   Read one byte (input data is buffered)   See documentation for more