Anda di halaman 1dari 52

Conten

1. Introduction of µpt and µc


2. Introduction of 8051 µc
3. Introduction of Arduino
4. Atmega328 : Basics and internal Architecture
5. Atmega328 : Instruction Set
6. Arduino programming interface
7. Analog/Digital components and its
application with arduino
8. References
Do you know computer
organization? Arithmetic
Logic
Unit

Input Control Unit Output

Memory
- How does it work?
- Map it’s units in personal computer
– Input
Output
Memor
y ALU
Software –
System
software &
Application
software
Introduction to
Microprocessor
ARITHMATIC LOGIC MICROPROCESSO
R
UNIT

INPUT CONTROL OUTPUT


UNIT

MEMOR
Y
MICROCOMPUTE
R
Microprocessor Based
System
INPUT µP OUTPUT

MEMORY

MEMORY
INPUT
µC OUTPUT

External memory in
MEMORY addition to internal
memory may be desired
Address, Data and Control
• Bus -Bus
defined pathway for transfer of digital
information between different units.
• To write data to memory or output device.
- µp needs to send
. Address of memory location or
port address of device.
. Data
. Write control signal
• To read data from memory or Input device
- µp needs to send
. Address and
. Read Control Signal
- Memory/device sends – data.
Thus three pathways (buses) for 3 types of
digital information.
Address Bus - From µp to devices
- Unidirectional.
Data Bus - From µp to devices & devices to µp
- Bidirectional
Control - From µp to devices & from devices to
µp [Interrupt, DMA]
- Bidirectional

Now let us redraw the computer organization


diagram
Address
Bus

µp Control
Bus

I/O I/O I/O


Device Devic Device Memory
e

Data
Bus
Microcontrolle
r
A microcontroller is a complete computer system, including
a CPU, memory, a clock oscillator, and I/O on a single
integrated circuit chip. [1]

ANALO
G
INPUTS

http://www.freescale.com/files/microcontrollers/doc/ref_manual/M68HC05TB.pdf, p. 25
 General Facilities
 8 bit CPU
 On chip clock oscillator
 4 KB of ROM (Program memory)
 128 bytes RAM (Data Memory)
 21 Special Function Registers(SFR)
 32 I/O lines (Ports P0 to P3)
 64 KB address space for external data memory
 64 KB address space for program memory
2- 16 bit timer/counter
 5 source interrupt structure
Full duplex serial port
Bit addressability

Bit processing capability


MCS-51 compatible chips
8031 – Romless version
– 4KB ROM not available
8751 – EPROM version
– 4KB EPROM
• The 8051 was one of the very early
microcontrollers (~1980).

• One of the early Arduino-like project was based


on the 8051, in the form of "8052 Basic" board.

• Atmel, Mentor Graphics, Intel, Honeywell, and


Maxim (Dallas Semiconductor), and may more have
a variety of 8051 chips.
• Introduced in 2005 as a project for students at the Interaction Design
Institute Ivrea in Ivrea, Italy, Arduino is a single board
microcontroller.

• An Arduino board consists of an Atmel 8-bit AVR microcontroller with


complementary components to facilitate programming and
incorporation into other circuits [2].

• Arduino can sense the environment by receiving input from a variety


of sensors and can affect its surroundings by controlling lights,
motors, and other actuators.

• The boards can be assembled or purchased preassembled; the open-


source IDE can be downloaded for free.

• The Arduino programming language is very simple and follows C


like syntax.

• Arduino projects can be stand-alone or they can communicate with


• Other similar microcontrollers platforms are:
Parallax Basic Stamp, Netmedia's BX-24,
Phidgets, MIT's Handyboard, and many
more.

• All these platforms have an easy-to-


use package.

Why Arduino?

Arduino also simplifies the process of working


with microcontrollers, but it offers some
1. Inexpensive - Arduino boards are relatively
inexpensive compared to other microcontroller
platforms.

2. Cross-platform - The Arduino software runs on


Windows, Macintosh OSX, and Linux operating systems.
Most microcontroller systems are limited to Windows.

3. Simple, clear programming environment - The


Arduino programming environment is easy-to-use.

4. Open source and extensible software- The Arduino


software is published as open source tools. The language
can be expanded through C++ libraries.

5. Open source and extensible hardware -The Arduino is


Features 8051 Modern
Microcontrolle
rs

Execution Time 12 clock cycles/Instr. 1 clock cycle/Instr.


Architecture Harvard Harvard
Memory Internal + External (may Program memory-
compromise with Internal Data memory
security) ( Int+Ext)
Instruction Set CISC RISC
Architecture (ISA)
Port With limited functionality Fully Functional
Timer Simple PWM, Complex features
Intra Few Master/Slave SPI
Communication Serial Interface
Busses Byte-oriented 2-wire
Serial Interface (I2C)
Operating Mode Sleep Sleep, Power Down, Active
ADC NIL At least 6-channel 10-
bit ADC
WDT (Watchdog Timer) NIL Present
BOR (Brownout Reset) NIL Present
THE GOOGLE TRENDS FOR ARDUINO RELATIVE TO OTHER EMBEDDED
TERMS
ATmega328 data sheet pp. 2, 5 http://www.adafruit.com/index.php?main_page=popup_image&pID=50
Pin
Pin number
name

Special
functio
n

Note the
limitations!
p. 316 Source:http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P
High Performance, Low Power AVR® 8-Bit
Microcontroller
– Advanced RISC Architecture
– 131 Powerful Instructions – Most Single Clock Cycle
Execution
– 32 x 8 General Purpose Working Registers
– Up to 20 MIPS Throughput at 20 MHz

High Endurance Non-volatile Memory Segments


– 4/8/16/32K Bytes of In-System Programmable Flash
program
memory (ATmega48PA/88PA/168PA/328P)
– 256/512/512/1K Bytes EEPROM
– 512/1K/1K/2K Bytes Internal SRAM
http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf
Peripheral Features
– Two 8-bit Timer/Counters
– One 16-bit Timer/Counter
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 6-channel 10-bit ADC
– Programmable Serial USART
– Master/Slave SPI Serial Interface

Special Microcontroller Features


– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-
save, Power-down, Standby, and Extended Standby
I/O and Packages
– 23 Programmable I/O Lines

Operating Voltage:
– 1.8 - 5.5V for ATmega48PA/88PA/168PA/328P

Temperature Range:
– -40°C to 85°C

Speed Grade:
– 0 - 20 MHz @ 1.8 - 5.5V

Low Power Consumption at 1 MHz, 1.8V, 25°C


for ATmega48PA/88PA/168PA/328P:
– Active Mode: 0.2 mA
– Power-down Mode: 0.1 μA
– Power-save Mode: 0.75 μA
Instruction Set
Summary
Instruction Set
Summary
Instruction Set
Summary
Instruction Set
Summary
Absolute
Maximums

ATmega328 data sheet p. 316


Microcontroller Ports and
Pins
 The communication channels
through which information
flows into or out of the C

microcontroller
 Ex. PORTB
 Pins PB0 – PB7
 May not be contiguous
 Often bi-
See next slides!
directional
Port Pin Data
Directionality
• Input
– When you want to take information from the
external world (sensors) into the MCU
• Output
– When you want to change the state of something
outside
the MCU (turn a motor on or off, etc.)
• Pins default to input direction on power-up or
reset.
• Your program can set or change the directionality
of a pin at any time
ATmega328
Block
Diagram

Input

Output
Setting the Pin Data
Direction
• Arduino
– pinMode(pin_no., dir)
• Ex. Make Arduino pin 3 (PD3) an output
– pinMode(3, OUTPUT);
– pinMode(PIN_D3, OUTPUT); // with me106.h
– Note: one pin at a time
• Suppose you wanted Arduino pins 3, 5, and 7
(PD3, PD5, and PD7) to be outputs?
• Is there a way to make them all outputs at the
same
time?
Pin Used as an
Output
• Turn on an LED, which is
ATmega3
connected to pin Arduino pin 0 28
(PD0) Arduin
– What should the data o pin 0
(PD0)
direction be for pin 0 (PD0)?
• pinMode( ,
);
– Turn on the LED
• digitalWrite(0,HIGH);
– Turn off the LED
• digitalWrite(0,LOW);
Pin Used as an
Output
• Recall the question:
– Is there a way change the data direction for a set of pins
all at the same time?
• All the work of MCU happens through registers
(special memory locations)
– Registers on the Atmega328 are 8-bits wide
• The data direction register (DDRx) handles the
data directions for pins in PORTx

Source:http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P p. 93
Data Direction
• Register
If the bit is zero -> pin will be an input
– Making a bit to be zero == ‘clearing the bit’
• If the bit is one -> pin will be an output
– Making a bit to be one == ‘setting the bit’
• To change the data direction for a set of
pins belonging to PORTx at the same time:
1. Determine which bits need to be set and
cleared in DDRx
2. Store the binary number or its equivalent (in
an alternate
base, such as hex) into DDRx
Example
1
 Make Arduino pins 3, 5, and 7 (PD3, PD5,
and PD7) to be outputs
• Arduino approach • Alternate
approach
pinMode(3, OUTPUT); DDRD =
pinMode(5, 0b10101000;
OUTPUT); or
pinMode(7,
Or if me106.h is
OUTPUT); DDRD =
used:
pinMode(PIN_D3, OUTPUT); 0xA8;
pinMode(PIN_D5,
OUTPUT);
pinMode(PIN_D7,
OUTPUT);
Example
2
 Make pins Arduino pins 0 and 1 (PD0 and
PD1) inputs, and turn on the LEDs
connected to it.
• Arduino approach • Alternate
approach
pinMode(0, INPUT); DDRD = 0; / / all PORTD pins
pinMode(1, INPUT); inputs PORTD = 0b00000011;
digitalWrite(0, HIGH); or
digitalWrite(1, PORTD = 0x03;
HIGH);
Or if me106.h is
used:
pinMode(PIN_D0, INPUT);
pinMode(PIN_D1, INPUT);
digitalWrite(PIN_D0, HIGH);
digitalWrite(PIN_D1,
HIGH);
OFFICIAL
BOARDS
Arduino
Duemilanove
http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove
See the handout:
Arduino_ATmega328_pin_mapping_and_schematic

Pin 13 LED Digital pins


USB header
connecto Reset
r button

ATmega328
MCU

Barrel Analog pins


jack header

Power-ground
header
http://arduino.cc/en/uploads/Main/ArduinoDuemilanove.jpg
Arduino Uno
comms
R3
ATmega16u2 replaces FT232RL for USB-serial

http://www.adafruit.com/index.php?main_page=popup_image&pID=50

See: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq
Arduino Note: 3.3 V !!

Atmel SAM3X8E processorDue


(32 bit ARM Cortex M3 architecture,
84MHz)

http://www.adafruit.com/index.php?main_page=popup_image&pID=1076

See: http://arduino.cc/en/Main/ArduinoBoardDue
Arduino Duemilanove/Uno
Features
Microcontroller ATmega168/328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
16 KB (ATmega168) or 32 KB (ATmega328) of which 2 KB
Flash Memory
used by bootloader
SRAM 1 KB (ATmega168) or 2 KB (ATmega328)
EEPROM 512 bytes (ATmega168) or 1 KB (ATmega328)
Clock Speed 16 MHz

http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove
About Arduino
Programming
• The Arduino Duemilanove can be programmed with the
Arduino software.

• The Arduino integrated development environment (IDE)


is written in Java, and is derived from the IDE for the
Processing programming language.

• It includes a code editor with features such as syntax


highlighting, brace matching, and automatic indentation,
and is also capable of compiling and uploading programs
to the board with a single click. A program or code
written for Arduino is called a "sketch".[3]

• Arduino programs are written in C or C++.


Getting Started w/ Arduino on
Windows

1. Get an Arduino board and USB cable


2. Download the Arduino environment
3. Connect the board with PC
4. Install the drivers
5. Launch the Arduino application
6. Open the blink example
7. Select your board like UNO etc.
8. Select your serial port
9. Upload the program
Arduino Programming
Interface
Sample Program of LED
• BLINK
An arduino program == / * Blink - turns on an LED for DELAY_ON msec, then off
for DELAY_OFF msec, and repeats
‘sketch’ BJ Furman rev. 1.1 Last rev: 22JAN2011
– Must have: */
#define LED_PIN 13 / / LED on digital pin
• setup() 13 #define DELAY_ON 1000
#define DELAY_OFF 1000
• loop()
– setup() void setup()
{
• configures pin modes / / initialize the digital pin as an
and registers output: pinMode(LED_PIN, OUTPUT);
}
– loop()
• runs the main body of / / loop() method runs forever,
/ / as long as the Arduino has power
the program forever
– like while(1) {…} void loop()
{
– Where is main() ? digitalWrite(LED_PIN, / / set the LED
• Arduino simplifies things HIGH);
delay(DELAY_ON); / / wait for DELA
on Y_ON msec
digitalWrite(LED_PIN, LOW); / / set the LED off
• Does things for you delay(DELAY_OFF); / / wait for DELAY_OFF
} msec
Structure of an Arduino
Program in C
language
/ * Blink - turns on an LED for DELAY_ON msec, then off
for DELAY_OFF msec, and repeats
BJ Furman rev. 1.1 Last rev: 22JAN2011
*/
main() #define LED_PIN 13 / / LED on digital pin
13
#define DELAY_ON
{ 1000
#define DELAY_OFF
init(); 1000
void setup()
{

setup(); / / initialize the digital pin as an


output: pinMode(LED_PIN, OUTPUT);
}
while (1) / / loop() method runs forever,
loop() / / as long as the Arduino has
power

; void loop()
{
digitalWrite(LED_PIN, / / set the LED
} HIGH);
delay(DELAY_ON); / / wait for DELA
on Y_ON msec
digitalWrite(LED_PIN, LOW); / / set the LED off
delay(DELAY_OFF); / / wait for DELAY_OFF
msec
}
Various
Components
Projects Using
1.
2.
Arduino
Line follower/Path
Obstacles Avoider
follower

3. Automatic car parking


4. Driverless car
5. Quad copter
6. Water-level detection in soil
7. Surveillance System
8. Dancing/ Funny Robot
9. Smart phone Garage Door Opener
10. Intrusion alarm
11. Thermostat
12. Balance multirotor motor using arduino &
acceleromter
13. Email notifier
14. LED Matrix Control
15. Maze Solver Robot
1. http://www.freescale.com/files/microcontrollers/doc/ref_manual/M68HC0

5TB.pdf, p. 25
2. Arduino, “Avalable at http://www.arduino.cc,” 2010.
3. "Programming Arduino Getting Started with Sketches“ :
http://www.amazon.com/Programming-Arduino-Getting-Started-
Sketches/dp/0071784225/ref=sr_1_1?
s=books&ie=UTF8&qid=136449413 8&sr=1-
1&keywords=arduino+sketches). McGraw-Hill. Nov 8, 2011. Retrieved
2013-03-28.
4. C. L. Dym, A. M. Agogino, D. D. Frey, and L. J. Leifer,
“Engineering design thinking, teaching, and learning,” Journal of
Engineering Education, vol. 94, pp. 103–120, 2005. [Online].
Available:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.72.1593
5. http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega32
8
6. J. Provost, “Why the arduino won and why it’s here to stay,”
Tech.Rep.

Anda mungkin juga menyukai