My AVRISP mkII decided to refuse cooperation with avrdude, preventing me from using it with Arduino IDE any more. Meanwhile I don't really have an Arduino in spare to use for any generic programming.
So I designed this, M184v1, an Arduino Uno equivalent permanently connected as Arduino as ISP, and added a MOSFET level shifter just for the fun of it. (and the dual-MOSFET construct now allows this level shifter being used to shift the levels both ways.)
Also added is a button and an AT24C512 EEPROM chip so I can store even the largest Flash+EEPROM image (for ATmega2560) and implement that "press to program" feature I lifted from PICkit.
Core components: MCU: Atmel ATmega328P-AU, USB to Serial: WCH CH340G: PTP Storage: Atmel AT24C512, level shifters: 2N7002.
I have similar - programmer for Atmega chips in 3.3V & 5V system, hex file selected from SD card, no PC access needed. http://crossroadsfencing.com/BobuinoRev17/index.html
2 versions: one to select 1 of 16 files, one to select one of 256 files.
CrossRoads:
I have similar - programmer for Atmega chips in 3.3V & 5V system, hex file selected from SD card, no PC access needed. Cross Roads Electronics
2 versions: one to select 1 of 16 files, one to select one of 256 files.
That is lovely but still there are a few features missing: 1) avrdude and Atmel Studio support (M184v1 can be updated with STK500v2 protocol, which allows using with Atmel Studio and avrdude simultaneously) and 2) more voltage options (the dual MOSFET level shifter can go all the way up until the MOSFETs are fried and all the way down to two diode drops, so my board can work with AVRs running from 1.8V to about 35V)
On the schematic under level shifting, why do you say, "Do not try 3.3...", is that not the point of the level shift so it can program a 3.3V board. In Atmel, doc0943 they say the allowed voltage range for ICSP is 2.7 through 6V. I have a feeling the programming time needs to be compensated for lower voltages. The Dragon I have reads the voltage and also has some sort of level shift. One other problem at least for me is that I use a six pin ICSP interface... just like you have for your MCU. So if you want to program one of your own boards then you will need an adaptor I guess.
On the schematic under level shifting, why do you say, "Do not try 3.3...", is that not the point of the level shift so it can program a 3.3V board. In Atmel, doc0943 they say the allowed voltage range for ICSP is 2.7 through 6V. I have a feeling the programming time needs to be compensated for lower voltages. The Dragon I have reads the voltage and also has some sort of level shift. One other problem at least for me is that I use a six pin ICSP interface... just like you have for your MCU. So if you want to program one of your own boards then you will need an adaptor I guess.
It says "do not fry 3.3V..." and the version of level shifter I implemented here allow both up- and down-shifting so it covers a larger range.
And I have a few spare 10-pin to 6-pin adapters (and some of my boards actually takes the 10-pin ICSP)
That is funny, but at least it makes sense to me now.
It also crossed my mind that if the board is running from 5V, then maybe level converting in both directions is overkill. Guess I will have to do my own board to get the six pin, but I think the ideas you have shown are sound.
ron_sutherland:
That is funny, but at least it makes sense to me now.
It also crossed my mind that if the board is running from 5V, then maybe level converting in both directions is overkill. Guess I will have to do my own board to get the six pin, but I think the ideas you have shown are sound.
It is still possible someone is running the AVR at 6V (4x AA's) so I need the bidirectional (in both senses) level shifter.