DT106 28/40 Pin PICmicro on a SimmStick

  Download Schematic

Features

  • 28, and 40 pin footprints to suit all current PICmicro flash PIC1687x devices.
  • Alternative RS-232 or RS-485 Comms
  • 78L05 Regulator
  • EEPROM - same pinout as MicroChip 24LCxx family.
  • 8570 Ram. can be used as second eeprom location.
  • Optional power up/reset circuit which allows both a cmos and open collector Brown Out circuit chips to be fitted.
  • LCD 14/16 pin header, and mounting holes for selected 1 and 2 line displays, plus contrast pot.
  • Can use either a Crystal (and Caps), or Resonator.
  • 40 pin header (40 pin dip compatible) at the top of the board.
  • DS-1302 Real Time Clock.
  • SimmStick compatible -  Load/Run operation for Flash Micros when used with DT001.
  • 10 pin header matching the programming header on the DT001.

Assembly Instructions:

Also read DT001 for programming a Flash PICmicro SimmStick in slot 1
Read P16PRO regarding software Registration for programming the 87x family (Programming the 877 with P16PRO)

The Micro can be any of the new flash 87x family and many old PICmicros that fit the 28 pin skinny Dip and 40 pin DIP footprints.

You can even change Micro types if you install a 28 pin socket in the U5 position, and two 20 pin machine pin strips into the U1 position.

78L05 +5 VR1 TO-92 Voltage regulator (Optional)
Capacitor C5 15pf Ceramic (should suit all crystals)
Capacitor C6 15pf Ceramic (See data sheet p135 for details)

And either a Crystal of a suitable value, or a 3 pin Resonator. If a crystal is fitted then C5 and C6 must be installed. If you use a Resonator, then you mustn't install these two caps.

1 x Capacitor C9  10uf Tantalum or Electro.
1 x Capacitor C10 .01uf (or .1uf) Ceramic
1 x Capacitor C11 .01uf (or .1uf) Ceramic
1 x Capacitor C12 10uf Tantalum or Electro.
1 x Capacitor C13 .01uf (or .1uf) Ceramic
1 x Capacitor C14 .01uf (or .1uf) Ceramic
1 x Resistor  R1 10K .25 watt
1 x Resistor  R2 10K .25 watt
1 x Resistor  R3 470 Ohms .25 watt

There is an option for a series resistor (R3) between OSC2 and the crystal.  The 16F87x data sheet shows this resistor in Figure 12-2 on page 135 of the data sheet. Use a 470 ohm resistor there when running the chip in HS mode, or it will burn up the crystal very quickly. Most users should simply install the 470 Ohm resistor.

1 x Resistor  R4 10K .25 watt
1 x Resistor  R5 10K .25 watt
1 x Resistor  R6 10K .25 watt
X1 Crystal or Resonator to match your clock 
   requirements. The most common device used 
   is a 20Mhz Crystal and two 15pf caps.
X2 32.768khz Crystal and C7 & C8 (22pf)
   Optional Timer 1 input - used for U1 input.
X3 32.768khz Crystal with a load capacitance 
   of 6pf. (For Optional DS-1302 Clock)
POT 10K (For Optional LCD)
Optional RS-232 Serial Communications:
1 x Capacitor C1 1uf Electro or Tant. @16 V.
1 x Capacitor C2 1uf Electro or Tant. @16 V.
1 x Capacitor C3 1uf Electro or Tant. @16 V.
1 x Capacitor C4 1uf Electro or Tant. @16 V.
1 x MAX-232 U2 (or equivalent)

It may pay to install a 16 pin socket for the Max-232, 
as you may have to remove it for some configurations.

Optional RS-485 Serial Communications:

1 x MAX-485 U5 (or equivalent)

RS-232 and RS-485 Comms can't be installed together as the chip footprints overlap each other.

Brown-Out Circuit:

This small IC (U6) in a TO-92 package is used to stop the Micro operation becoming unpredictable during a power 'brown-out'. In most cases this isn't required. It's just an added precaution for reliable operation. The older PICmicros may well need this device. You don't need it for an 87x chip.

By just simply ignoring the brown-out circuit and installing resistors R1 and R2, the circuit operation should be fine.

R1, R2, and R3 must be installed at all times for normal operation - even if you don't use a brown-out circuit.

If you wish to use the brown-out circuit, it's just added to the board, and can be either a CMOS or Open Collector type.
You can use the following I.C.'s:

  • Panasonic MN13811-S (Open Collector)
  • Panasonic MN1381-S (CMOS)
  • Zetek ZM33064
  • Motorola MC33064/P

Other types may also be suitable. These should switch at between 4.2 and 4.6Volts. This is for +5 Volt operation.

Headers

JP1:
Serial Out Jumper block, default connected.

JP2:
Serial In Jumper block, default connected.

JP1 and JP2 can easily be isolated or reversed, by cutting the tracks on the solder side of the board, and soldering in a 4 pin male header (2x2) to suit. Jumper links, or test links can be used to connect, isolate, or swap over the comms lines. The links horizontal will be the default, the links vertical will swap them over.

JP3:
Header block for unused gates of the MAX-232. These are spares, but can be useable if jumpered correctly for other handshaking RS-232 lines.

JP4:
VCC Isolate to 40 pin header J1. Default Isolated. If you wanted to run a target board from the DT106 board via J1, then it may need to have the +5V removed if it had it's own supply, as you can't have two +5V sources connected together.

JP5:
Used to Isolate the +5V signal on the edge connector from the 78L05 regulator output if it is installed. Both outputs should never be used together. The track on the solder side of the board under JP5 needs to be cut to isolate the 78L05 regulator output. A test link and two male posts are used to reinstall the regulator output.

J1:
40 pin header, pin for pin layout compatible with 40 pin Micro.
Also read the notes on the J4 Programming header.

J2: Real Time Clock:
Used for Dallas DS-1302 to get power from a standby battery to it's VCC2.
The Dallas DS-1302(U8) requires a crystal (X3) with a load capacitance of 6pf. We have these 32.768khz crystals in stock.
Sample code can be found at http://www.dontronics.com/rtc.html

J3:
The Real Time Clock control lines can be connected to here. Make sure you don't conflict with other signals used.

J4:
Programming header. Default connected through J4 on the solder side of the board.
This header mates with J1, the 10 pin programming Header on the DT001 board, and if a 10 pin header cable is made up with flat ribbon cable, the board can be programmed via this cable. You have to cut the tracks on the solder side of the DT106 board, but make sure you don't cut the earth track (pins 9 and 10) The other 4 tracks can be cut.
This allows the program/run switch on the DT001 board to be used. To return the header to a stand alone controller, 4 Test Links need to be used when the IDC crimp connector cable is removed. These must be placed across header J4, pins 1 and 2, 3 and 4, 5 and 6, and 7 and 8.
This header pinout is the same as the Dr. Russ Reiss Configuration, however a suitable cable can be made up to match it with any ISP programmer.

Emulator:?

The 40 pin header is pin compatible with chip, so you would need to solder header on the solder side for an emulator pod.

This allows you to program the board just via a 10 pin flat ribbon cable. If a 40 pin header is used in position J1, then the setup can be effectively used as an emulator. But watch out for pin crossover. If you crimp a 40 wire cable with a .6" DIP connector one end, and a .1" by 2 rows of 20 pins IDC type connector the other, you will find that you need to solder the 40 pin male header onto the DT106 board on the solder side of the board.
Please believe me that this happens in 99% of cases. The subject is well discussed on the PIClist.

User Feedback Notes

For anyone who wants to test the LCD display using the LCDTEST program on Peter Averill's site (http://www.labyrinth.net.au/~donmck/vicuni/lcd877.html), you have to swap around the rs and r_w I/O lines in the source code. This is the difference between the DT106 board and the PIC004 board. An obvious human error not worth changing back to match the old board.

I noticed that the two vias in-between the crystal and the LCD connector could potentially be shorted out if the crystal is mounted flush on the board. The crystal should be spaced off or an insulator used to prevent this.

Loading and Isolation Problems with programming

Using Slot One of the DT001 board

The DT106 will program in much the same manner as the DT101 using an 84, however there are some conflicts.
As you have only 30 pins on the Simm Bus, some signals will be missing between the slot 1 DT106, and slots 2 to 7.
These would need to be manually jumpered from perhaps the J1 header to a second DT106 board, if the full signals need to be transferred between SimmSticks.

As the DT106 board has provision for peripherals on RB6 and RB7, which are programming pins, you would eithe need to remove these devices (LCD and JI I/O), or use the programming header principle.

For instance, you could put the DT106 into Slot 2, install the programming header between the DT001 and DT106 board, remember to cut the correct tracks on the solder side of the DT106 board, and you have full isolation of the LCD and J1 header.

Using a stand alone board with a programming header

Pretty straight forward. You install the header cable, cut the tracks so you have full isolation. You can then connect a 40 wire header cable (on the solder side of the board) off to your target system. This can be any 87x target board. You just pop the 40 pin header into your board. Depending on VCC requirements, you may choose to use JP4 to isolate or extend the power to the target board.

28 pin Skinny Dip:

OK, there is no way you are going to get this matching up via a 40 pin header system, but it's not that hard to do.
1) Crimp a special cable.
2) Use a small vero board to give you a 40 pin input to a 28 pin output with male header pins, and 28 wires., and use crimp connectors in and out. Many variations on this. You are an engineer. I can hear your brain ticking now. :-)



Changes to the old PIC004 schematic: (these are available on special for $5AUD Limited stock)
Remove the transistor comms and replace with RS-232 chip, same as DT101.
Replace the 7805 with 78L05, same as other SimmSticks.
Remove 8570 Ram. Not popular. (maybe leave, can be a second Eeprom location)
Leave EEPROM, same pinout for MicroChip 24LCxx family.
Does it need provision for power up/reset circuit, same as DT101? This board should still be useable for the older non flash 40 pin devices. This allows both a cmos and open collector B/O circuit chip to be fitted if the user chooses to use one.
(1-Jul-99 same B/O as DT101, suits all chips, and can be an optional component in either CMOS or Open Collector)
Provision for LCD 14/16 pin header on the top edge of the board? Will mean a pot as well.
Provision for Crystal or Resonator clock, same as other SimmSticks.
A 40 pin header (40 pin dip compatible) at the top edge of the board.
Other minor Changes:
Remove clock in/out tracks to bus. I am starting to think that these are the two most under-used pins on the bus. If you had multiple processors, would you really want to run clock signals along the bus? Or simply use an extra crystal?

Ian Du Rieu has a good target board interfacing idea for SimmStick:
See the bottom of the DT001CHA page. Peter Homann has another way of doing it.
You would use two DT106 boards, one in slot 1 of the DT001 board, this is the programming slot, and another in the last slot.

The board in slot 1 will have the micro and crystal, and is switched from programming mode to run mode using the on board 4PDT switch. This disconnects the peripheral signals (your custom circuitry) during the programming phase, and adds it to the other slots in the Run mode. The extra signals of the 40 pin device will need to be jumpered with the 20 pin header and flat ribbon cable between the two DT106 boards. This won't be required for 28 pin micros, and certainly isn't needed on the original 18 pin DT101 setup.

The second DT106 board can then be used to jumper your full 40 pins to a target board via a 40 pin to 40 pin header cable with DIP crimp connectors. By using the "PAD Solder" method on the clock and +5V lines, means the clock isn't extended to your target board, and the +5V can be sourced from your target board, or the Simm bus, again, your choice. It means any PICmicro flash part can be developed in the actual final circuit board, whatever that may be.
Have a read over the DT101 method of doing it, if this sounds complex. See: dt001cha.html


Subject:          Re: 877
Date:              Tue, 22 Jun 1999 00:50:31 +0930
From:              Ian Du Rieu <idurieu@
Organization:  http://www.LeonAudio.com.au
To:                 Don McKenzie <don@

Hi Don.

Bits arrived today. Thanks.

I reckon 1 PCB will do both prototype and emulator functions. See attached JPG. I propose 2 cables for the 40 pin header.
-One to a 40 pin DIP for emulator function. This has GND & all the data lines only

-The other to connect to a prototype rig. This has all pins except xtal
Be nice if the new PCB was a bit taller. Make it easier to get to the reset button.
It appears that having pins 1 & 2 swapped in the 40 pin IDC/PCB transition connector is the norm. Couldn't find any that didn't do this. Didn't have room on the DT202 to fit ZIF & 40 Pin IC socket so used IDC header socket instead.

A note from my schematic...
"DT001 mod.
Lines D6 & D7 connect to the PIC via the load/run switch.
Need to get RB6 & RB7 to this PCB for connection to 40 Pin emulator
header.
Pins 1,2 & 3 are unused on the SimStick Bus.
Connect D6 (socket 2 on DT001) to A1 on socket 1
Connect D7 (socket 2 on DT001) to A2 on socket 1"

Does this sound reasonable?
I think it's a better option than having 2 PCBs as we discussed the
other day.

I'll send you a schematic when it's done. Can you read protel for Windows format?





On board you have a negative voltage on pin 6 of MAX232. If you disconnect the GND pin of pot and connect it to the negative voltage, then it can be used for LCD's that need negative contrast.

Programming the 877 with P16PRO

15-Jun-99
I checked again programming of PIC16F877 with P16PRO and there is no need to change the DEVICE.INI entry for this PIC. If you use programming hardware with only one VPP, then hardware setup must be changed so the VPP and VPP1 are the same (don't change DEVICE.INI). PIC16F877 can be programmed much faster as PIC16F84 with progdelay of 2m seconds (but can also be programmed with 10ms delays).
regards,
Bojan Dobaj (Author P16Pro)
7407 Config table:


Subject:         F877 EEPROM Problem solved!
Date:         Sun, 5 Sep 1999 23:35:13 +1000
From:         "Brian Dennis" <flmthrower@

Dear Don,
   It was with great interest that I read your latest web page entry on the DT106SMP board. As you know I am already using this board and as far as I knew wasn't having any problems. As it turned out I was. The 'Lock-out' problem as mentioned in my last letter (31/8/99 ) turns out to be connected with the pin 11 isolation problem. After cutting pin11 on both of my boards this fault disappeared. I also had a problem with the green led remaining on whenever the switch on my DT001 was in the LOAD position. The unit seemed to program alright and I put this down to a internal chip thing? This also seems to have been cured, although one of my boards still very faintly illuminates the green led. The F877's on both of my boards are soldered in, so cutting the track to pin 11 was impossible. I simply cut the pin off the chip altogether. The faintly glowing led i'm still putting down to a internal chip thing?

   I noticed that you have a suggested hardware setup page for the P16PRO software. The method I used to get this software to work really was a band-aid fix to a incorrectly configured hardware setup. I have since restored my original DEVICE.INI file and changed the Vpp1 setting to D3 instead of D4 as in my original setup. All works well. To avoid possible confusion to other/future users of the P16PRO software I suggest my dodgy fix should be ignored!
   Once again your web page has saved the day. Keep up the excellent work and I wish you all the best.
Kind regards 
Brian Dennis



14-Jun-99
Programming the PIC16F877 on a SimmStick.  by Peter Averill
Hardly finished this page, when Peter came up with this info and has the 877 programmed and working in a SimmStick.
As such, the PIC004 board is suitable for programming 877 chips, however it is a little messy. 
Subject: Re: 16C77 versus 16F877 Programming
Date:     Tue, 12 Oct 1999 09:05:11 -0600
From:    Dan Larson <dlarson@citilink.com>
To:        PICLIST@MITVMA.MIT.EDU

I "ported" my 16C73 code to the 16F876 simply by making the following changes:

1) changing the PROCESSOR directive to 16F876 from 16C73B

2) changing the include file at the top of the source to
   16F876.INC instead of 16C73B.INC

3) disabling LVP and DEBUG in the config word (As Andy stated,
   you cannot used the same CONFIG word.)

Other than the items above, I made no changes to source code.

Oh, and don't forget, that if you have a home brew programmer, you
need to place a pull down resistor of about 10K on RB3 to prevent
it from going into low voltage programming mode the first time you
program it since they factory default is to have LVP on.
Good Luck!
Dan


Subject:          DT106
Date:              Fri, 06 Oct 2000 10:59:14 +0930
From:             Ian Du Rieu   

http://www.LeonAudio.com.au

Hi Don & Bojan,

Just discovered a gremlin with the DT106 & Picallw.
Setup:
DT106 with 16F877 installed. Ribbon cable from DT106 to target PCB where it connects to to target PIC's socket.
Target is a 16F876, but the problem should still be there with an 877 target.
I'm using PicallW to drive the DT001/DT106 programmer.
I was getting program failures, mainly during the burning of the fuses, but also occasionally at the start of burning the main code.
What's happening is that the DT001/PicallW switches +5 on & off to the PIC several times during the burning process. My target board was powered up & was back-feeding volts to the PIC via various I/O lines & the clamp diodes, causing the PIC to misbehave. The fix was to set VPP & VPP1 to 7 with Negate checked. This keeps the PIC powered up all the time & the problem ceases to be.
The relay mod I did to the DT001 so that I don't have to flick the load/run switch at every burn works 100%. So it now takes just 1 key stroke on the IBM to reload the data file & burn the PIC :)


7407 Configuration Table:

Using a 7407 with the P16PRO software and the KIT-119, KIT-96 and DT001.

 OutData Clock   Vdd     Vpp     Vpp1     Data In
 (x) D0  ( ) D0  ( ) D0  ( ) D0  ( ) D0
 ( ) D1  (x) D1  ( ) D1  ( ) D1  ( ) D1
 ( ) D2  ( ) D2  (x) D2  ( ) D2  ( ) D2
 ( ) D3  ( ) D3  ( ) D3  (x) D3  (x) D3  ( ) ERROR
 ( ) D4  ( ) D4  ( ) D4  ( ) D4  ( ) D4  ( ) SELECT
 ( ) D5  ( ) D5  ( ) D5  ( ) D5  ( ) D5  ( ) PAPER END
 ( ) D6  ( ) D6  ( ) D6  ( ) D6  ( ) D6  (x) ACK
 ( ) D7  ( ) D7  ( ) D7  ( ) D7  ( ) D7  ( ) BUSY
 ( ) Neg ( ) Neg (x) Neg (x) Neg (x) Neg ( ) Neg
                 < Cancel >    < OK >