Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming the ATmega16

Similar presentations


Presentation on theme: "Programming the ATmega16"— Presentation transcript:

1 Programming the ATmega16
B. Furman 14SEP2010

2 Mechatronics Concept Map
User Interface ME 106 ME 120 Power Source Controller (Hardware & Software) ME 106 ME 190 ME 187 Power Interface ME 106 Signal Conditioning ME 106 ME 120 Actuator ME 106 ME 154 ME 157 ME 195 Sensor ME 120 ME 297A System to Control ME 110 ME 136 ME 154 ME 157 ME 182 ME 189 ME 195 BJ Furman 26JAN06

3 Audience participation required!
Recap Last Lecture Audience participation required! Binary and hex numbers Digital pins as inputs or outputs Pins are bidirectional for digital I/O DDRx (x=A, B, C, or D) register determines direction 8-bit register a ‘1’ means a ‘0’ means main_RC.c Programmer’s block #include Initialization function, init(); DDRA, DDRB, and uart_init() 1 2 3 4 5 6 7 Ask students regarding what the ‘big ideas’ were for each of the bullet items. I mentioned that the lectures will highlight the important things to know in the class. Yes, try to read all the reading assignments.

4 Test Your Comprehension
Write a statement that will make all pins of PORTC to be outputs DDRC = DDRC = 0b ; DDRC = 255; Write a statement that will make pins 5, 3, and 1 of PORTC to be outputs, and the rest inputs DDRC = 0b ; 0xFF;

5 Structure of main() Look again at main_RC.c init() printf_example()
Declaration of variables char, string, uint8_t, uint16_t, uint32_t, double printf() format string while(1) Why? PORTB = PINA; Explain what is going on as a result of this statement

6 ATmega16 Port Pin Details
See the ATmega 16 data sheet, p Port pins consist of three register (special memory location) bits: DDRx Data Direction bit in DDRx register (read/write) PORTxn PORTxn bit in PORTx data register (read/write) PINxn PINxn bit in PINx register (read only)

7 PORT Pin Schematic

8 ATmega16 Internal Architecture

9 ATmega16 Features

10 Make bits 5 and 3 of PORTB high and the rest low
Bit Manipulations Examples of how to work with Port pins Setting bits Clearing bits Toggling bits Make bits 5 and 3 of PORTB high and the rest low Challenge: Work up the example on the board, so you can sketch out the bit positions, and talk about the operators, such as left shift ( << ) and logical OR

11 Summary of Bit Manipulation
Setting a bit (making it a ‘1’) Bitwise OR the PORTx register with the corresponding bit mask Ex. PORTB | = _BV(3); Clearing a bit (making it a ‘0’) Bitwise AND the PORTx register with the corresponding complemented bit mask Ex. PORTB & = ~( _BV(3) ); Toggling a bit (making it flip) Bitwise XOR the PORTx register with the corresponding bit mask Ex. PORTB ^ = _BV(3);

12 Pull-up Resistors Pins configured as INPUTS can be ‘pulled up’ to VTG
Why is this useful? Puts an input pin in a known state (logic high) if no external influence has pulled it down (to logic low) Example of a switch connected between a pin and ground How is it done? When the pin is configured as an input, SET the corresponding bit in PORTxn Undone by clearing the bit

13 Recap ATmega16 Digital I/O
Pins are bi-directional. Can configure as: Inputs – _______ determines the pin voltage Outputs – ______ determines the pin voltage Direction determined by bits in DDRx register Where x is A – D (and corresponds to all 8 pins associated with the port) If configured as output: Program can specify a pin to be high (VTG) or low (GND) by writing a corresponding 1 or 0 (respectively) to PORTx register Ex. To make Port C pins 7, 3, and 4 low, and the rest high PORTC=___________; (write in binary, then in hex)

14 Recap ATmega16 Digital I/O, cont.
If pins configured as input, this means: External device can pull pin voltage high or low i.e. take up to VTG or take down to GND You can determine the state of the port pins by reading the PINx register Grabs all eight logic levels at the same time Ex. PORTA configured as inputs PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 VTG unsigned char a_pins; a_pins=PINA; What is the content of a_pins: binary:__________ hex:_____

15 Recap ATmega16 Digital I/O, cont.
If pins configured as input, cont.: Can turn pull-up resistors on or off by writing a 1 or 0 to corresponding pins in PORTx A pull-up resistor internally connects a pin to VTG to give it a defined state (logic high, i.e., 1) Ex. Write the code that will: Make Port A pins inputs Turn on pull-up resistors Read the voltages on the pins and store them in a variable, testA What is the value of testA in binary and hex? PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 VTG

16 Reading PORTA Pins Example
unsigned char testA; DDRA=0; testA=PINA; What is the content of testA? binary: hex: F9 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 VTG


Download ppt "Programming the ATmega16"

Similar presentations


Ads by Google