I am planning on selling kits, and they will be based on the ATmega328. I do not want to program then 1 at a time. My idea is a mass programmer. It sounds pretty simple... I would have a power input port, and that would go to a regulator that spreads out to an array of ZIF sockets. The Tx and Rx would be from an arduino mini programmer. The only issue is that I dont know if that little adapter can power 5 Tx and Rx lines... Would using npn transistors work for this? As in the serial powers 2 transistors, and those output 5 volts to all of the sockets.
I dont know how to do what your asking, but what would speed up the process is to get a ZIF(zero insertion force) socket and make a programmer with that. so you could just lay the chip on it and hit program, then just pick it up and throw it into the programmed pile.
thats basically the concept... but with 5 ZIF's
You might be able to work out something with transistors, but it might be better to use something like a series of non-inverting hex buffers or line drivers between each ZIF socket.
It can not work in this ways, you are using serial comms programmer to programme 5 ATmega328 at once, how can ecah chip reply to the programmer? please reade this How does it work?
Using serial comms programming, your ATmega328 need to have Arduino bootloader Burn in it, it will cost higher then those without it.
How many chips you need to programme? 2000 ? 5000 ?
It your volume is large, you can get Atmel to pre-programme it.
It can not work in this ways, you are using serial comms programmer to programme 5 ATmega328 at once, how can ecah chip reply to the programmer?
Not sure exactly what you're saying, but I think your point is valid; whether you are programming the bootloader, or trying to use the bootloader already on the chip.
Hmm - what would probably need to be done (this will take some thought and hacking, I think) is some kind of "round-robin" interface, where you program one, then use a multi-channel switch of some sort (relays or better, some kind of signal multiplexer chip) to switch the lines to each ZIF socket in turn. It wouldn't be as fast as the parallel form of programmer, but the software would be easier to work around...
Maybe you could borrow cr0sh's robot arm, and connect it to another Arduino.
Have the robot place a chip, flip the lever, and send commands to the PC. using GoBetwino to upload the program. Then, the robot could flip the lever again, and remove the chip, and start the process over again.
- You have to talk to each chip "individually" in order to program it properly.
- That's OK, because the actual programming is pretty fast for a small chip like the 328. if your programmer has enough space to hold the whole flash image of the chips being programmed, it can probably do the actual programming much more quickly than you think.
- which doesn't really matter, because the majority of the time will be taken up inserting chips into zif sockets, hitting the appropriate buttons, applying labels, removing and storing the chips, and other things OTHER than the actual programming anyway. Traditionally, things will move just quickly enough that you can't do something else at the same time
There are plenty of companies who would pre-program chips for you, not just Atmel. Talk to your local Atmel distributor and they will offer to do it, but press to get the names of companies who you can deal with directly.
I agree with westfw. You are probably the bottleneck.
You might be able to streamline the process by making the sort of programmer westfw describes; a programmer which would have the whole program on board, and program as fast as practical. You could arrange the ergonomics to suit the task.
If the program is small enough, you could fit it, and the ICSP programming code into an ATmega328, which you are already familiar with, then use it to program as fast as you can go.
All the pieces are available, but it'd take a bit of effort to bring them all together. It may be more cost effective to get them programmed for you.
[edit]Might make a handy gizmo for mass Arduino building sessions. Just have a $10+ZIF socket device, with one switch and a 'go button' ready to put the Arduino bootloader onto an ATmega328 or 168 (hence the switch). No need for a laptop, software, cables, ... Interesting ... ::)[/edit]
In theory at least, if you paralleled all the chips to program but ran their outputs to some majority detection gate, you could see all the replies from the chip as one and any that disagree with the majority would light up an LED and be ignored.
Its a nice challenge in logic circuitry to design such a gate - standard logic families have majority gates so you need one of these and a disagreement detector for each line... and then a flip flop to store the error status and some way to ignore short lived disagreements (due to differences in propagation delays)
On second thoughts listen to the other replies !
Jeremy1998,
What is your projected volume? If you are talking about less than 100 per day, I would imagine it is doable by programming one at a time. Unless you are talking about much larger volume, the standard way of programming it might be the most cost effective way.
With a ZIF socket, you can program at least one or two per minute.
398,000 hits on Google for "IC programming service". While working in electronics manufacturing we had equipment to program ICs. All the ICs were progammed individually with an automated handler using robotics to place the IC on the programming station and then label the device. For small quantities, less than 1K, it is likely cheaper to hire students at the local technical or high school to program them provided you have a good programmer with a ZIF socket.
tjmck
[edit]With a ZIF socket, you can program at least one or two per minute.[/edit]
I wonder if you could take the pins out of a spring socket, solder them onto a piece of perfboard, and then epoxy some pieces of space plastic around everything, creating a "contact socket" to program with?
Basically, a ZIF socket without the lever.
If you put a button underneath it, so that when you inserted the chip to be programmed it would be pressed, and alert the [edit]PC programmer (happy now, gomer?)[/edit] to begin the programming dump...
![]()
and alert the PC to begin the programming dump
I believe it is much faster (4x? more?) to get the PC out of the per-chip-programming picture.
As westfw suggested, a programmer (which might be nothing more than an ATmega328) containing the whole program on board, doing direct SPI to SPI programming, is quickest.
Might make a handy gizmo for mass Arduino building sessions. Just have a $10+ZIF socket device, with one switch and a 'go button' ready to put the Arduino bootloader onto an ATmega328 or 168 (hence the switch). No need for a laptop, software, cables, ... Interesting ...
thsi woud be useful indeed... how would i make one? do you have a tutorial?
and for the poeple sating direct chip to chip, how do i make one of those things?
im going to start another post about this, but with some different methods that you suggested.
Priio's SD-card based ISP Programmer
TheCableAVR-SD is a tool designed to serially program the Atmel In-System Programmable microcontrollers. The SD-Card version of the programmer works by saving the “ISP”, “HEX” and “EEP” files required for part programming from the PC application onto an SD-Card and inserting it into TheCableAVR-SD. This programmer is stand alone, making it very handy for field software updates and production programming.
This is another stand alone programmer
AVRISP SA2 - Stand Alone 2 Series