In sci.electronics.design
[email protected] wrote:
[snip]
I think I'll try and build my own programmer. I'll try the
ATTINY11-6PC: $0.53 each at Mouser. What a deal! At this rate I can
buy more than one, in case I burn it out.
The ATtiny11 has no RAM, only registers. C really needs some RAM for its
stack, or you have to do some funky things to make it work at all. You
can't have much fun with just 32 registers to store all your data (this
paragraph contains more than 8x that much data). The small ones really
are incredibly limited.
Best advice for a hobbyist: Buy big. Considering the cost of shipping,
it's a false economy to buy the really low-end chips. You'll end up
making another order very soon when you find your first project is
larger than you expect. What you though was a saving ends up as being
more profit for FexEx.
I'd suggest an ATmega8 (or two) and a few matching sockets - you can
then swap the chip from project to project (no need for the sockets if
you don't plan to solder stuff together yet, a breadboard is one big
socket!). The ATmega8 has a UART, which means it has hardware to make
talking to a PC's serial port easier[1]. It has a good amount of RAM
and flash, which means you can use things like C's printf function to
make life easier (printf and associated gubbins takes up around 2.5K of
flash). It has multiple timers, plenty of pins, PWM and a bunch of other
stuff you'll soon find you want.
[snipped a question]
2) Let's say I want to make a simple AA battery tester (0 to 1.5 VDC
range), and interface it to the PC via serial port. I know I'll need
an ADC, and I can probably get away with using the one on the chip
(comparator, right?). [...]
You can use a comparator (gives a signal when one input has a higher
voltage than the other) as an ADC, but you have to use it to measure the
time it takes for the voltage you are measuring to charge up a capacitor
to some reference voltage. You have to provide the capacitor, reference
voltage, code to time it accurately, coded to turn that exponentially
varying number into a linear voltage and make sure the current you take
charging the capacitor doesn't affect what you're trying to measure
(this method has a low input impedance - it puts a significant load on
what you're measuring, changing it in the process). It takes two pins
and you can only measure one voltage with your one comparator. This is
not much fun, though it can shave a few cents of the price of your
device, which might be worth it if you want to make a million of them. I
doubt you want to make a million of them. Buy a chip with a proper ADC
built-in; no external components, very little code, more accurate
results, multiple inputs which take just 1 pin each and you can connect
the pins directly to virtually anything without it affecting what you
connect to (the ADC inputs have very high impedance). Don't connect the
inputs to anything outside the AVR's supply range (0-5V probably, but
you have some choice in the matter) though, or you'll fry it.
For the battery, connect - to circuit ground, + to an ADC input on the
AVR. The AVR's ADC can then measure the voltage with half a dozen lines
of code. That wouldn't actually make for a great battery tester; there's
more to testing batteries than just measuring the voltage, but that's
another subject.
[...] Anyone have any schematic for building such an
AVR-to-Serial interface?
fwiw, I went over to Borders last night, and even the PIC books didn't
discuss in much detail how to interface with the PC. Just only how to
interface the programmer with the PC. Sheesh.
Best to use the serial port, as that's by far the easiest. You might
need a USB-serial converter if your PC doesn't have serial ports.
Sending raw bytes is most efficient, but you'd then have to write
software for the PC to decode those bytes. Much easier to just buy a
nice big AVR and use printf to send ASCII text, at least at first. You
can then use something like Hyperterminal on the PC and get text output
on screen with minimum hassle. You can do clever, efficient protocols
and squeeze them into the really cheap AVRs when you've learnt some
more.
[1] You will need a MAX232 or equivalent chip to convert the AVR's 0-5V
serial port (UART) signals to the +/- 15V RS-232 signals a PC serial
port expects - remember to buy the 4 capacitors such chips require too,
if you don't have that kind of thing lying around. You need to think
about the cable from the chip to the PC as well.
If you haven't already, check out AVRFreaks. There is a lot more there
than there may appear to be at first.
http://avrfreaks.net/
Tim