ATTiny85 port (work in progress)

no, i never tried. will keep you posted.

If my memory serves me right, one issue was with Arduino constructing a mcu identifier not recognized by Avrdude.

That's the problem!

Knowing the identifier created by Arduino however, you can easily patch the avrdude.conf file to fix the "unknown part" issue.

Add an entry for "m84" (or "m85")?

Add an entry for "m84" (or "m85")?

I don't have my notes to verify against, but I believe this is correct (avrdude expects "t84"). There was also some tossing of ideas to patch the IDE to help with this, but I don't remember seeing anything from that make it to 0018.

Anyhow it should be possible to upload from within the IDE and even with an all empty core you're quickly up and running without having to learn new tools.

Nice! Thank you!

I'll play around with it when I get back from vacation and report what I find (but I suspect macsimski will be reporting back much sooner).

I have the same issue in 17 with my 84, it always comes back invalid part m84, I was getting around to that question just have not yet

NOW that that is resolved, when doing the exact same thing in 18 it always comes back with a not in sync error, even though the 2 are setup identically

Well. I finally had some time to look into the stuff. it looks promising, but i was yelling to early. >:(
A lot of files in the core directory need to be changed to get the things working. with the above files and a bare minimum sketch i get a compile error. after removing the v behind attiny85v that was changed into acompile error in WInterrupts.c complaining that EICRA was not defined. this is true because this is not a atmega8:

#if defined(__AVR_ATmega8__)
#define EICRA MCUCR
#define EIMSK GICR
#endif

[/code]
so there is something wrong with:

#if !defined(AVR_ATmega8)

but i have not found the place where that would be defined. a folder search in the core dir did not yield a file.

I got an error when I tried to compile, I forget what it was but I'll tell you later. Would this work on an attiny45 too?

so there is something wrong with:
#if !defined(AVR_ATmega8)
but i have not found the place where that would be defined

AVR_ATmega8 is defined by the compiler from the mmcu option which the Arduino IDE gets from boards.txt (Whew! That sentence overran.) ...

http://www.nongnu.org/avr-libc/user-manual/using_tools.html

For an ATtiny85 or ATtiny85V AVR_ATtiny85 is defined (but not AVR_ATmega8).

Ok. that makes sense. i think i can do without special cases and make the whole cores files attiny85 only. I get the feeling that the #if defined is only needed to make one cores dir for a few very similar AVR's. maybe later someone can add the special cases for a attiny84.

I was incorporating the latest developements into the first post but i'm a little ambivalent about it. of course it is nice to have the latest version available, but it could happen that someones comment becomes obsolete. that is confusing at the least...

i will not do that again.

This is fun! i now have the following files open on my mac:

attiny85.pdf
atmega8a.pdf
atmega168.pdf

arduino with a bare minimum sketch (so only setup() and loop() are there)

and bbedit for the editing of my source files.

I hit run in arduino and look at the lines of errors i get.

../Attiny85/cores/arduino/wiring_analog.c: In function 'analogWrite':

../Attiny85/cores/arduino/wiring_analog.c:86: error: 'TIMER1A' undeclared (first use in this function)

../Attiny85/cores/arduino/wiring_analog.c:86: error: (Each undeclared identifier is reported only once

../Attiny85/cores/arduino/wiring_analog.c:86: error: for each function it appears in.)

../Attiny85/cores/arduino/wiring_analog.c:88: error: 'TCCR1A' undeclared (first use in this function)

../Attiny85/cores/arduino/wiring_analog.c:91: error: 'TIMER1B' undeclared (first use in this function)

in this order i lookup all the acronyms like TIMER1Ain the atmega168 pdf and find out what they do. then i lookup the same function in the attiny85.pdf and change the according cores file.

a lot of work, but is not to difficult.

heh, god bless the search box

and the find of bbedit is fabulous!
pfew. i'm half way through the files. have to call it a night now. maybe tomorrow more.

i had to guess with the timers because obviously the attiny has less of them. well we will find out later.

well I know I appreciate the work people put into porting the arduino functionality to these tiny chips

and even though I dont have a application where a 85 would fit in, I know it probably wont be long before I do

Thanks for your efforts, and keep up the good work

And of course, there's always the other extreme -- I'm currently working on a 1284 port, now I have my hands on a few 1284P DIPs.

Of course, the 644 port helps, but there are other differences apart from FLASH size and RAM.

well. i got a compile without errors now, but i had to disable some functions in tone.cpp and others because i lack the time to do it propperly. it means digging in the amount of timers and their functions. the tiny has less timers so it could get crowded.

next thing is actually uploading the sketch to the little beast and see if it works. unfortunate all my breadboards are at my workplace tonight. >:( Ohh well maybe I start reading into the workings of the timers and how they are used in the arduino...

I would not dare upload the unfinished cores before i have proof of its functionality. so please be patient.

:slight_smile: :slight_smile: :slight_smile:

of course i let myself not ne hampered by missing hardware. that is what a junk box is for.

i needed to change a thing to the boards.txt file:

attiny85.upload.using=avrispmk2

was wrong. it should be

attiny85.upload.using=avrispmkii

and after successfully uploading the blink sketch the led blinked 8 times to slow. this with a virgin attiny85. that is set from the fatory @ 1Mhz so i had to flash the fuses with

avrdude -c avrispmkII -P usb -p attiny85 -U hfuse:w:0xDF:m -U lfuse:w:0xE2:m

then it works.

so the main production stream is smooth now. next step will be trying several procedures like pwm and analog in...

Ok. so with pwm i get some errors in the

Arduino-0018.app/Contents/Resources/Java/libraries/Servo/Servo.cpp

file.

It can't find TCCR1A declared. Hmm. that was something i did'nt have time to look into. is there someone with timer knowledge around to help me out?

Nice! I am keeping my eye on this.

I have a Tiny85 version of Bitlash here that's not ready for release, but I'm happy to share the arduino hardware interface code, including serial tx/rx, pwm on one timer, and analog input handling:

http://bitlash.net/wiki/_media/bitlash-hardware-attiny85.c

Caveat: this is collated from several bits of work-in-progress and I can't testify it even compiles. But it may help with this excellent project.

Good luck. Happy to answer questions.

-br

http://entropymouse.com

Why would this work on the tiny85 and not the 45? I don't want the bootloader or anything, so 4k should be fine.... Or am I missing something?