Programming Attiny2313 With Arduino Uno

  • Upload
    corerio

  • View
    170

  • Download
    2

Embed Size (px)

DESCRIPTION

Attiny 2313 Arduino

Citation preview

  • 27/4/2014 Programming Attiny2313 with Arduino Uno

    http://www.ernstc.dk/arduino/2313.htm 1/4

    Programming Attiny2313 with Arduino Uno

    The 2313 processor is a 20 pin chip with 17 I/O pins, it do not have a ADC (analog/digital converter)It can be configured to run at 1 MHz and 8 MHz without External Crystal/Resonator

    A comparison of the Tiny-family

    2313 pinout Connection to Arduino

    Download the Tiny-core here: code.google.com/p/arduino-tiny/ Follow the instructions in the readme.txt file

    Connect your Arduino to the Attiny according to the picture to the right

    connection to Arduino:

    Arduino Attiny2313

    13 19 PB7/SCK

  • 27/4/2014 Programming Attiny2313 with Arduino Uno

    http://www.ernstc.dk/arduino/2313.htm 2/4

    12 18 PB6/MISO

    11 17 PB5/MOSI

    10 1 PA2/Reset

    5v 20 VCC

    GND 10 GND

    Upload the ArduinoISP to the Arduino dont't connect the capacitor yet.More information on this stepNote: the ArduinoISP has some issues in ver. 1.00See this fix for a solutionConnect a 10 F capacitor from reset to ground on the arduino (negative side to ground)If you are using a Duemilanove use a 120 ohm resistor from reset to VccOpen the blink sketch from the examples->Basic->BlinkSelect Attiny2313: Tools->Board-> Attiny2313@1MHZSelect ArduinoISP: Tools->Programmer->Arduino as ISPUpload your sketch: Select File->Upload using programmerConnect a LED with resitor to pin PB4 (physical pin 16)Now you should have a blinkining Led on your Attiny 2313

    Note the factory default is 1MHz, if you want to run it @ 8MHz, use: burn bootloader.

    Select board -> Attiny2313@8MHZSelect ->Tools->Programmer->Arduino as ISPselect ->Tools->Burn Bootloader

    Note: this step do not burn a bootloader to your chip, it is only used to set the fuses to another clock-speed.

    When you use it in your project, it will be a good idea to connect A 0.1 uF across VCC and GND as close to the processor as possible, and a 10 K ohm resistor from RESET to VCC.

    Communication with Attiny2313

    It is always nice to be able to get debug information from your tiny. On an Arduino you are used to use Serial.print() for this purpose.Luckily you can use this on Attiny as well.Actually you have more options:

    TinyDebugSerial - comes with the core files (only output from attiny)

    SoftwareSerial - use the SoftwareSerial library (Input/output attiny)

    TinyKnockbang - use TinyISP(only output fram attiny)

    RELAY_SERIAL - use TinyISP(Input/output attiny)

    A more detailed explanation: here

    A solution for the missing ADC

    Atmel has some application notes on how to make a cheap ADC, using the comparator On the Attiny2313. For example:http://www.atmel.com/Images/doc0942.pdf

    Sadly they don't provide any programming examples. But I recently found an easy solutionhttp://learn.adafruit.com/photocells/using-a-photocell

    The sketch in the buttom of this page use a digitalRead() to measure the time in a rc-network.

    In the example they use a photoresistor, but you can substitute this with a potentiometer.I tried it With a 10 kOhm potmeter and a 0.1uF capacitor, which gave me readings between 0 and 600In the sketch PIN 2, is PD2 on Attiny2313 - physically pin #4

    Physical/logical pin numbers.F.ex. pin 13 in the blink example is the physical pin 16See the cheet sheet

  • 27/4/2014 Programming Attiny2313 with Arduino Uno

    http://www.ernstc.dk/arduino/2313.htm 3/4

    // ATMEL ATTINY2313

    //

    // +-\/-+

    // (D 17) PA2 1| |29 VCC

    // RX (D 0) PD0 2| |19 PB7 (D 16)

    // TX (D 1) PD1 3| |18 PB6 (D 15)

    // (D 2) PA1 4| |17 PB5 (D 14)

    // (D 3) PA0 5| |16 PB4 (D 13)*

    // INT0 (D 4) PD2 6| |15 PB3 (D 12)*

    // INT1 (D 5) PD3 7| |14 PB2 (D 11)*

    // (D 6) PD4 8| |13 PB1 (D 10)

    // *(D 7) PD5 9| |12 PB0 (D 9)

    // GND 10| |11 PD6 (D 8)

    // +----+

    //

    // * indicates PWM port

    Coding Badly's ArduinoTinyISP

    Avrdude tutorial

    Avrdude, when using ArduinoISPavrdude -P COM20 -b 19200 -p t2313 -c avrispUpload using TinyISP-p attiny2313 -c stk500v1 -P COM3 -b19200 -Uflash:w:Blink.hex:i

    Links regarding Attiny 2313 and Attiny85

    IR-library for the Tiny's

    38 KHz timers ATtiny84/85

    Using the reset pin, and HV programmer

    Optiboot 8Mhz

    Arduino as ISP (ver 1.0) changes in sketch

    Reducing baud rate in Arduino 1.0

  • 27/4/2014 Programming Attiny2313 with Arduino Uno

    http://www.ernstc.dk/arduino/2313.htm 4/4

    Pin numbers

    missing entry in avrdude.conf

    Issues Arduino 1.0

    Programming the Att2313 with Duemillanove

    Using Arduino as seriel/USB controller

    Tiny core release

    About TinyTuner

    Arduino as ISP (Playground)

    Disabling reset

    PeterVH Leonardo as ISP

    Software serial receaive only

    Arduino 1.0 and ISP not working

    NG timer - PWM attiny85

    Fix for Tiny > 4kb

    AREF on attiny's

    Attiny85 Remote control

    ISP Attiny85

    38Khz timer 84/85

    Sleep demo code

    TinyTuener2

    Tom Carpenters Tiny Core

    Coding Badly experimently Tiny Core

    Tiny13 and KnockBang

    Tiny core and version 1.5

    Servo library for Tiny (by tylernt)

    Other Arduino links:

    Standalone Arduino

    Standalone Nick Gammon, and chip-detector

    Standalone Arduino 8mhz bootloader

    Nick Gammon fuse calculator

    ArduinoToBreadboard

    More Standalone Arduino

    328 vs 328p

    Level shifting (SD Card)

    PWM frequence Library

    LM317 as LED driver

    IR 38 khz generating

    Disassemble Arduino code