Tuesday, 31. July 2007
Why I converted my Arduino to an AVR910 programmer
rsbohn
13:51h
I have a handful of AVR chips that I'm using in various projects (including WOSP). You use the SPI interface to upload the software to the chip's flash memory. I wrote a custom program on the Arduino that would read in Intel S-records and push the program onto the chip. I hoped to simply send the programs a file at a time to the chip. Didn't work. There was no hardware handshaking between the USB Arduino and the computer, so it would fill the buffer and then hang. No fun. I tried adding xon-xoff control but couldn't get that working either. I could put the programs in using Hyperterminal, one line at a time. That got old before it was even new. I decided to clone the AVR910. It wasn't hard to do, I just read through the published source from Atmel and converted it to C for the Arduino. Once I had it sending and receiving characters I got AVRDUDE and started debugging. I had some initial problems because I tried to tell avrdude I had an AVRISP. I didn't, I had AVR910. It took a few night's hacking but I got to where I could read and right EEPROM and Flash on the target chips. The last problem I fixed was a byte order thing with sending an address. Seems that avrdude sends the programs one byte at a time, preceeded by the address. So each time I would get the address but in the wrong byte order. I swapped it around and suddenly it worked. My targets are ATtiny13, 15, and 2313. The tiny13 isn't officially supported by avr910, so I just assigned it an ID of 1 and it works. I haven't tried the tiny15 chip yet, but the programmer works for tiny13 and tiny2313. So look for more AVR projects from me in the near future! ... Link
Driving LEDs
rsbohn
09:40h
So you want to drive a 30mA load, but your PIC will only give you 20mA? You can use a BJT as a driver. The math is quite simple. First consider the load: 3 super bright LED's, they want to run at 30mA and have a forward voltage drop of 3 volts. You have a +12V line you can use that will provide the current. This is a good start. The 2N3904 NPN transistor has a maximum current rating of 200mA, so it should work fine. The average gain (hFE) for the '3904 is 100, so with 20mA into the base we could drive 2000mA, which would fry the transistor. Better keep the base current under 2mA (2*100=200mA, the max current). To get 30mA load current we would need just 0.3mA base current. Let's aim for 1.5mA. This is five times the minimum required current, and will help keep the transistor saturated if the supply voltage dips. So for 1.5mA on 5V from the PIC we need (5V/1.5ma)=3.333Kohms. Put that between the PIC output and the transistor base and it should work just fine. Here is the math: Ic = (V/Rl) = (12V-3V*3)/100 ohms = 30mA We want the base current to saturate the transistor (5x minimum current), so we take Ib = Ic/hFE * 5 = 30mA/100 * 5 = 1.5mA Now to get the base resistor Rb = Vpic / Ib = 5V/1.5mA = 3.33Kohms If we use a 3.3Kohm resistor it gives about 1.52mA, way under the PIC output max of 20mA, so that works. (response to uC meets BJT) ... Link |
8142 days of detection
mod: 12/3/08, 5:42 AM days of detection... PMOG owner
BiographyRandall Bohn lives in Orem, Utah, USA. He works as a Software Quality Engineer. He is a big fan of the AVR line of microcontrollers. He has been in the computer industry since 1989. Randall is married and has three children. rsbohn can be reached via gmail.com. status
Youre not logged in ... Login
Amazon.com DVD Shop
Amazon.com DVD Shopmenu
search
related
calendar
recent updates
Arduino Starter Kit
MAKE Blog How-to Tuesday posted a challenge: Optimize the sketch code for a pressure sensor bar graph. Here is my second attempt: int gate[] = {10, 20, 50, 100, 200, 32767}; void setup() {DDRB = 0b00111110;} void loop() { int dval = 0; int rval = analogRead(2); for (int x = 0; rval... 12/3/08, 5:42 AM Measuring Supply Voltage
I'm running my latest handheld computer on solar power. It starts up when the sun rises and runs all day. I started wondering how I could measure the voltage coming in from the solar panel. I came up with a way to use a diode and a resistor and the... 7/29/08, 9:53 AM Ten Pin ISP adapter
I've already built a six pin ISP adapter, but my Olmex cards use the ten pin ISP. I put a header on a scrap of perf board, added an LED for the heartbeat, and then connected the ten pin cable. Actually it is a fifteen pin cable, off a joystick... 7/16/08, 10:00 PM Hello 5x7 Style
Wrote a new firmware for the 5x7 display. Now it scrolls out 'hello' over and over again. I'm running it on a solar panel, so it wakes up with the sun and runs all day long. When I built the LED matrix I put resistors on the five columns. I'm starting... 6/17/08, 12:48 PM Provo, Utah
With a walkable downtown and access to two Universities, Provo Utah is a great location. I live next door in Orem. Kipplinger: Provo: Pristine Tech Mecca (Video) (Text) 6/2/08, 10:07 AM Another release of AVRISP sketch
There is a new release of the AVRISP emulation sketch for Arduino: avrisp.02.zip. This one should work with Mega8 and Mega168. mega-isp 5/28/08, 4:48 PM Sorting Out Page Sizes
There is a new release of AVRISP Emulation for Arduino. This is an Arduino firmware that allows you to program other AVR microcontrollers. The new zip file (avrisp.01.zip) should compile on the current Arduino IDE, and I changed the comments that put the wrong labels on the SPI pins. Go ahead... 5/27/08, 11:31 AM Flash Problems
I'm building a project using the AVR ATMega8 microcontroller. Once I got the thing wired up to where I could write firmware to it I found that it was always failing. I made a .hex file full of 0x10 values (256 bytes worth) and tried uploading that to the chip.... 5/16/08, 2:56 PM William's Arduino Board
I'm building an Arduino-compatible board for William. I'm building it on the Evil Mad Scientist MegaXX8 business card. It will have four built-in LEDs and a USB interface. It will also have connectors so he can use it with a breadboard. Perhaps we can connect it to some of his... 5/15/08, 7:26 AM Cybord Signal Detector
Some digital radio signals use Frequency Shift Keying (FSK). This often has one frequency for a Mark and one for a Space. I plan to build a cybord or other chip that will decode an FSK signal, producing three different values: NO_SIGNAL, MARK, and SPACE. The signals would then go... 5/15/08, 7:20 AM |