狠狠撸

狠狠撸Share a Scribd company logo
Lecture 6 – Introduction to the
ATmega328 and Ardunio
C S E P567
Outline
? Lecture 6
? ATmega architecture and instruction set
? I/O pins
? Arduino C++ language
? Lecture 7
? ControllingTime
? Interrupts andTimers
? 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
? O n 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)
? T
emporary 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 MemoryAddressing
Addressing Modes
? IJMP
,ICALL – Indirect program memory addressing
Addressing Modes
? RJMP
,RCALL – Relative program memory addressing
Arithmetic Instructions
Logical Instructions
J um p 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
? PO RTx – Pin output value
? Writing this register sets value of pin
Pin Circuitry
Pin Input
DDRx = 0
off
PO RTx
PINx
Synchronization Timing
? Note:Takes a clock cycle for data output to be reflected
on the input
Pin Output
DDRx = 1
on
PO RTx
PINx
Pin Input – PORT controls pullup
DDRx = 0
off
PO RTx
PINx
I/O Ports
? Pullups
? If a pin is an input (DDRxi = 0):
? PO RTxi = 0 – pin is floating
? PO RTxi = 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.pptx
Arduino Digital and Analog I/O Pins
? Digital pins:
? Pins 0 – 7: PORT D [0:7]
? Pins 8 – 13:PO RT B [0:5]
? Pins 14 – 19:PORT C [0:5] (Arduino analog pins 0 – 5)
? digital pins 0 and 1 are RX andTX 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 O UTPUT 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 PO RTx 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/O s
? USART
? PCI
Reading and Writing Pins Directly
? O nly one pin can be changed using theArduino 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);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
// set the LED on
// wait for a second
// set the LED off
// 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
Ad

Recommended

PDF
Lecture6
Mahmut Yildiz
?
PDF
AVR arduino dasar
Oktaf Kharisma
?
PPTX
Microcontroller
Spitiq
?
DOCX
Avr report
NITISH KUMAR
?
PPTX
MICROCONTROLLER.pptx
fiqrie mohd
?
PPTX
Unit 4 Introduction to Microcontrollers.pptxUnit-3 IO Interfacing-1.pptximpor...
mandakalyan811
?
PPTX
teststststststLecture_3_2022_Arduino.pptx
ethannguyen1618
?
PPTX
arduinoedit.pptx
rajalakshmi769433
?
PPTX
Presentation
Abhijit Das
?
PPT
Chp4 introduction to the pic microcontroller copy
mkazree
?
PDF
The document provides an overview of the Arduino platform for beginners.
QucngV
?
PPTX
unit-2.pptx
KanchanThory
?
PPTX
Arduino Foundations
John Breslin
?
PPTX
Pentium processor
Pranjali Deshmukh
?
PPT
Microcontroller 8051 gs
Moorthy Peesapati
?
PPTX
Chp 2 and 3.pptx
SangeetaTripathi8
?
PPTX
Arduino Programming
Dr Karthikeyan Periasamy
?
PPTX
Arduino . .
dryazhinians
?
PPTX
Arduino intro.pptx
SanthanaMari11
?
PPT
01 Intro to the Arduino and it's basics.ppt
pindi2197
?
PDF
8051 microcontroller
Thirunavakkarasu kannusamy
?
PPTX
1st unit - microcontroller architechture and pin diagram
gokikayal1998
?
PPT
Microcontroller 8051
Sadiq Rahim
?
PPT
Embedded systems, 8051 microcontroller
Amandeep Alag
?
PPT
Microcontroller 8051 By Mitesh kumar
Mitesh Kumar
?
PPSX
Arduino by yogesh t s'
tsyogesh46
?
PPTX
Rig nitc [autosaved] (copy)
Aravind E Vijayan
?
PPTX
003404788(1).pptx
KamalZeghdar
?
PPTX
Chapitre 3 Modbus.pptx
KamalZeghdar
?

More Related Content

Similar to Lecture6.pptx (20)

PPTX
Presentation
Abhijit Das
?
PPT
Chp4 introduction to the pic microcontroller copy
mkazree
?
PDF
The document provides an overview of the Arduino platform for beginners.
QucngV
?
PPTX
unit-2.pptx
KanchanThory
?
PPTX
Arduino Foundations
John Breslin
?
PPTX
Pentium processor
Pranjali Deshmukh
?
PPT
Microcontroller 8051 gs
Moorthy Peesapati
?
PPTX
Chp 2 and 3.pptx
SangeetaTripathi8
?
PPTX
Arduino Programming
Dr Karthikeyan Periasamy
?
PPTX
Arduino . .
dryazhinians
?
PPTX
Arduino intro.pptx
SanthanaMari11
?
PPT
01 Intro to the Arduino and it's basics.ppt
pindi2197
?
PDF
8051 microcontroller
Thirunavakkarasu kannusamy
?
PPTX
1st unit - microcontroller architechture and pin diagram
gokikayal1998
?
PPT
Microcontroller 8051
Sadiq Rahim
?
PPT
Embedded systems, 8051 microcontroller
Amandeep Alag
?
PPT
Microcontroller 8051 By Mitesh kumar
Mitesh Kumar
?
PPSX
Arduino by yogesh t s'
tsyogesh46
?
PPTX
Rig nitc [autosaved] (copy)
Aravind E Vijayan
?
Presentation
Abhijit Das
?
Chp4 introduction to the pic microcontroller copy
mkazree
?
The document provides an overview of the Arduino platform for beginners.
QucngV
?
unit-2.pptx
KanchanThory
?
Arduino Foundations
John Breslin
?
Pentium processor
Pranjali Deshmukh
?
Microcontroller 8051 gs
Moorthy Peesapati
?
Chp 2 and 3.pptx
SangeetaTripathi8
?
Arduino Programming
Dr Karthikeyan Periasamy
?
Arduino . .
dryazhinians
?
Arduino intro.pptx
SanthanaMari11
?
01 Intro to the Arduino and it's basics.ppt
pindi2197
?
8051 microcontroller
Thirunavakkarasu kannusamy
?
1st unit - microcontroller architechture and pin diagram
gokikayal1998
?
Microcontroller 8051
Sadiq Rahim
?
Embedded systems, 8051 microcontroller
Amandeep Alag
?
Microcontroller 8051 By Mitesh kumar
Mitesh Kumar
?
Arduino by yogesh t s'
tsyogesh46
?
Rig nitc [autosaved] (copy)
Aravind E Vijayan
?

More from KamalZeghdar (7)

PPTX
003404788(1).pptx
KamalZeghdar
?
PPTX
Chapitre 3 Modbus.pptx
KamalZeghdar
?
PPTX
cour PIC16F877.pptx
KamalZeghdar
?
PPT
2_Unit1_1-1.ppt
KamalZeghdar
?
PDF
cours-gratuit.com--pas-a-pas-vers-l-assembleur-par-lord-noteworthyid045.pdf
KamalZeghdar
?
PDF
cours-gratuit.com--system1id048.pdf
KamalZeghdar
?
PDF
cours-gratuit.com--pas-a-pas-vers-l-assembleur-par-lord-noteworthyid045.pdf
KamalZeghdar
?
003404788(1).pptx
KamalZeghdar
?
Chapitre 3 Modbus.pptx
KamalZeghdar
?
cour PIC16F877.pptx
KamalZeghdar
?
2_Unit1_1-1.ppt
KamalZeghdar
?
cours-gratuit.com--pas-a-pas-vers-l-assembleur-par-lord-noteworthyid045.pdf
KamalZeghdar
?
cours-gratuit.com--system1id048.pdf
KamalZeghdar
?
cours-gratuit.com--pas-a-pas-vers-l-assembleur-par-lord-noteworthyid045.pdf
KamalZeghdar
?
Ad

Recently uploaded (20)

PPTX
Attendance Presentation Project Excel.pptx
s2025266191
?
PDF
Allotted-MBBS-Student-list-batch-2021.pdf
subhansaifi0603
?
PPTX
Daily, Weekly, Monthly Report MTC March 2025.pptx
PanjiDewaPamungkas1
?
PPTX
Indigo_Airlines_Strategy_Presentation.pptx
mukeshpurohit991
?
PPTX
Presentation by Tariq & Mohammed (1).pptx
AbooddSandoqaa
?
DOCX
The Influence off Flexible Work Policies
sales480687
?
PPTX
美国毕业证范本中华盛顿大学学位证书颁奥鲍学生卡购买
Taqyea
?
PPSX
PPT1_CB_VII_CS_Ch3_FunctionsandChartsinCalc.ppsx
animaroy81
?
PPT
Reliability Monitoring of Aircrfat commerce
Rizk2
?
PPTX
最新版美国约翰霍普金斯大学毕业证(闯贬鲍毕业证书)原版定制
Taqyea
?
PDF
Boost Business Efficiency with Professional Data Entry Services
eloiacs eloiacs
?
PPTX
英国毕业证范本利物浦约翰摩尔斯大学成绩单底纹防伪尝闯惭鲍学生证办理学历认证
taqyed
?
PPTX
ppt somu_Jarvis_AI_Assistant_presen.pptx
MohammedumarFarhan
?
PDF
Prescriptive Process Monitoring Under Uncertainty and Resource Constraints: A...
Mahmoud Shoush
?
PDF
presentation4.pdf Intro to mcmc methodss
SergeyTsygankov6
?
PPTX
PPT2 W1L2.pptx.........................................
palicteronalyn26
?
PPTX
Mynd company all details what they are doing a
AniketKadam40952
?
PDF
Microsoft Power BI - Advanced Certificate for Business Intelligence using Pow...
Prasenjit Debnath
?
PPTX
UPS and Big Data intro to Business Analytics.pptx
sanjum5582
?
PDF
Residential Zone 4 for industrial village
MdYasinArafat13
?
Attendance Presentation Project Excel.pptx
s2025266191
?
Allotted-MBBS-Student-list-batch-2021.pdf
subhansaifi0603
?
Daily, Weekly, Monthly Report MTC March 2025.pptx
PanjiDewaPamungkas1
?
Indigo_Airlines_Strategy_Presentation.pptx
mukeshpurohit991
?
Presentation by Tariq & Mohammed (1).pptx
AbooddSandoqaa
?
The Influence off Flexible Work Policies
sales480687
?
美国毕业证范本中华盛顿大学学位证书颁奥鲍学生卡购买
Taqyea
?
PPT1_CB_VII_CS_Ch3_FunctionsandChartsinCalc.ppsx
animaroy81
?
Reliability Monitoring of Aircrfat commerce
Rizk2
?
最新版美国约翰霍普金斯大学毕业证(闯贬鲍毕业证书)原版定制
Taqyea
?
Boost Business Efficiency with Professional Data Entry Services
eloiacs eloiacs
?
英国毕业证范本利物浦约翰摩尔斯大学成绩单底纹防伪尝闯惭鲍学生证办理学历认证
taqyed
?
ppt somu_Jarvis_AI_Assistant_presen.pptx
MohammedumarFarhan
?
Prescriptive Process Monitoring Under Uncertainty and Resource Constraints: A...
Mahmoud Shoush
?
presentation4.pdf Intro to mcmc methodss
SergeyTsygankov6
?
PPT2 W1L2.pptx.........................................
palicteronalyn26
?
Mynd company all details what they are doing a
AniketKadam40952
?
Microsoft Power BI - Advanced Certificate for Business Intelligence using Pow...
Prasenjit Debnath
?
UPS and Big Data intro to Business Analytics.pptx
sanjum5582
?
Residential Zone 4 for industrial village
MdYasinArafat13
?
Ad

Lecture6.pptx

  • 1. Lecture 6 – Introduction to the ATmega328 and Ardunio C S E P567
  • 2. Outline ? Lecture 6 ? ATmega architecture and instruction set ? I/O pins ? Arduino C++ language ? Lecture 7 ? ControllingTime ? Interrupts andTimers ? Lecture 8 ? Guest lecture – Radio communication ? Lecture 9 ? Designing PID Controllers
  • 4. AVR Architecture ? Clocks and Power ? Beyond scope of this course
  • 5. AVR Architecture ? CPU ? Details coming
  • 6. AVR Architecture ? Harvard architecture ? Flash – program memory ? 32K ? SRAM – data memory ? 2K ? EEPROM ? For long-term data ? O n 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) ? T emporary 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
  • 15. Addressing Modes ? Direct I/O 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
  • 25. Simple 2-Stage Pipeline ? Branch/Skip??
  • 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 MemoryAddressing
  • 28. Addressing Modes ? IJMP ,ICALL – Indirect program memory addressing
  • 29. Addressing Modes ? RJMP ,RCALL – Relative program memory addressing
  • 32. J um p 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 ? PO RTx – Pin output value ? Writing this register sets value of pin
  • 46. Pin Input DDRx = 0 off PO RTx PINx
  • 47. Synchronization Timing ? Note:Takes a clock cycle for data output to be reflected on the input
  • 48. Pin Output DDRx = 1 on PO RTx PINx
  • 49. Pin Input – PORT controls pullup DDRx = 0 off PO RTx PINx
  • 50. I/O Ports ? Pullups ? If a pin is an input (DDRxi = 0): ? PO RTxi = 0 – pin is floating ? PO RTxi = 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:PO RT B [0:5] ? Pins 14 – 19:PORT C [0:5] (Arduino analog pins 0 – 5) ? digital pins 0 and 1 are RX andTX 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 O UTPUT 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 PO RTx 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/O s ? USART ? PCI
  • 58. Reading and Writing Pins Directly ? O nly one pin can be changed using theArduino 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); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } // set the LED on // wait for a second // set the LED off // 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