The datasheet shows that current decreases at lower frequencies. Around 1 mA at 1 MHz running at 5 V. More like 5 mA at 8 MHz running at 5 V.
You can save quite a bit by using lower voltages as well, as you can see. For really big savings use a sleep mode. Read about Power saving techniques for microprocessors.
(Edited to add)
To amplify on my remarks, ...
Your toolchain is not broken. In the ATTiny804/1604 datasheet, page 77, it shows the CPU clock is divided from the 20/16 MHz oscillator by a prescaler (the ATTiny1614 datasheet shows the same clock prescaler in page 80. So it's a feature found in both tinyAVR 0/1 microcontrollers).
Source: Microchip ATTiny804/1604 datasheet, fair use.
The datasheet says...
I soldered wires to pads to be sure the connection was good, and used those wires for programming from the Uno. Then the programmer worked, without any edits to the command lines as posted in the question. I ran a few variations and was able to answer all my questions, and a few more besides:
The "Yikes! Invalid device signature" error was being caused by ...
This schematic shows a complete connection of a blinking led.
Red cable = +5V (pin 8)
White cable = Ground (pin 4)
Resistor = 1 end at pin 5 (IO 0) and the other in the LED anode (+)
Led anode (+) in the resistor, cathode (-) (small leg) in the ground
Resistor = 330 Ohms
The arduino in the picture is not necessary, just used to give power. But in the video ...
The Arduino EEPROM library is compatible with the ATTiny range of AVR microcontrollers as the library itself is built on the standard Atmel AVR avr/eeprom.h 'library' so it is compatible with all the AVR microcontrollers.
The EEPROM also doesn't take to being written or read to often as EEPROM can wear very quickly. Reading though does not cause much damage ...
There is a lot you are missing. Such as:
SoftwareSerial is using RAM.
The system stack is using RAM.
The Arduino core software is using RAM.
There's plenty more going on than just your sketch. For instance, where do you think it stores the current millis() and micros() counts? Where do you think incoming serial data gets buffered? Where do you think your ...
Since the ATTiny can easily run at 5V I don't see any problem with programming it at 5V levels and then run it at 3.3V. Is that correct?
Yes. But if there are any components on the board that can't run at 5V then you must provide some way of protecting them from the excessive voltage.
If I change the fuses on Tiny to run it at 3.3V can I still use the 5V ...
This is absolutely nothing to do with "why can't the atmel attiny family delay over a minute?". It is all to do with the way that C++ works.
See my page about Integer arithmetic and overflow.
To excerpt from that:
On the Arduino (Uno) platform, what do you think will be printed here?
void setup ()
Digispark made a lot of these as part of a "cheap Arduino USB interface" project a while back.
This is my Digispark, it's pretty cute:
They have a web page here.
I got them for about $2 each. The board has the ATtiny85, a voltage regulator, and a handful of other parts.
Schematic (courtesy of Digistump Wiki):
More information about the Virtual USB idea ...
Ignacio Vazquez-Abrams has already outlined the schematics.
There must be a C program compiled and uploaded to it, just like an Arduino board would have.
There are however some differences between a fully equipped Arduino board with an ATMega328P and a bare ATtiny85 you would have to care for in your code:
A bare ATtiny85 runs at 1 MHz (8 MHz internal ...
Short answer - no. It's not left out, on the contrary.
But before addressing to the compiler error you mentioned, a small clarification:
I downloaded the hardware from https://code.google.com/p/arduino-tiny/
The link you provided is not hardware, but software called the ATtiny core files. It contains the necessary files that will help you compile and ...
See the analogPinToChannel function.
static const uint8_t A0 = 6;
static const uint8_t A1 = 7;
static const uint8_t A2 = 8;
static const uint8_t A3 = 9;
#define analogPinToChannel(p) ( (p) < 6 ? (p) : (p) - 6 )
Using A2, which is 8, will return 2 (8-6) from the analogPinToChannel function.
Using 4 will give 4. There is no (useful) analog ...
ATTINY's are designed to easily do this since they can wake from power down sleep mode by a pin change...
Basically you want to...
Connect a normally-open push button between an IO pin and ground.
Enable the pull-up on the IO.
Enable the pin change interrupt on the IO pin.
Enter "power down" sleep mode.
When the button is pushed, it ...
The code you linked to measures the 1.1 V internal reference using
Vcc as a reference. The ATtiny13A cannot do that. It does have a 1.1 V
internal reference, but it can only use it as a reference for the ADC,
not as a measured channel.
What you can do, if you don't mind adding extra hardware, is divide Vcc
with some resistors in order to get a voltage ...
attiny is missing an option required to allow the Manchester library to function properly on ATtinyX5 devices, specifically definition of __AVR_ATtinyX5__ when a device is selected. In fact, it's missing quite a few things.
The package I use for ATtinyX5 support is arduino-tiny. I have verified that it defines that symbol properly. I recommend that you ...
Yes. As given in the datasheets, normal ATtinyX4/X5 chips can run with a supply between 2.7 and 5.5V inclusive, whereas the low-power versions can run between 1.8V and 5.5V. Mind the speed restrictions when running at lower voltages though; see the "Electrical Characteristics" section of each datasheet to determine the maximum characterized speed for a ...
Assuming the lock bits on the device haven't been set, sure. Simply prepare the Arduino for ArduinoISP, hook up the ATtiny45, and perform a read using AVRDUDE instead of a write (-U flash:r:foo.hex:i).
You can setup interrupts on the Attiny with some different code, but it works the same way. It's important to note that PIN Change Interrupts are triggered at BOTH Rising and Falling Edge
Using the Arduino-Tiny Cores
Below is a sample code which used a Pin Change Interrupt on PB1 which switches an LED on and off on PB4.
There are several problems with your program as shown that make a good answer impossible. After I list those problems, I'll then proceed to give an answer, partly good, partly bad. The good part is that the 432-bytes-of-code program shown below should send all the indicated text strings, in the proper order and separated by appropriate delays. The bad ...
There are slight differences between registers, register names and registers bit names:
WDTCR is named WDTCSR
PCIE doesn't exist in GIMSK as there are two IO ports, so there are two pin change channels: PCIE0 and PCIE1
and PCMSK is similar to PCIE. There'll be two of them too.
Basically you have to look into both datasheets and compare what you are using ...
You get this error, because the ATTiny85 doesn't have full I2C hardware. It only as an USI (Universal Serial Interface). This can be utilized to do the rest of the I2C protocol via software. There are some libraries out there to do that, most of them are somewhat named TinyWire. There were dedicated libraries for master and slave operation named TinyWireM ...
2.9V doesn't sound too bad. See a datasheet for the CR2032 I found:
It looks like slightly more than 2.9V would be the expected voltage for up to 600 hours.
3.2V looks like it is fully charged, and won't stay at that level for long.
Having said that, 200 µA current sounds like a lot. You should be able to get it down to 6 µA. Perhaps post your schematic?
I had exactly this problem. If the ATtiny is set for external clock, then the ArduinoISP will not be able to program it without an external crystal. Connected a 16 MHz crystal and 2 capacitors and worked perfectly.
(I was then able to set ATtiny to internal clock, remove the crystal, and then worked perfectly without the crystal.)
The exact duration of the pulses don't matter much. In your example, you see that in all three recorded samples that's
about 14000 (about 9400); about 1200 (about 600); about 1200 (about 600) etc.
What matters is that nowhere you have pulses of about 900 : in other words if the receiver detects a 672 pulse it will know that it's definitely a 600, not a ...
Yes, it is possible.
Note that the FTDI chip (assuming that is what you have) can be accessed as either Virtual Com Port VCP or D2XX. Where VCP is the traditional method of using them as Serial Ports with avrdude calling "-c arduino -P COM3 -b115200". However the later D2XX method allows for the pins to be Bit Bang'ed.
One can see in this tutorial it is ...