Transcript AVR - UCCS
AVR
Modern
RISC architecture: Compact and FAST.
Tuned for high level languages.
Consistent architecture across entire line.
Small AVR are subsets of larger chips: Same
hardware and code works across all chips.
I/O structure reduces need for external components.
Flash based, ultra trivial downloading of code.
AVR RISC Architecture
Single
Cycle Instructions:
8mhz = 8mips.
Large register file (32).
Every register an
accumulator.
3 index register pairs
Register & IO are mapped
in SRAM space.
Typical Hardware Support
Internal or
External
Oscillator/Clock
Brown Out Detector
One or more timers
Two or more PWM
One or more USART
I2C
Real
time clock
10bit ADC
Analog Comparator
External interrupts
Pulse timing capture
EEPROM
USB/CAN/RF
Tools
Atmel Studio: IDE &
Simulator/debugger.
BASCOM: Basic compiler & IDE with
programmer.
GNU C compiler (free, very high quality).
Third party C compilers vary from cheap to very
expensive.
FLASH programmers are trivial to make.
Availability & Price
www.digikey.com has everything (single unit price):
Attiny26 (2k, ADC, USI, 2 PWM, 2 ports) $2.58
ATmega16 (16k, ADC, etc, 4 ports) $7.74
ATmega128 (128k, 6 ports, oodles of stuff) $16.34
STK500 (development board) $79
ICE200 (In circuit emulator) $100
ATAVRISP (serial programmer) $29
I/O Example: simple switch
No
external parts
Input Example: Trinary Input
Three states with
one input.
Useful way to expand IO.
Switch internal resistor on/off
to determine state of pin.
Off:
If input high, then J1-2.
On: if low, then J2-3.
On: If high, then no jumper.
Input example: Photo-detector
Schmitt trigger inputs on
all
lines.
No additional signal
conditioning needed.
Stable, well defined trip
points.
Basic circuit works well for
Quadrature encoders.
Input Example: Variable Input
Useful
for parts without ADC.
Set pin to output, low to
discharge capacitor.
Set pin to input, no pull-up.
Increment counter until input
reads 1.
Linear conversion.
Case Studies
BASCOM based
multi-tasking Minisumo code in
less than 2k
Dilbert II written with GCC in less than 6k
Gyrobot written with GCC in less than 6k
LCD
user interface
PID based motion control
Sensor tasks managing tilt, gyro and wheel encoders
R/C Tether uses variable input
(PC Joystick)
Resources
www.barello.net/ARC
www.barello.net/Papers
www.avrfreaks.net
www.mcselec.com/download_avr
www.atmel.com/
Cool projects & pages
http://www.mysunrise.ch/users/pfleury/index.html
http://instruct1.cit.cornell.edu/courses/ee476/
www.barello.net/Robots
www.egnite.de
(ethernet & web software)
www.avrfreaks.net (Academy tab, must register)