Docstoc

MICROCONTROLLERS

Document Sample
MICROCONTROLLERS Powered By Docstoc
					MICROCONTROLLERS




          Developed by:
          Krishna Nand Gupta
             Prashant Agrawal
               Mayur Agarwal
What's a Microcontroller? 
You may know what an OR gate is. An OR gate is a logic gate that takes two inputs and controls 
an  output.  You  may  have  played  with  these  types  of  gates,  even  possibly  a  DIP  packaged  OR 
gate  with  4  OR  gates  built  into  it.  This  DIP  package  required  a  power  pin  and  a  ground  pin. 
Electricity flowed through the IC and allowed it to operate. You may not be sure how the IC was 




                                                                                             m
built, but you understand that if you change the inputs, the output changes. You can do this by 
tying  the  inputs  to  either  power  (also  known  as  VCC)  or  ground  (GND).   You  probably  played 




                                                                                co
with one of the DIP ICs in a breadboard. If any of this is completely alien to you, don't fret! We'll 
try to ease you into it. 

A microcontroller is the same as an OR gate. You have some inputs, you have outputs. The crazy 




                                                                      o.
thing  is  that  a  micro  runs  code.  Machine  code  to  be  specific.  For  instance,  with  a  little  bit  of 
work,  you  can  monitor  the  input  of  two  pins  A  and  B.  And  based  on  those  inputs,  you  can 




                                                ob
control an output pin C. So to replicate an OR gate: 

           if (A == 1 || B == 1)  
           { 
           C = 1;  
                                               R
           } 
           else 
                           n
           {  
           C = 0; 
                        io

           } 
It's C code! You can code up all sorts of different applications, compile code, and load it onto a 
                     is


micro,  power  the  micro,  and  the  code  runs.  Very  simple!  Microcontrollers  are  used  in  all  the 
electronics  you  take  for  granted  such  as  your  microwave,  TV  remote,  cell  phone,  mouse, 
          .V



printer, there's over 150 microcontrollers embedded into new cars! There's one waiting for you 
to  depress  the  brakes  (BRAKES  ==  1)  and  for  the  tires  to  lock  up  (LOCK_UP  ==  1).  When  this 
happens, the micro releases the brakes, and you have ABS (anti‐lock brake system).  
 w




In the old days, microcontrollers were OTP or one‐time‐programmable meaning you could only 
w




program the micro once, test the code, and if your code didn't work, you threw it out and tried 
again.  Now  micros  are  'flash'  based  meaning  they  have  flash  memory  built  inside  that  allows 
their code to be written and rewritten thousands of times. I've been programming micros for 
w




years  and  always  burn out  the  microcontroller  far  before  I  hit  the  limit  of  flash  programming 
cycles.  

Flash  micros  are  different  than  computers  and  RAM.  Computers  require  tons  of  power  and 
components to get up and running. Computers run HOT. Computers take forever and a day to 
boot. Micros are on and running code within milliseconds and if they're warm enough you can 
feel heat coming off of them, something is very wrong and you've probably blown the micro. 
Oh ‐ and micros cost about 100. 

Now back to that OR gate IC. It had a bunch of pins, all dedicated to being either and inputs or 
outputs  of  the  various  built‐in  OR  gates  (4  gates  in  one  package  =  8  inputs,  4  outputs,  2 




                                                                                        m
power/GND  pins).  14  pins  of  fun.  Now  with  a  micro,  the  most  basic  pin  function  is  GPIO  ‐ 
general  purpose  input/output.  These  GPIO  pins  can  be  configured  as  and  input  or  an  output 
cool. Each input pin can be monitored and acted upon.  




                                                                            co
Example: 
          if (PORTC.2 == 1) 




                                                                  o.
          then do something... 
Each output pin can be pushed high or low.  Example:




                                              ob
          while(1) 
          { 
          RB3 = 1; 
          delay_ms(1000); 
                                             R
          RB3 = 0; 
          delay_ms(1000); 
                          n
          } 
                       io

Guess what that code does? It toggles a pin high/low every 2 seconds. Fancy right? This is the 
'Hello World' of the microcontroller world. It seems trivial, but by god when you've been trying 
to  get  a  micro  up  and  running  after  5  hours  of  tearing  your  hair  out  and  you  see  that  LED 
                    is


blinking for the first time, it's just glorious!  
         .V



There are several microcontrollers in market. We have chosen the ATmega8 as the learning IC of
choice. Why?

    •
 w




        8 MIPs (million instructions per second!) is powerful enough to do some really cool
        projects
    •   It is an ISP (In System Programmable) device. It means programming (Burning) of
w




        ATmega8 IC can be done without removing it from the system.
        Note: Programming (Burning) of a microcontroller means transferring the code from
w




        computer to microcontroller. We will explain burning later. It’s cheap currently
    •   It's got all the goodies under the hood (UART, SPI, I2C, ADC, internal osc, PWM, etc)
    •   4K of program memory is enough for almost any beginner project
    •   The tools are free! (C compilers for many of the other micros cost a lot of money)
    •   The programming and debugging tools are low cost (900 will get you started)
With a little work and probably 1000 worth of parts, you too can get an LED blinking. As with
any new, the extra cost of 'goodies' can grow very quickly.

You want to play microcontrollers today? 

With any IC, you need to power the thing. There are two power connections on basic micros: 
VCC and GND. What the heck is VCC? This is the label for the positive voltage. Don't worry, after 




                                                                                        m
a few days of this, seeing 'VCC' will become very normal. GND is short for ground. All electrical 
current  needs  a  way  to  flow  back  to  ground.  This  can  be  called  'common'  but  is  often  just 




                                                                           co
labeled GND.  

There are thousands of different micros out there, but 5V (five volts) is the typical VCC. 3.3V is 
also typical but you'll also see 2.8V and 1.8V VCCs on more exotic micros. For now, just worry 




                                                                  o.
about 5V and GND. 

Pin diagram of ATMega8L 




                                             ob
                          n                 R
                       io
                    is
         .V
 w
w




                                                                                           
Basic hardware connections of ATmega8 
w




Pin 1 (Reset):
         When this pin is pulled low microcontroller get reset. Reset mean code start executing 
from start. In normal mode of execution it should have at least 2.7V. Thus it is connected to +5 
volts  through  10k  ohm  resistance.  make  sure  voltage  on  reset  pin  it  should  be  above  2.7  for 
proper execution of code. 
Pin 7 and 20 (Vcc):
          Pin 7 and 20 ae connected to Power supply. (2.7 to 5.5 volt for ATmega8L) 
Pin 8 and 22 (Ground):
          Pin  8  and  22  are  connected  to  Ground.  Ground  must  be  common  to  for  the  entire 
circuit. 




                                                                                    m
                                                                        co
       
       
     Make sure Ground and Vcc does not get interchanged and Vcc should not exceed
       
      5.5 V. If you connect supply wrongly, ATmega8 will suffer permanent damage.




                                                              o.
  
Input and Output Ports




                                           ob
       • In ATmega8 we have three I/O (input/output) ports. Port B, Port C, Port D. 
       • Any pin can be configured as input or output pin by software independent of other 
          pins.  
 
                                          R
    We are using Port B pins (PB0 to PB3) as output pins because at pinPB1 and PB2
          we have on-chip PWM output that can control the speed of motors. 
   
                         n
                 Pin              PORT            Connection                  PWM 
                      io

                 14               PB0             Negative of right           NO 
                 15               PB1             Positive of right           YES 
                   is


                 16               PB2             Positive of Left            YES 
                 17               PB3             Negative of Left            NO 
          .V



 
Thus we can use Port C or Port D or remaining Pins of Port B as input. But we are using ADC in 
put and only port C has got ADC so for input we will be using port C only. 
    w
w
w

				
DOCUMENT INFO