Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

AT89ISP Notes (and possibly other parallel port driven programmers)

Jon Wilder

Active Member
So I have an Atmel AT89ISP cable. After 15 solid years of faithful service, the only machine I had with a parallel port quit on me a year ago.

Actually, I did have a Sony Vaio from 2005 that had been sitting for many years. Last time I ran it, it was a running machine. Decided to get that going again. Installed a Western Digital 240GB SSD and threw Windows 7 on it. Repeating BSOD's, error code 0x124. After many hours of messing with it, to include different video card, different memory sticks, dusting out fans, heat sinks, and power supply, replacing Windows chipset drivers with the OEM drivers, and a host of other tricks, it just does not want to run. The mobo is more than likely kaput on that one as well.

Then I decide to order a Startech 1S1P PCI-E based parallel and serial port card. The card itself works, but will not work with the AT89ISP cable. Further research revealed that PCI-E parallel port cards are hard assigned IO addresses that are well outside of the legacy ISA IO range (most on-board parallel ports have a base address of 0378h) and there is no way to remap this. The AT89ISP software only works on ISA addresses. Attempting to manually set the address in AT89ISP to match the IO address of the card yielded no results. It still would not see the cable.

As I was searching for a refurbished motherboard, I happened to stumble upon the mikroProg 8051 programmer. This is a USB solution that costed a bit less than a refurb legacy machine. It also shares the same pin out as the AT89ISP cable.

I just ordered one from Mouser. Should arrive on Wednesday.
 
Unfortunately, parallel port cards tend not to work with 'bit banging' parallel port programmers, I suspect it's because they are perhaps only simulating an actual address to fool Windows?. Also, any version of Windows since 3.1/95 or so (I'm can't remember about Win98?) doesn't allow direct access to the ports, so requires a special driver to do so - it's possible (quite likely?) that the driver doesn't allow access outside the standard range.

Back when I was writing WinPicProg though, I seem to recall that even on Win3.1 such cards didn't work via bit banging, and that was prior to needing drivers.

Basically do what you've done - don't mess about with 30 year old programmers, get a modern proper USB one, which has a processor on the board to do the actual work, and the PC merely transfers data to it.
 
Unfortunately, parallel port cards tend not to work with 'bit banging' parallel port programmers, I suspect it's because they are perhaps only simulating an actual address to fool Windows?. Also, any version of Windows since 3.1/95 or so (I'm can't remember about Win98?) doesn't allow direct access to the ports, so requires a special driver to do so - it's possible (quite likely?) that the driver doesn't allow access outside the standard range.

Back when I was writing WinPicProg though, I seem to recall that even on Win3.1 such cards didn't work via bit banging, and that was prior to needing drivers.

Basically do what you've done - don't mess about with 30 year old programmers, get a modern proper USB one, which has a processor on the board to do the actual work, and the PC merely transfers data to it.
Thanks Nigel! Yeah I'd even toyed with the idea of writing an application for Raspberry Pi to use its SPI port for AT89S devices. I just don't have the time these days. Especially when there's just something on the market already that will do exactly what I need.

I just got my mikroProg 8051 today. It works like a charm!

Supported Processors -
AT89S51
AT89S52
AT89S52E
AT89S53
AT89S2051
AT89S4051
AT89S8252
AT89S8253
AT89LP213
AT89LP214
AT89LP216
AT89LP428
AT89LP828
AT89LP2052
AT89LP4052

Key differences to note:

AT89ISP - Code and EEPROM reside in the same *.hex file
8051Flash - Code must reside in its own hex file with the .hex extention. EE data must reside in its own hex file with the .ihex extension.

You cannot simply extract the EEPROM data from a single hex file written with EEPROM data. This is because the EEPROM data in the hex file would be addressed to the range of 3000h - 37FFh. It wants ALL EEPROM data in its own file using addresses 0000h - 07FFh (the 8051Flash software applies the 3000h offset). I actually created a project in Keil just for writing a separate EEPROM hex file (file extension renamed to .ihex after assembling).

Other than that, it was very simple to figure out. Not much learning curve at all. Had it up and running within minutes.

It supports nearly all AT89S devices, to include the venerible AT89S8253.

I highly recommend the mikroProg 8051 for any AT89S based project.
 
Last edited:

Latest threads

New Articles From Microcontroller Tips

Back
Top