I started selling the EEPROM writer kits six weeks ago. Now seems like a good time to reflect.
I’ve kept a spreadsheet of what I’ve spent on the kits (buying stock, getting PCBs made, postage, etc) and what money has come in. It seems that running your own business (however small and weedy it may be) is all about being perpetually in debt. I think the skill comes in deciding how far into debt you’ll let yourself go.
I want to be able to get orders out quickly (ideally within 24 hours). That means I need to have all the stock ready to go – I had no idea how many orders I’d get, so when purchasing I err’d on the optimistic side.
To be able to make the kits competitively priced, I had to order from the far-east. That might take a month to arrive, so I needed to spend a fair amount of money well in advance.
So I was already very nervous and broke before I even listed the product!
When my fifth kit sold, I became profitable … briefly. Then I realised I would soon be running out of stock so I needed to order more (remember: one month to arrive) so I descended back into debt again.
And we’re only talking about comparatively small figures, here. Heaven knows how proper businesses do it!
Looking at the figures, I feel like I’m probably under-charging. And yet I feel guilty about charging any more. So whenever you buy a kit from a hobbyist, remember: the vendor is walking a very fine line between guilt and financial solvency.
If you think you could get the parts and build it cheaper yourself then … well, you might be right, but the saving won’t be as much as you might think. And you’re not paying for R&D time, experimentation, failed prototypes, storage, stress, alcohol, bank balances, visits to the post office, printing instructions, and so on. When you start to track this properly, the true cost becomes much more apparent. Honestly: we’re not trying to swindle you!
Aside from that, most other aspects of the last six weeks have been great fun. It’s a curiously addictive feeling when you receive a new-order e-mail. Every address I’ve seen I’ve looked at on Google Street View because I wanted to see where the parcel was going (and I’ve discovered I quite like the look of Arizona). And chatting to people with questions has been fun, too.
With all that in mind … I have another project ready to be listed this week. Nearly all the parts have arrived, and I’m already quite impressively in-debt. It’s a bit more interesting than an EEPROM writer, and I hope people will like it and do interesting things with it. I’ll try and fight the urge to under-charge, and we’ll see how it goes. I hope you like projects with lots of LEDs!
[To the EEPROM Writer Project page]
Hi I am fighting with this project for quite a while. I have a genuine 2560 Mega and a breadboard. I tried different 28- and 32-pin SRAM and EEPROM : 28C64 AP, 39SF010A, AM29F040B, NEC D431000. In all cases I manage to read or write just the byte at 0x0000. If I connect 28C64, which does not have A13 or A14, I can work within Arduino IDE (write 1 byte), but windows app shows connection error. If a 32 pin EEPROM is mounted, Windows app connects OK, but reads and writes garbage. Any ideas?
The original purpose of the series of blog articles was just to demonstrate how to access parallel ROMs, and read/write SRAMs and the like. Just a demonstrator, so you can see how they work. I certainly can’t guarantee compatibility with all devices, and I can’t really offer much help based on the little information you’ve given me. But I’d advise that while you’re experimenting with a new device, you should access the Arduino via the Arduino serial monitor (using the “R” and “W” commands, etc) and ignore the Windows app to begin with. It’ll just make the problem harder to see. Just type “R0000” into the monitor so it reads the first sixteen bytes. When it’s doing that reliably (it always returns the same data) you can be more sure your wiring is OK, and start looking at how to write things.
Flash devices can be very different from standard SRAMs. They often require special commands in order to blank areas before you can program them. The best way to find out about these is to find the datasheet for those devices. For example, this is the datasheet for the AM29F040B:
http://instrumentation.obs.carnegiescience.edu/ccd/parts/AM29F040B.pdf
If you look on page 14 of that doc, you’ll see the commands for erasing areas of the device.
Dealing with flash devices with these commands can be VERY frustrating, so I’d advise you to start with simple SRAM devices and EEPROMs like the 28C64 (which don’t have these extra commands), as when you’re happy with how those work, you can move on to the harder ones.
Also, obviously: check your wiring. Any address lines that you’re not using need to be tied to 0v rather than left “floating”. Otherwise, you’ll be reading/writing random locations. And the /OE and R/W pins must be handled properly (so to read, /OE must be low and R/W must be high) otherwise you may be reading junk.