Go Down

Topic: ATTiny85 port (work in progress) (Read 14 times) previous topic - next topic

macsimski

May 25, 2010, 10:49 pm Last Edit: May 26, 2010, 09:40 am by macsimski Reason: 1
I wanted a very small arduino type chip and foud out about a soic version of the attiny85v. My aim is a chip with a pull-up resistor to the reset pin. so a internal clock on 8Mhz. the fuse settings reflect this. here is my attempt at a altered hardware folder for the arduino ide. of course you cannot use the normal upload procedure and have to use icsp to program the chip because the attiny does not have a hardware UART.

unfortunately i have had no time yet to test the files, but here is wat i deduced by looking at the original atmega168 pdf and the pins_arduino.c and pins_arduino.h files and a very good explanation of the workings from here:
http://www.urbanhonking.com/ideasfordozens/2009/05/an_tour_of_the_arduino_interna.html

So this is the changed pins_arduino.c file:

Code: [Select]

/*
 pins_arduino.c - pin definitions for the Arduino board
 Part of Arduino / Wiring Lite

 Copyright (c) 2005 David A. Mellis

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General
 Public License along with this library; if not, write to the
 Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 Boston, MA  02111-1307  USA

 $Id: pins_arduino.c 254 2007-04-20 23:17:38Z mellis $
 adapted to ATTiny85 2010-05-25 22:19:10 by swc
*/

#include <avr/io.h>
#include "wiring_private.h"
#include "pins_arduino.h"

// On the Sanguino board, digital pins are also used
// for the analog output (software PWM).  Analog input
// pins are a separate set.

// ATMEL ATTINY85
//
//                  +-\/-+
//            PB5  1|    |8  VCC
//     (AI 3) PB3  2|    |7  PB2 (AI 1)
//     (AI 2) PB4  3|    |6  PB1 PWM
//            GND  4|    |5  PB0 PWM
//                  +----+

#define PB 1


// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)
const uint8_t PROGMEM port_to_mode_PGM[] =
{
     NOT_A_PORT,
   &DDRB,
};

const uint8_t PROGMEM port_to_output_PGM[] =
{
     NOT_A_PORT,
     &PORTB,
};

const uint8_t PROGMEM port_to_input_PGM[] =
{
     NOT_A_PORT,
     &PINB,
};

const uint8_t PROGMEM digital_pin_to_port_PGM[] =
{
     PB, /* 0 */
     PB,
     PB,
     PB,
     PB,
};

const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] =
{
     _BV(0), /* 0, port B */
     _BV(1),
     _BV(2),
     _BV(3),
     _BV(4),
};

const uint8_t PROGMEM digital_pin_to_timer_PGM[] =
{
     TIMER0A,       /* 0  - PB0 */
     TIMER1A,       /* 1  - PB1 */
     NOT_ON_TIMER,       /* 2  - PB2 */
     TIMER1B,           /* 3  - PB3 */
     TIMER1B,             /* 4  - PB4 */
};

and this the boards.txt file

Code: [Select]
##############################################################

attiny85.name=attiny85

attiny85.upload.using=avrispmk2

attiny85.upload.maximum_size=8190
attiny85.upload.speed=38400
attiny85.bootloader.low_fuses=0xE2
attiny85.bootloader.high_fuses=0xDF
attiny85.bootloader.extended_fuses=0xFF
attiny85.bootloader.path=attiny85v
attiny85.bootloader.file=attiny85v
attiny85.bootloader.unlock_bits=0x3F
attiny85.bootloader.lock_bits=0x0F
attiny85.build.mcu=attiny85v
attiny85.build.f_cpu=8000000L
attiny85.build.core=arduino


of course i should make one for the attiny13 as well


I have not done the analog mapping in wiring_analog.c yet. first i have to find out how that works. same with pwm. maybe the attiny2313 port wil clarify it.

remember, this code is not tested yet, but pure to see if I missed something. i encourage everybody to post comments and improve on this.

*update added
Code: [Select]
attiny85.upload.using=avrispmk2 to the boards.txt file. and removed
Code: [Select]
attiny85.upload.protocol=stk500
--
"We're all in this together..."

Coding Badly


Are you able to upload using the IDE?

dpharris

How did you find the http://www.urbanhonking.com/ideasfordozens/2009/05/an_tour_of_the_arduino_intern... , it is dead for me, and the Way-back machine says the last update on that site was in 2008 !?

Thanks, David
Dr. David Harris
OpenLCB Dev Team

Coding Badly

@dpharris:

Did you click the link or copy-and-paste it?  It looks like the forum software truncated the URL and placed an ellipses on the end.

macsimski

@dpharris: sorry. url was not complete. now it is. please reload this page and click the link

@coding badly: no no upload due to missing uart(serial input) on the attiny
--
"We're all in this together..."

Go Up