HOME  > >  ARDUINO MAIN PAGE  T.O.C.     StumbleUpon.ComRecommend to StumbleUpon

Program ATtinys; Configure their fuses.

Filename: FirstTut.htm

I've used Arduinos... with much pleasure.. for years. In November 2017, I was forced past my fears into the world of programming ATtinys... and found that my fears were mis-placed, and that ATtinys (more on what THEY are in a moment!) are great, and inexpensive, fun! (I've written extensively about using Arduinos.)

ATtiny85 microprocessor

If you've been using Arduinos, you have nothing to fear from ATtinys! And you won't have to spend money. In fact, you will save yourself money, because you can do with an inexpensive (about $3) ATtiny things which you might otherwise do with an "expensive" ($12?) Arduino! (The photo comes from Andy Brown's excellent ATtiny pages)

I will show you how to get started with ATtinys in a moment... after, I hope, whetting your appetite with information about what an ATtiny is.

What is an ATtiny?

The term "ATtiny" covers a family of small microprocessors. For the rest of this essay, I will be talking about one in particular, the ATtiny85. Much of what I'll say about that ATtiny applies to other members of the family, which come in various shapes, sizes, flavors.

An ATtiny is a computer, if you will grant me that a computer is...

Pinout, ATtiny85 microprocessor

Forgive me being a bit dogmatic, but the above does define a computer.

And, by that definition, the ATtiny85 is a computer... all in a chip costing about $3 and only having 8 pins...

For $3. Wow.

If you programmed one to turn on an LED when you pressed a push-button, you would need....

- A voltage source... a battery would do, 2.7 to 5.5v... so three AA "batteries" in series ("cells", more accurately speaking... MAKING a "battery" when connected together) would be ideal. Or you could power it with a USB charger, or off of a USB port.

- The push button. Nothing fancy.

- The LED, and a resistor.

- Some wire. (Well, I couldn't leave the list so short, could I??

That's ALL you would need! (You'd probably want a breadboard, too, I suppose, to make hooking them up easy.)

No crystals. Nothing "fancy"!

Don't be put off by the simplicity of my example. The ATtiny can do MUCH more than create a completely over-engineered doorbell! But I wanted a specific example of "a thing you could do", to be grist for the mill of this essay.

According the the excellent page from some MIT people, "HighLowTech", the following Arduino commands are supported. (HighLowTech also mention a "big brother" of the ATtiny that I expect I will be playing with, too!)

    pinMode()
    digitalWrite()
    digitalRead()
    analogRead()
    analogWrite()
    shiftOut()
    pulseIn()
    millis()
    micros()
    delay()
    delayMicroseconds()
    SoftwareSerial (has been updated in Arduino 1.0)


Putting the program in

I admit... you need a little more, if you want to put the program into a "blank" ATtiny... but nothing fancy, nothing you don't probably have already if you've been an Arduino hobbyist for more than a few weeks. No "stuff", and not a lot of software or knowledge. (And the software is free!)

Why has no one been shouting "ATtiny" from the rooftops? The ATtiny85 came out in 2005!! And I only came across them in 2017??

Anyway... once I went looking, I found the nice people at hobbytronics.co.uk had a little ATtiny tutorial that gave me that "I can do this" feeling. And I was right. And what they published was most of what I needed! (For programming the ATtiny. If you do that, you will soon be wanting to "program the ATtiny fuses". That's easy too. I'll show you what you need.)

Most of what follows is just ONE approach. Another, from a very good source, is written up in a post about a ATtiny programming with SD cards system.

To program one, you just need...

A PC with the ordinary Arduino programming IDE.

An Arduino that can, from time to time, be hooked up (six wires!) to the ATtiny you want to program.

Some "extra stuff" in your Arduino IDE environment... I'll explain. It's nothing more than the sort of thing you'd "add", and you add it the same way, to set your IDE up to program something other than a standard Arduino. To program a Teensy or ESP8266, for instance. (They're two nice systems, by the way... I've written about the first, and used the second quite a bit... it was a shock to discover I haven't written something to say how great the Teensy is!)

Once that's in place, you program the ATtiny as if you were programming an Arduino. You have to look at what's hooked to your PC to tell the difference! (Details later.)

A little more detail

Above, I've tried to persuade you to try the ATtiny85. Now I will go into more details about what you'd have to do.

Usually, I work "from the ground up". This time, I'm going to tell you about where you WILL be, and THEN go back, explain how to get there. First I'll do it in respect of programming ATtinys. Then I'll do it in respect of doing things with their "fuses".

-

The picture above shows....

("A", green) An ordinary PC, anything will do. In it: The ordinary Arduino IDE, with one unremarkable "add on" (I'll explain it later.) I'll call this "the big PC" from now on. Connected to...

("B", red, and "C1", blue) A little breadboard, carrying an ordinary Arduino (ATmega328 or higher)... I happened to be using an Arduino Pro Mini ("B")... and an ATtiny ("C1"), connected together with a few wires. The little blue bit is "C1", the ATtiny being programmed.

Below, I've done a picture of B and C1 in real life for you. Plus an indication of an LED and resistor I want on the board at this time. Sorry the LED and resistor are so crude!

The white dot on the ATttiny, and the small inset panel with digits giving the pin numbers of the ATtiny show you which way "up" it must be inserted in the breadboard.

Rather late in the day, I realize I made an unfortunate mistake when choosing my color scheme. The blue bits in the "real life" image are the Arduino (the right hand blue bit) and its USB serial interface (on the left). They should be red, to match the my drawing's color scheme. And the ATtiny, black in real life, is what's shown in blue in the drawing. (The yellow wire is there as a guide to where the ATtiny goes. Remember: This is "the programmer", and the ATtiny you see in it is just one of many that will "pass through" this circuit.)

The circuit is the same as that suggested in the Hobbytronics tutorial; I've just used a single bread-board, for tidiness's sake.

-

And, though maybe it is overkill?, here are the details of "B"/"C1" again, as a diagram. (Colors consistent with sketch at top of page, this time!)

-

Continuing the story of the "overall" picture, the prettier one, further up the page...

(C2: blue) The same ATtiny, later, removed from the breadboard it shared with "B", with a few bits and pieces connected up to it. This is the ATtiny in its final deployment.

What you would do with the above

(Do not, as you follow along in your head, connect the cable between big PC ("A") and breadboard ("B") yet.)

You would write "the program" (the program the ATtiny is going to run) on the laptop, just as you would write a program for an "ordinary" Arduino. I haven't checked it for every punctuation mark, etc, but the following would probably be fine... apart from lacking the comments every program should be full of! But it should "work".)

const byte pin_In=3;
const byte pin_LED=0;

void setup ()
  {
    pinMode (pin_In, INPUT_PULLUP);
    pinMode (pin_LED, OUTPUT);
  }// end of setup

void loop ()
  {
  counter++;

  if (digitalRead(pin_In)==LOW)
    {
      digitalWrite (pin_LED, HIGH);
    }
    else
    {
      digitalWrite (pin_LED, LOW);
    }

  }// end of loop

(There's nothing "special" in that. If you put it in a ordinary Arduino, with a push button to pull D3 to ground if pressed, and an LED (through a resistor) on D0, the same trivial program, exactly as for the ATtiny, would work.)

Type the program into the Arduino IDE, and save it, just as you would do in any Arduino work.

Next, you would go into the Arduino IDE "Tools" menu, and set "Board" to ATtiny (it may be a long way down the list!) and "Processor" to the one you are using.

It may seem that you are "setting the board" twice. No... you start by saying "Board: ATtiny" and then, second step, say "Processor: ATtiny85". It's sort of like starting by specifying a "family", and then going on to indicate a specific member of the family.

And, still in the "Tools" menu, you set the "Programmer" to "Arduino as ISP". (You don't have to be as specific as usual; you don't have to say what sort of Arduino you're using. This is just telling the IDE that you are using an Arduino between the IDE and the ATtiny that will be programmed. (Do not "fall for" the rather similarly named "ArduinoISP".)

NOW plug in the cable between your big PC and the breadboard with the Arduino and the ATtiny sitting there waiting to be filled with it's "Doorbell" program. (This business of setting up processor, etc, BEFORE connecting the USB is a good idea in general, by the way.

Notice, by the way, that the ATtiny's pins are NOT connected to "other stuff", except, maybe (it isn't necessary) an LED (with resistor) on pin 5. (In the case of the little demo program we are working through, the LED and resistor will be helpful. The ATtiny will program, whether the LED is there or not... but testing whether it programmed will be simpler if the LED is present.)

In the usual way, as if you were "just" programming an ordinary Arduino...

Repeat... Until Errors=None

Now... notice that I planned to put the input on pin 2, the pin for GPIO "D3"? And that the breadboard has no connection to that pin?

That was not a random choice. Because the programmer is not using D3, it is safe for me to do so, even while the ATtiny is still in the "programmer". (A rather grand name for our little breadboard ("B"/"C1") and it's six wires, but that's what it is.)

Connect a wire between the ATtiny's pin 2 and pin 4 (Ground), and the LED should come on!

Do not connect "other stuff" to the ATtiny when it is in the programmer until you have mastered the "other stuff" I will discuss later. (Jump down to that now, if you wish... there's even a "Jump back" hyperlink there to bring you back here, if you want that after reading the details!)

If it works in the programmer, as described, you're done! You can take it out of the programmer, put it in the circuit shown in "C2" in the pretty illustration some way up the page, and you'll have your finished "doorbell". Or should that be "door light"? (You can by things that beep instead of glowing in the same place as the LED. "Self oscillating piezo buzzer". Beware voltage needs and current demands. MAX (you don't want to create this condition!) current on any one pin: 40mA. OVERALL max current into device: 200mA... pretty easy to avoid, with only 5 GPIO pins! But remember on bigger Arduinos that too many pins conducting "reasonable" currents can add up to a total that is more than the chip should be asked to endure. (Do learn to read datasheets. a) They are canonical. You can read LOTS of "stuff" on the internet. Stuff in datasheets can be trusted. b) You'll go further, faster, once you acquire the skill. ATtiny 25/ 45/85 datasheet, from horse's file server.) No resistor needed with the buzzer.)

That's it! That's all there is to it! NOT HARD! (Once you've got yourself set up...

How To Set Yourself Up

The work I've done getting this far has been done on a Windows 7 PC, running the Arduino IDE vers 1.8.1. (If you are using something less than 1.6, PLEASE upgrade? (You can program ATtinys with earlier versions of the IDE, but you're on your own for how to get set up, etc!)

So.... "pre-requisite": We'll take it "as read" that you already have the Arduino IDE installed and working nicely. Vers 1.6.0 or higher.

(Much of the following comes from the great ATtiny tutorial at Hobbytronics.co.uk or the similar ATtiny tutorial by "High-Low Tech", some nice MIT people. If reading the former, read it carefully, at the point where it says, quite clearly, if you are paying attention (which I wasn't... wasted about an hour for myself!) at...

"Note: This tutorial uses Arduino 0.22. If you
   are using Arduino 1.0 you need to download a
   different attiny library."

(That bit could do with a little edit. In fact, much of the Hobbytronics page is just as useful to people using a "modern" (1.0 or higher) Arduino IDE.)(Quite depressing to realize how late to the party I am, with ATtinys. The ATtiny has been around since 2005, and the easy access via the Arduino IDE is NOT new, either.)

There's a link to the "different library" from the "High-Low Tech" tutorial... but I am also going to give you the link here, in due course.

Have you "Added a board" to your Arduino IDE before? That's all we're going to do here. No, I don't like add-ons either... normally. But they have their place. I'd added the Teensy and the ESP8266 to my Arduino IDE before discovering the ATtinys. No regrets.

Adding "the board"

This "add a board" business is about giving your Arduino IDE "stuff" it needs. And here's how you do it. (Also covered in the "High-Low Tech" page, but they tend (even more than me!) to give you every option... which can make things hard?)

Fire up your Arduino IDE. But don't have your Arduino connected at this time.

(Here begins section more or less just lifted from "High Low Tech" webpage.)

Open the preferences dialog of the Arduino IDE.

Find the "Additional Boards Manager URLs" field near the bottom of the dialog.

Paste the following URL into the field, using a comma to separate it from any URLs you've already added. (When you copy that from here, be sure it copies as one line.)

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Click the OK button to save your updated preferences.

Now, select "Tools > Board" menu. Find the "attiny by David A Mellis" entry... it may be down near the bottom.

Click on it The "Install" button (in that section) only appears after you have clicked on the section.

Click on the "Install" button.

Again, you could be forgiven for not understanding. You don't get a nice "Okay, we've done that. It went okay" message... BUT... if you look, then now you can see something that wasn't there before, but doesn't make a fuss in appearing: The word "installed", in blue, next to the "attiny by David A Mellis" text.

Close the Boards Manager dialog.

(Here ends section more or less just lifted from "High Low Tech" webpage.)

That's it! You've done it! (If you got the "Installed"!)

You're ready to do the things I explained above, when I went through routine use of your enhanced Arduino IDE! (I.e. Use "Tools > Board" menu to set "Board" to ATtiny, "Processor" to ATtiny85, etc! Remember that the ATtiny entry may be well down a long list. Remember that you might feel you are "setting the board" twice.)


Beware...

In our microprocessor work, we have the luxury of pins which can be configured as inputs or as outputs. To which, of course, we connect things.

But this leads to an area where we need to be careful. If a microprocessor is plugged into external electronics which present the output from someplace else to, say, pin 3 of the microprocessor, we must be very careful that we do not configure that pin as an output.

If you connect an output from the microprocessor to circuits which expect to be feeding an input, you may permanently damage things. (If one of them is set high, and the other low, you will, in effect, have a short circuit, and too much current may flow.)

If a pin of the microprocessor is configured as an input, you can get away with many connections mistakes. What you're trying to make may not work, but at least you won't damage things. But, with Mr. Murphy looking over your shoulder, if you make a mistake, it probably won't be the benign one, right?

What does this have to do with programming ATtinys? This:

The way of programming ATtinys described above involves connections to several GPIO lines. Furthermore, as soon as the ATtiny has been programmed, it is sitting in a circuit with "back connections", as it were, to an Arduino.

As far as I am aware, pin 1 of the ATtiny is usually used as a reset input. But the manufacturer's data sheet seems to say that it can be used for GPIO, so there may be ways to make it an output, so there's a danger of you doing that, and possibly harming both it and the Arduino's D10 if you add things to the circuit that might provide a low resistance path to Gnd or Vcc... the Arduino's D10 may be high or low, to drive the ATtiny's pin 1 (/reset). (You can... probably should... have things connected to it in the circuit the ATtiny will be moved to when the programming is done, of course.)

People who know more about these things than I do say it is okay to have an LED (with suitable resistor) connected to the ATtiny's pin 5. (Which also connects to the Arduino's D11.) This suggests to me that the Arduino's D11 is set up as an input, and that you can use pin 5 (ATtiny's D0) as an output, even while the ATtiny is still in the programmer.

I haven't yet analyzed what the programming Arduino is doing over it's D13 and D12, connected to ATtiny pins 7 and 6, respectively, ATtiny's D2, D1, respectively, so I would refrain from setting either as an output.

The good news? As the programming circuit makes no connection to the ATtiny pins 2 and 3, lines D3, D4, respectively, you can do what you wish with them!

Summary... For now, I would do the following. It may be over safe, but I hope it avoids all possible bad conditions. In the following "Arduino" refers to the Arduino used to program the ATtiny, i.e. "B" in my diagram of What You Need.

(If you "jumped ahead" to get to this "Beware... " section, and want to go back, click here.)

A detail... In his excellent post about programming ATtiny's, dntruong suggests, if you are using an Uno...

Put a 10 microFarad or more capacitor between the
Uno reset pin and ground, to prevent it from resetting
when receiving a program from USB.

(Using a Arduino Pro Mini, I don't think I ever had a problem in this regard, even without the suggested capacitor. I did, once in a very long while, have to press the reset button on the Arduino between the big PC and the ATtiny being programmed, but, as I said, only rarely.) The advice probably applies to sundry Arduinos, not just the Uno.



Moving on... major "break" in material here.



"What are "fuses" and how do I configure them?"

Before I start: Sorry: The text in this section is a mess. But we DO, eventually, get to an answer "how do you do that?"... a process that is quite easy to do!

What are these "fuse" things that people who talk about ATtiny's talk about?

They are "things" inside the ATtiny where "stuff" can be... recorded? stored? Don't think about either word to precisely.

("Fuses" aren't really so very "difficult", but there are terminology issues which complicate things.)

Imagine, if you will, "little switches" inside the ATtiny. Switches that you can put in either position, like an "on"/ "off" switch controlling the ceiling light in your kitchen.

The Nice People at Atmel call these things "fuses". They speak of them "being programmed", or not. ("Programmed" as an adjective, not as a verb.)

How the "switches" are determines various things about how the ATtiny behaves. For instance, you can have it work at 8MHz or 1MHz.

(I have been avoiding the word "set", as in "how the switches are set" because in some contexts, "set" means "made a "one"", where you are speaking of a digital entity having one and zero as its possible states. You might as well call them "red" and "green", really, but we often use one and zero, or on and off.... and now, with the fuses, we talk of "programmed" and "not programmed". Life simple? What fun would that be?)

ANYWAY... you can change how the chip behaves (more on this anon) by changing the fuses.

Changing the fuses is EASY. Ish. The good news is that you use the same set-up as we used for putting programs into the ATtiny! Hurrah.

As ever, there are multiple ways to do it.

Here begins an aside:

If you only want to change the clock frequency the AT tiny runs at, you can do it via the Arduino IDE, if you have set it up as described above for putting programs into the ATtiny.

From IDE menu: Tools, clock: Make it what you want. You DO NOT want EXTERNAL clock, unless you want to have to hook up a crystal (or maybe a simple resonator will do.) If you accidentally configure the ATtiny to use an external clock, it won't work, even to change the fuse setting back again, until you provide the external circuitry to provide the clock.)

SO... Carefully select the clock option you want. (The chips come, new, with the clock fuses set for 1MHz internal clock operation.)

Aside within aside!... 1MHz? 8MHz?...

By default, ATtinys run at 1 MHz. You can configure them to run at 8 MHz instead, which is useful for faster baud rates with the SoftwareSerial library or for faster computation in general. To do so, that,, start as if you wanted to program the ATtiny. Select "8 MHz (Internal)" from the Tools > Clock menu. Warning: make sure you select "internal" not "external" or your microcontroller will stop working (until you connect an external clock to it). Then, run the "Burn Bootloader" command from the Tools menu. This configures the fuse bits of the microcontroller so it runs at 8 MHz. Note that the fuse bits keep their configuration until you explicitly change it, so you'll only need to do this once for each microcontroller. (Note: this doesn't actually burn a bootloader onto the board; you'll still need to upload new programs using an external programmer.) Using the higher clock frequency increases the power consumption of the chip.

("Aside within aside" ends. Thank you, whoever wrote what was the basis of that, and apologies for mislaying the details of who to credit!)

Then use, Still in the Arduino IDE "Tools" menu "Burn Bootloader". You won't burn a bootloader, but you will make the changes needed in the fuses.

Aside ENDS HERE.=============

There are three "fuse bytes" in the ATtiny85. As "byte" suggests, each has 8 bits. Sometimes one of the fuse controlled features is turned on or off depending on what's been done to one of the bits. Sometimes, a group of bits controls a feature. Each bit is basically one of the "little switches" I spoke of. And Atmel decided that if the bit in the byte that is associated with a particular fuse is "1", then we call that an "unprogrammed fuse". ("Programmed" if zero.) (All so unnecessarily convoluted, unless I am missing something!!!)

Now... do you know about hex?

I could say that the fuse byte named "Extended" usually holds all 1's. You'd write that in binary as "11111111", or, to make it a bit more readable, if you knew we weren't meaning a "binary point", you could write "1111.1111". But it is SO much easier, once you get the hang of it, to write long binary numbers in hex. A bunch of 1's and 0's with a "B" after them is probably a number written in binary. (Or some people use a % in front of them.) And here's an example of how hex is nicer: 11111111B is the same as $FF. (The "$" meaning "this is in hex". Another common way to say that is to prefix the number with "0x". So 0xFF is the same as $FF... just like "12", "twelve" and "a dozen" all say the same thing. (Or "douze" in French, or %1100, or $C (!!))

The nice thing about hex is that you can, very quickly (with practice!), in your head, turn binary into hex and vice versa. So if you know you need the bits to be 0111.0110, you only need to type $76.

But! Enough of that! Anyway (hurrah!) You probably won't need quite all of this immediately! But you may well be working on an ATtiny85 project, and read that "you need to set the Fuse High Byte to 0x4D and the Fuse Low Byte to 0xA2. Fine! I'll show you how to do that! (There's another fuse byte, the "extended" fuse byte, that will normally want to stay $FF, which is the default value for that fuse byte, the settings that are in place in a newly purchased chip. Since "everyone knows" this, it can be a bit worrying for a novice, who's setting the OTHER fuses, trustingly, and is wondering what the "Extended" fuse byte needs setting to. Sigh.) (When you DO get to making your own fusing choices, there are "calculators" to help you, too.)

Much of the specifics in this fuse byte stuff highly specific to particular ATtinys, by the way.

If you are a REAL glutton for punishment, go into ATtiny 25/ 45/85 datasheet. In the edition I have, the Good Stuff is in section 20.2, "Fuse bytes". (And just before that is the stuff about the "Data Memory Lock Bits", which I THINK are similar, and I THINK you can also manage by the tool I am (eventually) going to tell you about.)

That's enough theory!

Fusing... the practice!

As with programming, I'm going to tell you how simple things are, once you're all set up. Then I will tell you how to get set up.

As with programming ATtinys, this is just one of several "answers". It has the distinct advantage, my view, of using the same hardware, and being inexpensive (the breadboard, and Arduino, which you can use for other things, when not programming or fusing ATtinys), and simple. Ish.

As before, you need the Arduino IDE set up on your big PC, although we won't be using it to do the fusing. (I.e. "program/ "unprogram" the bits in the fuse bytes")

We need that, because when you install the basic- and free- Arduino IDE, you also install something- also free- called AVRdude, which our answer to fusing will be using, too. Again "transparently". Once things are set up, you won't even be aware of your AVRdude software.

You hook up the hardware, as before: Big PC to Arduino via USB, Arduino to ATtiny via the same 6 wires.

You fire up AVRdudeSS, a GUI front end for AVRdude. (I'll explaing obtaining, installing it later.

You are then VERY CAREFUL! AVRdudeSS is a BIG "Swiss army knife" of a program, and can DO all sorts of things. Try not to disturb things other than....

AVRdudeSS dialog

You need to...

Over in the "Fuses and Lock Bits" section, before doing anything "clever", just try READING the PRESENT state of these things, by clicking the "Read" button, which I've marked "5". If that works, all well and good, even though "nothing happens". Until a simple read works, don't try fancier, potentially trouble-making things!

Values should appear in the "L", "H", "E" and "LB" windows. Those labels are for Fuse Byte **L**ow, Fuse Byte **H**igh, Fuse Byte **E**xtended, and Lock Bits.

For a "from the factory", still in default mode, ATtiny, you should see 0x62, 0xDF, 0xFF respectively.

Once you've got reading the fuses working...

Be careful: don't write "just any" value, to "see what happens".

On my first use of the system, setting up an ATtiny to generate a reset pulse, for other hardware, but setting it up, among other things, with brownout protection, I needed 0xE2 and 0xDD in the "L" and "H" Fuse Bytes.

Those numbers were "given" to me... as I suspect you will be "given" the right values, if you are new to this.) I entered the numbers with the "0x" hex indicator. I wasn't given a value for the "E" fuse byte, so, correctly, it seems, assumed it best to leave it at the 0xFF showing since my read of the fuse bytes. And as I didn't know what to do with it, I did nothing with the "LB" configuration, leaving the window blank, if my notes are correct. (Did the read not return a value here? (Probably not, given that LB has its own Read and Write buttons.

I left BOTH the "set fuses" and "set lock" tick boxes UN-ticked. (I suspect they are there to include these writes in a "bigger" write... something we are not doing here!)

Then I simply clicked the "Write" button next to Fuse "L"'s window, the button I've marked "6".

And lots of "stuff" in the window at the bottom of AVRdudeSS... A bit scary! But when I scanned it, everything seemed fine.

I was, I think, "done"... but I made a little check...

First, I carefully changed JUST what was in the windows for L and H to 0x00. I did this to see if the Read I am about to indicate made the numbers change back to 0xE2 and 0xDD. (If I hadn't changed what was in the windows, I couldn't be sure where the E2, DD came from. They'd remain if the "Read" did nothing.

vanc17decMiAu

I was careful not to click "Write" again at this stage!

When I clicked "Read"....

HURRAH! The windows filled with the hoped for 0xE2 and 0xDD!!!

I'd done the fusing I needed!

Two details...

Two details that may need attention "regularly"... sort of a "set up" thing, sort of an ongoing "do every time"....

What do you enter into the AVRdudeSS dialog for "Port" and "Baud". (The items I've numbered "3" and "4").

The simple answer? "The values you would use with the Arduino IDE, to program a "simple" Arduino, like the one through which you are connecting to the ATtiny."

Good news! You can "poke and hope"... i.e., put in your best guesses, try "READ" fuses, and it it works you're done, and if it isn't, have another guess.

Of course the "simple answer" assumes you can find the right values for your Arduino IDE! Finding the right port is just one of your "old skills" that you are likely to have, because to leap straight to ATtinys, before becoming at least vaguely proficient on a "simple" Arduino is an unlikely "career path". Search on "setting up Arduino IDE", if you need to. As I said... whatever's right for programming an Arduino will be right for AVRdudeSS's wants... which is hardly surprising, because AVRdudeSS and the Arduino IDE are both working through AVRdude. You just don't "see" AVRdude in either case!

NOT so obvious is the "right" baud rate. Try 19500... that may well be the one you want. But we need the baud rate AVRdude is being run at, which won't necessarily be the baud rate, say, of the Arduino IDE's communication for the Serial Monitor.

Here's what you do, if 19500, and poke and hope don't get you "there"...

Go into Arduino IDE/ File/ Prefs. Request "Show verbose output during... upload", and then send any simple something to the Arduino. In the message area at the bottom of the Arduino IDE's window, in the messages area, you'll get a slew of stuff. Somewhere near the top, something like...

avrdude: Version 6.3, compiled on...
    Copyright (c) 2000-2005 Brian Dean,
    http://www.bdmicro.com/,
    Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is

"C:\Program Files (x86)\Arduino\hardware\tools\
       \avr/etc/avrdude.conf"

    Using Port                    : COM18
    Using Programmer              : stk500v1
    Overriding Baud Rate          : 19200

... which tells us all sorts of Good Things!

Not least that you DO have AVRdude on your computer! Which can be reassuring, if things aren't going well! That ".conf" file may be worth a check, too. (Just open it with a text editor.)

On your PC, the port may be other than COM18. Yes, by the way, most users work through a "COM" port... even if it arises via some USB hardware!

And... as I said... don't be too fearful. Bad port? Bad baud? Unlikely, in ordinary situations, to do more than not work. And "not working" easy to recognise. I hope. Do write in, complain, if this matter needs more attention? (Please cite the page's URL.)

I hope "port" and "baud" don't turn out to be big hassles for you... let me know if this section needs work?



Setting up for fusing ATtinys

Setting up: First of all, a BIG THANK YOU, to... dntruong for his excellent blog, where I learned most of what I know about doing fuses!

From whence, I was lead to zakkemble's page with AVRdudeSS... where I learned about AVRdudeSS.

First you download the setup for AVRdudeSS. (I'll explain that in a moment.) It would be good to go to Zak's page, above... the link I offer in a moment may be stale. At 01 Dec 17, the download was easy to spot, being in a neat box with the following text.

But before you try the download, update your anti-malware package. There have been times when the legitimate, and nothing- wrong- with- it AVRdudeSS has garnered a false positive from some anti-malware suites. Have your latest and greatest protection in place, in case questions arise, during the download. When I downloaded it, and gave it an extra scan with my eSet anti-malware, there were no complaints at all, false or otherwise. (This was 27 Nov 17, on a Win7 machine.)

setup-AVRDUDESS-2.4.exe (914.73 kB)
AVRDUDESS (Windows installer)
Downloaded 108516 times
MD5: CF83912B3368D65FA9FCA80C7EC2CE5D

(And there is an alternative, for non-Windows users.)

If for some reason you have no joy there, try this link for the AVRdudeSS setup... or search with Google for "AVRdudeSS"... but beware malware laden fakes... this is a program many people will look for.

It's a very ordinary setup. You download it. You double click. A wizard takes you through the setup process.

What I found near miraculous was that it Just Worked with very little hassle. I hope you have the same experience. I call it "near miraculous", because this (AVRdudeSS) has to "play nicely" with something else on your computer (AVRdude), and AVRdude could be... anywhere! In my case, luck was with me, and AVRdudeSS found AVRdude without any trouble for me.

When you try the process explained above, starting with "Read current fusing", you should at least get a line of tiltde's (~~~) across the message area at the bottom of the AVRdudeSS window. (The mark the start of an attempt to execute a command. Following that line, in no more than about 20 seconds, you should either get "the answers" (in addition to them appearing in the appropriate places in the GUI part of AVRdudeSS), or at least messages which will, I hope, soon lead you to a WORKING set-up!

LadyAda offers a good article about fuses.




The rest of this page (if I've forgotten to comment stuff out!) is my scruffy sketches of where I am going, and a footer. This page "under development", 30 Nov 17. Pester me if that date falls more than two weeks behind where we are today. Pester me if you don't think there's ALREADY enough here to justify posting the first parts.



   Search this site or the web        powered by FreeFind
 
  Site search Web search
Site Map    What's New    Search

The search engine is not intelligent. It merely seeks the words you specify. It will not do anything sensible with "What does the 'could not compile' error mean?" It will just return references to pages with "what", "does", "could", "not".... etc.


In addition to the material covered here, I have other pages with material you might find useful.....

Tutorials about the free database which is part of the free Open Office.

Sequenced set of tutorials on Pascal programming and electronics interfacing.

Some pages for programmers.

... and see also the links at the very top of the page!


Ad from page's editor: Yes.. I do enjoy compiling these things for you... hope they are helpful. However.. this doesn't pay my bills!!! If you find this stuff useful, (and you run an MS-DOS or Windows PC) please visit my freeware and shareware page, download something, and circulate it for me? Links on your page to this page would also be appreciated!

Click here to visit editor's Sheepdog Software (tm) freeware, shareware pages.


And if you liked that, or want different things, here are some more pages from the editor of these tutorials....

Click here to visit the homepage of my biggest site.

Click here to visit the homepage of Sheepdogsoftware.co.uk. Apologies if the "?FrmAht" I added to that link causes your browser problems. Please let me know, if so?

Click here to visit editor's pages about using computers in Sensing and Control, e.g. weather logging.



To email this page's editor, Tom Boyd.... Editor's email address. Suggestions welcomed!


Valid HTML 4.01 Transitional Page tested for compliance with INDUSTRY (not MS-only) standards, using the free, publicly accessible validator at validator.w3.org

Why does this page cause a script to run? Because of the Google panels, and the code for the search button. Why do I mention the script? Be sure you know all you need to about spyware.

....... P a g e . . . E n d s .....