| Author |
Message |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
30 Nov 2007 14:07 at89s programmer |
|
|
|
|
I built a standalone ISP programmer for the AT89S51/52 devices using another 89S51 and a 24LC256 eeprom to store the hex file to be programmed.
The hex file and schematic is included. The hex file should work in most 8051 devices provided you follow the pinout in the schematic. The code is under 2K so it will even work in 89C2051/89S2051. (it wouldn't hurt to use two pullup 4.7K resistors on p1.0 and p1.1 if you use an 89C2051 for the programmer)
You just load the file to the eeprom with a terminal program, set the configuration, and then you can program the at89S device using the stored code in the eeprom without a PC. Remember there is no flow control when loading a hex file, therefore you must slow the data down to minimum 100mS delay per line so the data won't be lost. Most terminal programs will do this. I use terminal from windows 3.1, I find it is the best one with no bugs (better than hyperterminal)
I have only tested the programmer on the 89S51 and 89S52. I have not tested on the newer 89S2051 devices, but I expect it will work just the same.
Please read the instructions carefully. I tested this programmer and it does work good.
Just looking for some feedback or ways to improve. Any advice would be appreciated.
Good Luck
Edit Dec 2, 2007: I made some changes and I uploaded the source code.
In this version the incoming hex file is checked for valid line checksum.
The incoming file size is also checked (no more than 8K file).
I hope someone can "select helped me" if they use this code.
Screenshots are also included in this file.
Good Luck
Last edited by ctownsend on 02 Dec 2007 18:13; edited 2 times in total |
|
| Back to top |
|
 |
funnynypd
Joined: 09 May 2007 Posts: 918 Helped: 21 Location: USA & Canada
|
01 Dec 2007 16:00 isp programmer for at89s |
|
|
|
|
| Very good. Can you post some test result?
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
01 Dec 2007 23:42 isp 89s51 buffer verify error |
|
|
|
|
| funnynypd wrote: |
| Very good. Can you post some test result? |
Test result? What do you mean?
|
|
| Back to top |
|
 |
funnynypd
Joined: 09 May 2007 Posts: 918 Helped: 21 Location: USA & Canada
|
01 Dec 2007 23:54 isp programmer for 89s8253 |
|
|
|
|
Would you please show us some picture or screen-cut on successfully programming a chipset with your design?
|
|
| Back to top |
|
 |
wek
Joined: 21 Dec 2004 Posts: 239 Helped: 26
|
02 Dec 2007 0:01 target board isp at89 |
|
|
|
|
Very nice.
You might want to come and present it on the 8052.com Forum. I am sure you will receive a lot of comments on it there.
JW
|
|
| Back to top |
|
 |
sadat007
Joined: 01 Jan 1970 Posts: 428 Helped: 6 Location: Pakistan
|
02 Dec 2007 7:40 at89 series programmer |
|
|
|
|
Hi,
I request you to please put source code of the firmware, so may be some one covert it to any USB supporting controller like 18F2550 or can use PICKIT2 hardware to programme 89S.
Idea behind is to finally convert the simple PICKIT2 to a universal programmer.
Thanks
sadat007
|
|
| Back to top |
|
 |
funnynypd
Joined: 09 May 2007 Posts: 918 Helped: 21 Location: USA & Canada
|
02 Dec 2007 14:59 usb at89 programmer |
|
|
|
|
| This is super. Great idea.
|
|
| Back to top |
|
 |
chkhor2005
Joined: 04 Sep 2007 Posts: 29 Helped: 1
|
12 Dec 2007 10:28 at89s8253 usb programmer |
|
|
|
|
| Great, very good project. Will build it soon.
|
|
| Back to top |
|
 |
mcs51mc
Joined: 19 Jul 2007 Posts: 73 Helped: 16 Location: Belgium
|
12 Dec 2007 12:18 serial programmer for 89s8253 |
|
|
|
|
| wek wrote: |
| You might want to come and present it on the 8052.com Forum. I am sure you will receive a lot of comments on it there. |
How do I need to interpret the last sentence or ??
Allow me to be a little negative on this design
Everyone has a laptop nowadays, so why should I use your design instead of connecting my laptop directly to the target board?
What is the added value of your design compared to direct connection laptop-target board?
Please educate me
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
12 Dec 2007 21:44 at89 with added ram |
|
|
|
|
| mcs51mc wrote: |
why should I use your design instead of connecting my laptop directly to the target board?
|
The ISP software that uses the parallel port is nothing but ONE BIG headache,ESPECIALLY if you are running windows XP. Haven't you seen numerous postings about how the person built the programmer and it doesn't work?
The cable length (I found) is one big problem with the way that programmer works.
I prefer a serial port programmer equipped with a microcontroller that does all of the programming, and communicates with hyperterminal or any other terminal program.
| mcs51mc wrote: |
What is the added value of your design compared to direct connection laptop-target board?
Please educate me  |
I have often (not always) had problems using the printer port on my laptop as compared with my desktop when the voltage is taken from the parallel port as with FBPRG16 ISP programming software.
I had to program some devices outside, far away from the house where there is no power. It seemed to be a big nuisance to remove the device and bring it in the house just to program it, not to mention the fact that I would have to bring a laptop outside, a small table or chair, all the programming cables, and a power supply for the programmer (battery or whatever).
The standalone unit worked (FOR ME) because it programmed, verified, & LOCKED the device in just a few seconds without trouble.
IF you use it, please let me know how I can improve the design. I am always looking for new ideas.
Best Regards
|
|
| Back to top |
|
 |
@t
Joined: 14 May 2005 Posts: 20
|
12 Mar 2008 11:57 build at89 series programmer |
|
|
|
|
[quote="ctownsend"] I built a standalone ISP programmer for the AT89S51/52 //
Hello ctownsend,
Handy design and very well documented. I will try this out (in the near future) for programming the 89S8253 and the 80C535 chips.
Thanks for your info, if I have some results I will report back.
At.
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
12 Mar 2008 15:04 89s51 isp programmer sources |
|
|
|
|
| @t wrote: |
Hello ctownsend,
Handy design and very well documented. I will try this out (in the near future) for programming the 89S8253 and the 80C535 chips.
Thanks for your info, if I have some results I will report back.
At. |
Good to see someone else is making use of this.
at this time it only supports 89S51/89S52 devices. However the source is included, which makes it very easy to change. Just have a look at the datasheet.
Good luck
|
|
| Back to top |
|
 |
TAMAWOOD
Joined: 20 Mar 2008 Posts: 2
|
20 Mar 2008 20:13 at89s isp |
|
|
|
|
Sorry, but I can't find the circuit. It isn't in the zip file, where is it??
I did find it, I'm sure I had seen it before but just couldn't find it, take a break , have coffee and there it is!
|
|
| Back to top |
|
 |
Medtronic
Joined: 19 May 2005 Posts: 164 Helped: 11 Location: Egypt
|
25 Jul 2008 10:23 89s8253 isp circuit |
|
|
|
|
| Very good idea i'll test it soon
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
28 Jul 2008 14:39 at89 usb isp |
|
|
|
|
hi ctownsend
very well documented it is!!
...
thank for the up..anyway..can you help me in my case?
i need and ISP programmer for the 89s52...but i dont have thye EEPROM needed, can i ask a help on build a direct one? connected on Serial port, or by USB??
ill be using 2051...so ill need to put some pull-up..
kindly help me...need it badly..and immediately...i could make one by reading your program, but for now its not my major problem..hehehe..plsss
just a very low cost design, without any led, and also, very good idea using a hyperterminal..
maybe in my case, a byte to byte transimision from the hyperternal would o, concidering 9600 buad rate..which is i think dont need some delay...
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
28 Jul 2008 15:12 at89 programmer usbasp |
|
|
|
|
| leoren_tm wrote: |
i need and ISP programmer for the 89s52...but i dont have thye EEPROM needed, can i ask a help on build a direct one? connected on Serial port, or by USB??
|
You can use hyperterminal to send the hex file HOWEVER you will need to slow down the data coming in, or you will lose data, and of course, it won't be a standalone unit.
I tried to use hardware handshaking (for transferring the data) with CTS, RTS but was never successful.
If I remember correctly, there is a routine to receive the hex file from hyperterminal that is stored in the eeprom. You can use the same routine and eliminate the eeprom.
When the data comes in, it is buffered one line at a time (how ever many bytes are in the line indicated by the length byte) What you will need to do is program one line at a time as it is buffered. So instead of programming the eeprom, just write the buffered data from ram buffer into the flash that is being programmed.
This will require a long delay in hyperterminal after it sends one line to the programmer. In hyperterminal you can specify line delay, (File, properties, ASCII Setup, Line Delay ___ milliseconds).
Also, I seem to remember doing some sort of configuration held in eeprom. The routine is called Config (if I remember correctly). That is, whether or not the programmer will erase or LOCK the device to be programmed. This configuration data is held in the eeprom.
You can eliminate the above just by always erasing the device before programming and always locking the device after programming. All of the I2C routines can be eliminated, making the code very small!
Glad to see someone is making use of this programmer. I needed it badly for about one month, then we switched to a much newer device with a totally different programming system!
I should be around if you have questions.
Good Luck
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
29 Jul 2008 14:30 at89 in system programmer usb source code |
|
|
|
|
wow..great reply..
that was im thinking..but i think i could go around a week...but im realy planing to convert it..i donwloaded some ready made, but ont have enough documentation, and
i realy appreciate your post.,,with the use of terminal...anyway..i was asking if you made it already...not its not :c then ill try to make one..from your code...
your a very good programmer..
i already made the hardware, and if ill make application, maybe another week, to solve that..ill use your idea...(with your permission?) but i would not say..i can do it..
ill try..and next in my post...would be many and many question..if its ok with you..
cheerSS
i was thinking that..your using a send text file on hyperterminal..right?? and a line...uhmm..that is what im thinking would be difficult, to store first the received line, then extract the per byte.
Added after 1 hours 35 minutes:
this is my circuit..led could be elimanated..
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
30 Jul 2008 14:37 build a standalone isp programmer |
|
|
|
|
| about the eeprom...do it realy need 256??
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
31 Jul 2008 22:04 i2c between at89 |
|
|
|
|
| leoren_tm wrote: |
| about the eeprom...do it realy need 256?? |
no, all you need is 8K (for the size of flash you are programming)
Of course the code will have to be modified maybe the I2C addressing depending on what eeprom you choose, and the config routine (where the configuration bytes are stored in the eeprom)
I used 24LC256 because I had a few of them here.
Generally when I am building something simple, I always try to use the parts I have here, to prevent paying shipping and minimum order costs just for a small project.
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
31 Jul 2008 22:48 at89 universal programer |
|
|
|
|
as i thot.. .. im dont have expereince yet on EEPROM, what if i use (24c64)64k? what shall i change?
Added after 4 minutes:
and also..i would like to suggest...if use 2051MCU., change the pinouts..cause you need pull-up on 1.0 and 1.1
|
|
| Back to top |
|
 |
Google AdSense

|
31 Jul 2008 22:48 Ads |
|
|
|
|
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
31 Jul 2008 23:08 how isp programmer works? |
|
|
|
|
| leoren_tm wrote: |
as i thot.. .. im dont have expereince yet on EEPROM, what if i use (24c64)64k? what shall i change?
Added after 4 minutes:
and also..i would like to suggest...if use 2051MCU., change the pinouts..cause you need pull-up on 1.0 and 1.1 |
it should work just the way it is. Originally I used an 89C51 because the dev board I had used that chip. In the 89C51, you don't need pullups on P1.0, P1.1 unless those pins were to be used for I2C.
You can change the pinout to whatever you want.
change this:
| Code: |
RST equ p1.0 ;
SCK equ p1.1 ;
|
to this:
| Code: |
RST equ p3.4 ;
SCK equ p3.5 ;
|
for smaller eeproms you might have to change these addresses to smaller values:
| Code: |
Config_Data equ 2000h ; ext eeprom config byte
LastAddr equ 2001h ; last address Programmed
|
Good Luck
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
01 Aug 2008 14:48 buffer verify error in 89s52 |
|
|
|
|
hi.. i was able to create the hardware and test it..
first i observed you need sometimes to restart your target board ...it say error in programming..
then iwrite this code
and resulted to
i did it many times..i write tru ISP then read to a serial programmer, i got that result..
my code in assembly would be
| Code: |
org 0
sjmp main
mov p1,#0ff( mov 90, #0ff) |
on the result
| Code: |
| 3A means ADDC A, R1 (i think) |
any posible solution??
i read the code,,and i did not find any worng..
anyway..
thanks...YOU MADE SAVE ME!!!
Added after 3 minutes:
i forgot where i put my notes..ill post the whole detail tomorrow
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
03 Aug 2008 14:05 at89 programmer source code |
|
|
|
|
| thats the result...it the same
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
04 Aug 2008 22:07 at89 serial programmer |
|
|
|
|
obviously the file is not being verified, which is why you get the programming error.
Did you use pullup resistors on the I2C lines? IF you build the programmer exactly like in the schematic, and do not modify the code it works great.
Did you set the configuration data before programming? You must enable erase before programming.
Can you load the file into the eeprom (from the terminal) then remove the eeprom and read it with another programmer. If the file is not the same, your speed is to fast from the PC to the programmer.
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
05 Aug 2008 15:27 atmel at89 programmer pcb |
|
|
|
|
i did the configuration .. and i use 89s52 and didnot put any pull up.
i reas the EEPROM from a programmer, there i found the error..it means i dont have problem on I2C...the problem was on writing the EEPROM, i also try this code
so that i dont have data below, but the result
say
the first addres must be empty..and also..instead of 00 it write FF...any suggestion to solve this??
thankyou
Added after 1 hours 24 minutes:
i mean all 00 became FF
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
05 Aug 2008 21:05 read write locked at89 |
|
|
|
|
you need 4.7K pullups on both I2C lines. (SDA and SCL) Look at the schematic.
That should solve your problem.
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
05 Aug 2008 22:22 89 series peogrammer pcb |
|
|
|
|
i have pull-up on the EEPROM, it wont work with out that...
as i said, the error is on the first 3 byte...and all are ok...i think i can conclude that the
circuit it working because of that...its just that, i dont know where that extra 3 byte came from..
|
|
| Back to top |
|
 |
madicalphy
Joined: 22 Jul 2007 Posts: 68 Helped: 3
|
06 Aug 2008 8:06 isp 89s programmer |
|
|
|
|
hi,
i have used your designed ISP serial programmer, but one thing i notice is, it has some problem with RST PIN of target, after programming it does not goes back to logic 0, so that target device may get reset and start program.
or it has to be disconnected after programming?
please explain it.
|
|
| Back to top |
|
 |
ctownsend
Joined: 27 Nov 2004 Posts: 301 Helped: 21 Location: Canada
|
06 Aug 2008 11:57 programing board at89 |
|
|
|
|
| madicalphy wrote: |
hi,
i have used your designed ISP serial programmer, but one thing i notice is, it has some problem with RST PIN of target, after programming it does not goes back to logic 0, so that target device may get reset and start program.
or it has to be disconnected after programming?
please explain it. |
once programming is completed this routine is executed:
| Code: |
EndProg:
clr SCK
clr RST ; remove reset from target
.......
ljmp Main ;
|
this from page 16 in the datasheet:
| Code: |
5. At the end of a programming session, RST can be set low to commence normal device operation.
Power-off sequence (if needed):
1. Set XTAL1 to “L” (if a crystal is not used).
2. Set RST to “L”.
3. Turn VCC power off. |
if for some reason you were to restart the programming over again, the device would reset again.
You should disconnect the cable when you are finished programming.
Added after 9 minutes:
| leoren_tm wrote: |
i have pull-up on the EEPROM, it wont work with out that...
as i said, the error is on the first 3 byte...and all are ok...i think i can conclude that the
circuit it working because of that...its just that, i dont know where that extra 3 byte came from.. |
to leoren_tm:
ok so please answer these questions so that I can help you.
1. When you load the file from the computer then remove the eeprom and read it, compare the tow files. Do the two files match?
2. If the computer file & eeprom files match, what happens when you program it? Does it verify, or do you get a verify error? IF you read the flash with another programmer, does the flash match what is in the eeprom file you read?
OR
Does the flash match the file from the computer?
If the eeprom file does not match the computer file you are sending, try and slow down the data from the terminal. Look above in one of my other posts on how to do this.
Good Luck
|
|
| Back to top |
|
 |
leoren_tm
Joined: 19 Dec 2005 Posts: 649 Helped: 20
|
06 Aug 2008 16:06 89c51 isp sequence |
|
|
|
|
thanks...done..work PERFECT,,..
i did not change the config byte, i use a smaller EEPRON, thats the reason
the 3 byte was the config and last address byte,...
thank you soo much..
|
|
| Back to top |
|
 |