Mcu-notes-01
		
		
		
		
		
		Jump to navigation
		Jump to search
		
		
	
Presentation Notes for the Microcontroller Introduction at Westlakes Amateur Radio Club
Data sheets
- Datasheets Link to various datasheets
 
Hardware setup:
- connection diagram
 - batch/script files
 - avrdude
 
Avrdude program script
- Windows
 
@echo off set PROJECT=blinkled set SPEED=16000000UL set PORT=\\.\USBSER000 set GCC_DEVICE=attiny85 set PGM_DEVICE=t85 set PGM_PROTO=avrispv2 set GCC_OPTIMISATION=-Os set AVRTOOLS=C:\winavr-20100110\bin echo compile program avr-gcc -g %GCC_OPTIMISATION% -Wall -mcall-prologues -DF_CPU=%SPEED% -mmcu=%GCC_DEVICE% -c -o %PROJECT%.o %PROJECT%.c echo create object file avr-gcc -g %GCC_OPTIMISATION% -Wall -mcall-prologues -DF_CPU=%SPEED% -mmcu=%GCC_DEVICE% %PROJECT%.o -o %PROJECT%.obj echo convert object file to hex file avr-objcopy -R .eeprom -O ihex %PROJECT%.obj %PROJECT%.hex echo write program to chip avrdude -F -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -U flash:w:%PROJECT%.hex echo avr-list output: echo ---------------- %AVRTOOLS%\avr-size -C --mcu=%GCC_DEVICE% %PROJECT%.obj > %PROJECT%_avr-size.txt type %PROJECT%_avr-size.txt pause
- Linux
 
Demo Programs for the ATtiny85:
- Blink led
 
/*
  Demo program: blinkled.c
  This program continously loops, bringing PB4 high and low with one-second intervals. 
 
                        ATtiny85
               
                       +--- ---+
          (RST)   PB5 -|1 |_| 8|- VCC 
                  PB3 -|2     7|- PB2    (SCK)          
    +---|<|------ PB4 -|3     6|- PB1    (MISO)         
    |   led   +-- GND -|4     5|- PB0    (MOSI)
    |         |        +-------+
    +--/\/\/--+
        1k
   Pololu programming cable pinout (top view)
                          +---+
    ----------------  gnd |o o| rst
    ribbon cable     mosi |o o| sck
    -----red--------  vdd |o o| miso
                          +---+
    NOTE: The T85 must be externally powered with 5V (4.5V does NOT work!)
          A t85 driving a standard 2x16 LCD without backlit LED on draws
          about 8.5mA so with 100mA to spare on a USB port you could consider
          grabbing 5V from the Pololu programmer. The 5V pin on the 
          programmer is labeled: 'VBUS (+5V)'
*/
#include <avr/io.h>
#include <util/delay.h>
#define LED PB4    // Define ext led pin on PB4
#define OUTPUT 0
#define INPUT  1
#define LOW    0
#define HIGH   1
void pinMode(int pin,int state)
{ 
  if (state == OUTPUT)
  {
    (DDRB |= (1 << pin)); 
  } else { 
    (DDRB &= ~(1 << pin)); 
  }
} 
void digitalWrite(int pin, int state)
{
  // make sure port is set to output
  DDRB |= (1 << pin);
  if (state == HIGH)
  { 
    (PORTB |= (1 << pin)); 
  } else {
    (PORTB &= ~(1 << pin));
  }
} 
int main( void ) 
{
  pinMode(LED,OUTPUT);    // Set output direction on LED 
  while ( 1 ) 
  {
      digitalWrite (LED,HIGH);
      _delay_ms(1000);
      digitalWrite (LED,LOW);
      _delay_ms(1000);
  }
  return 0;
}
- Read push button state
 - Analog to Digital
 - PWM (pulse width modulation)
 
Web links:
(AVR)
- http://www.atmel.com/products/microcontrollers/avr/default.aspx Atmel 8 and 32-bit microcontrollers
 - http://www.pololu.com/catalog/product/1300 Pololu, a basic USB-based AVR ISP Programmer
 - http://winavr.sourceforge.net/ WinAVR, AVR-GCC for Windows
 - http://www.nongnu.org/avrdude/ AVRdude, ROM downloader/updater
 - http://www.engbedded.com/fusecalc AVR Fuse Byte calculator
 - http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/ ATtiny fuse byte resetter
 - http://www.arduino.cc/ Arduino, prototyping platform
 - http://www.avrfreaks.net/ AVRfreaks, forum for Atmel microcontrollers
 
(Other)
- http://www.raspberrypi.org/ Raspberry Pi, ARM-based Single Board Computer (SBC)
 - http://www.sparkfun.com/ Sparkfun, USA-based electronics store
 - http://littlebirdelectronics.com/ Littlebird Electronics, reseller (and more) for Sparkfun products
 - http://www.robotgear.com.au RobotGear, reseller (and more) for Sparkfun products and Pololu programmer
 - http://www.diptrace.com/ Diptrace, printed circuit board (PCB) design software
 - http://oshpark.com/ OSH Park (previously dorkbotpdx), inexpensive manufacturer for low-volume PCB prototyping
 - http://www.gabotronics.com/development-boards/xmega-xprotolab.htm XprotoLab, a tiny oscilloscope and wave form generator (AWG)