0% found this document useful (0 votes)
122 views13 pages

Uc Crash Course

This document provides an overview of various topics related to microcontrollers, including: 1) ESD safety precautions and examples of ESD damage. 2) Choosing between a microcontroller and microprocessor based on factors like external connections, processing power, size, and electrical power requirements. 3) Key components of microcontrollers like GPIO, timers that can generate PWM signals, and ADCs for digitizing analog signals.

Uploaded by

bharatvishnu
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
122 views13 pages

Uc Crash Course

This document provides an overview of various topics related to microcontrollers, including: 1) ESD safety precautions and examples of ESD damage. 2) Choosing between a microcontroller and microprocessor based on factors like external connections, processing power, size, and electrical power requirements. 3) Key components of microcontrollers like GPIO, timers that can generate PWM signals, and ADCs for digitizing analog signals.

Uploaded by

bharatvishnu
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

uP Crash Course 2/10/2009

uC Crash Course

Joshua Childs
Joshua Hartman

What is covered in this lecture

ESD
Choosing g A Processor
• GPIO
• USARTS
o RS232
o SPI
• Timers
o Prescalers
o OCR
o ICR
o PWM
• ADC
• Interrupts

1
uP Crash Course 2/10/2009

ESD KILLS!

• Always be cautious of ESD warnings


• Some chipsp are more sensitive then others
• Use a ESD strap and mat
• If none are available touch a large grounded object
Pictures:
commons.wikimedia.org
www.ultrastatinc.com

ESD Damage Example

bunniestudios.com/blog/images/ams1117_esd_lg.jpg

2
uP Crash Course 2/10/2009

Microcontroller vs. Microprocessor

Choosing a Microcontroller

• External connections
o GPIO
o ADC
o USARTS
• Processing Power
o is 8 bits enough?
• Chip size
o DIP or surface mount
• Electrical
El t i l P Power
o This is based on the power source

3
uP Crash Course 2/10/2009

Choosing a Microcontroller
• AVR - Atmel
• Popular processor
• Lots of support at UF
• AVR Studio
• Programmer ~$17 (University Program)
•Microchip - PIC
• Comparable to Atmel
• Can be programmed in Basic
• Free Samples
• Programmer ~$35
•TI -MSP
MSP 430
• Low power
• Steeper learning curve
• Free Samples
• Programmer ~$50 (University Program)

Choosing a Microprocessor

•Propeller
• Multicore processor
p
• Prebuilt functions for audio and video
•Freescale - Coldfire
• 32 bit processor
• Steep Learning Curve
•Freescale - ARM
• 32 bit processor
• Steep
St Learning
L i C Curve
•NIOS
• Softcore processor
• Contained in Altera FPGA
• Custom Opcodes

4
uP Crash Course 2/10/2009

Choosing a clock speed

Determine your processing power


p
• Special timing
g requirements
q
o USART
ƒ Consult table in datasheet
o Real Time clock
• Do you need a external crystal?
o Atmel needs an external crystal for more then 8 MHz

Choosing a chip package

• Don't Fear surface mount components


o See the TA's or Mike for soldering
g help
p
• DIP package
o Can be used on protoboard
o Excessively large package
• Surface Mount
o Space efficient
o requires PCB
• BGA
o balls on bottom of package
o harder to install

5
uP Crash Course 2/10/2009

GPIO

• Ports are typically 8bits mapped to one memory address


• Atmel
o Use DDRx to set data direction
ƒ 0 is input
ƒ 1 is output
ƒ PIC is reversed
o Use PORTx to write a port
o Use PORTx to enable pull up
o Use
U PINx
PIN tot readd a portt
• Low source/sink current
o External device may be used for high current

Atmel Timer/Counters

•What is a timer/counter?
y
• It's a timer that counts based on the system clock
• Can be used to toggle a pin (you saw this in the homework)
• Can be used to perform some activity based on time delay
• Can generate a PWM (square wave) signal. PWM is great
for driving motors.

•Atmega32 features:
• 8 bit ti
timer/counter
/ t 0
• 16 bit timer/counter 1
• 8 bit timer/counter 2

6
uP Crash Course 2/10/2009

Timer/Counter 0 Registers

• TCNT0 - The running clock


p compare
• OCR0 - Output p register
g ((things
g usually
y happen
pp
when OCR0 = TCNT0). Also used for PWM

• TCCR0 - Used to "setup" the timer/counter.


• Sets the timer speed
• Sets up the PWM mode
• Sets up Output compare

• TIMSK - The timer interrupt register. Enables overflow


interrupts and output compare interrupts
• TIFR - Timer flag register. Bits will be set upon overflow or
output compare

Setting the timer/counter speed

Bits CS02:C200 (clock select) inTCCR0

7
uP Crash Course 2/10/2009

PWM Modes
Normal Mode: Counter goes from 0 to TOP (255 for 8-bit
timers). Not super useful, but could be used for exact timing, or
long-term timing.

CTC Mode: Useful for generating very exact waveforms.

Fast PWM: Counts from 0 to TOP and then back to 0


When TCNT = OCR, the OC pin is cleared
When TCNT = BOT, the OC pin is set

Confusing to use!

Phase Correct PWM

• The best PWM mode - great for motors


• Counts from BOT to TOP then back down to BOT
• On OC match, pin is either cleared or set
• For motors, you probably want a frequency of around 10kHz
• For 75% power, just set OCR to be .75*TOP
Initialization Code:
TCCR0 = _BV(WGM01) | _WGM(00); //sets up phase-correct
PWM
TCCR0| _BV(COM01);
TCCR0|= BV(COM01) // l
//clear on up-count,
t sett on down
d
TCCR0|= _BV(CS00); //CLK = System clock/1

Using Code:
OCR0 = (uint8_t) (desiredSpeed * 0xFF);

8
uP Crash Course 2/10/2009

ADC

An analog to digital converter is used to sample and digitize


g signals.
analog g

Typical Applications:
• Audio Input
• Checking battery voltage
• Sensor- i.e.. IR range finder

Th
These devices
d i can be
b very simple
i l tot communicate
i t with
ith and
d are
usually quicker to set up than a serial device

Converts a 0-5V voltage level into a 10-bit range (0 to 1023).


You can divide things into ~.1% increments

ADC Diagram

9
uP Crash Course 2/10/2009

ADC Registers

ADCSRA:
ADEN Enables ADC
ADSC Starts conversion(s)
ADIF Conversion complete (an interrupt flag)
ADPS2:0 Divides the clock (like in the timer example)

ADMUX: A big multiplexer. Tells you which pin you want to do a


conversion on. Also lets you select voltage reference.

ADC Gotchas

Frequency must be between 50kHz - 200kHz for full resolution


13 Clock cycles
y needed for a conversion ((successive
approximation)
First conversion actually needs 25 clock cycles. Good idea to
throw away the first few.

10
uP Crash Course 2/10/2009

USART

RS-232 Communication
• Async
y or Syncy operation
p
• 5,6,7,8 or 9 data bits
• 1 or 2 stop bits
• Even, Odd or No Parity
• TTL Logic Levels
• Interrupts or polling of status registers

USART

SPI Communication
y
• Synchronous serial
• Requires 3 wires plus an enable
• Easy to connect multiple devices
• Master Operation
• 4 Modes of operation
• LSB or MSB
• High Speed

11
uP Crash Course 2/10/2009

Interrupts
TA Rule of thumb: Don't use them if you can get away with it.

Interrupts make things happen "out of order". Usually you can


get by with polling a device every so often and updating a
value. I know polling seems like a "dumb way" of doing things.
It's not.

If you really want to use them, keep the code as short as


possible.
Useful for:
• Triggering that an ADC conversion is complete
• Having an event happen on intervals based on the clock
• External Interrupts: Do something when a pin changes. This
is great if you have critical data to process
• Can tell you when tasks finish

I built a Segway and a robot. I used only one interrupt.

Debugging Tips
• Have a feedback system to verify program operation
o LCD Screen
o LED Bank
a
o Serial Output to PC
• Use the Proper test equipment
o DMM
ƒ Testing static signals and supply voltages
ƒ Will average AC signals
o Scope
ƒ Verify
V if signals
i l
ƒ Look for noise
o DMM
ƒ Verify logic levels of data
ƒ Multiple inputs

12
uP Crash Course 2/10/2009

Useful Websites

AVR-LIBC: Detailed descriptions of library files. Really useful!


http://www.gnu.org/savannah-checkouts/non-gnu/avr-libc/user-
p g g g
manual/modules.html

AVRFREAKS: Smart robot guys with an amazing forum. Will


solve all your problems
http://www.avrfreaks.net

Th datasheet.
The d t h t Google
G l for
f it.
it Read
R d it.
it Then
Th askk questions.
ti

13

You might also like