Universelles Programmiergerät - ZIF-Sockel-Beschaltung

Hallo,

ich arbeite bereits seit einiger Zeit an einem universellen Programmiergerät für EPROMS, Microcontroller etc. Das ganze funktioniert jetzt bereits ganz gut, sprich ich kann EPROMs, 20V8-GALs und zwei verschiedene PIC-Controllertypen damit lesen und schreiben.

Allerdings habe ich immer wieder Probleme insbesondere beim Auslesen von Bausteinen. Ich vermute dass es an der Ansteuerung des ZIF-Sockels liegt; jeder Pin des ZIF-Sockels kann auf logisch 0 oder 1 und je nach Pin über Transistoren auf eine variable Spannung oder auf Masse gelegt werden. Ausserdem kann der Logik-Pegel jedes Pins ausgelesen werden. Die Schaltung basiert grundsätzlich auf einem Artikel aus der ELRAD 4/1993. Die prinzipielle Beschaltung eines einzelnen Pins ist hier zu sehen:

formatting link

Ganz rechts ist der Pin am ZIF-Sockel, links sind die Steuersignale zu sehen. Die Transistoren sind jeweils pro Pin optional, es gibt auch Pins mit zwei Transistoren für eine von zwei verschiedenen variablen Programmierspannungen (im Schaltplan nicht gezeichnet).

Das Problem dabei ist, dass bei den GALs z.B. Pull-Up-Widerstände an den

244er-Eingängen nötig waren (habe ich im Schaltplan noch nicht eingezeichnet), was ja wegen des CMOS-244ers noch verständlich wäre. Beim PIC war dann allerdings für ein sauberes Signal ein Pull-Down direkt am ZIF-Pin des Datensignals nötig. Ich weiss allerdings nicht ob ein Pull- Down-Widerstand an jedem ZIF-Pin (momentan 40-polig) wirklich eine sinnvolle Lösung ist...

Kurz gesagt: hat jemand eine Idee wie das ganze besser und verlässlicher gemacht werden könnte?

(In Zukunft sollen die einzelnen Logikbausteine irgendwann durch ein PLD ersetzt werden, momentan ist das ganze für einen 40-poligen ZIF-Sockel aufgebaut doch ein rechtes IC-Grab... Und, was ebenfalls noch nicht beachtet wurde sind 3,3V - Bausteine; wenn jemand einen Tip hat wie diese gleich mit beachtet werden können, um so besser :-) )

Ich bin für alle Anregungen dankbar :-)

Vielen Dank und schöne Grüße,

Andreas

--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester
Loading thread data ...

"Andreas Fester" schrieb im Newsbeitrag news:41ea6af6$0$23115$ snipped-for-privacy@newsread2.arcor-online.net...

Die Schaltung hat einige Probleme. Eine Ausgangsimpedanz von 1k2 sind zu viel fuer ausreichend schnelles Umladen der Eingangskapazitaet schneller Schaltkreise (z.B. GALs). Es entstehen langsame Flanken waehrend deren Umschalten dann Stoerungen zu mehreren Taktimpulsen fuehren. GALs sind so schnell, das sie dann locker mit deinem naechsten UKW-Sender mittakten. Wenn man MEHR als 1k2 nehmen koennte, naemlich 4k7, koennte man den Ausgang als steuerbaren PullUp/PullDown nehmen (spart sich EN vom 125), der EINGANG (244) bekommt dann seinen eigenen Vorwiderstand.

Out --4k7---+ (Schutzdioden im Sinne von D1 sind sowieso in den ICs drin) +--- Pin In ---4k7---+

Leider kann man nicht 4k7 nehmen :-( und eine steuerbare Impedanz

+-4066--+ | | Out --+--4k7--+--+ (Schutzdioden im Sinne von D1 sind sowieso in den ICs drin) +--- Pin In ---4k7--------+

geht auch nicht und die VCC-Transistoren zu verwenden geht auch nicht weil die viel zu langsam schalten.

T1 hat ausserdem ein Problem, so bald ZWEI verschiedene Spannungen (VCC von 5 oder 3.3V, und VPP von 12V bis 21V) an den Pin geschaltet werden koennen sollen.

VCC VPP |E |E |< |< | | +----+--- Pim

weil dann Ubemaxreverse (von meist 7V) des Transi ueberschritten wird (wenn VPP an ist und VCC aus ist). Man braucht noch Dioden

VCC VPP |E |E |< |< | +--|>|--+ | | +-------|>|--+--- Pim

deren Spannungsabfall dann dummerweise wieder zu gross ist :-( Ein BC327 reicht sowieso nicht als VCC-Zufuehrung, eher BC369 oder was niederohmiges von Zetex (wie bei dir bei Masse), zu mal der IC keinen (100nF) Pufferkondenstator direkt zwischen VCC und GND hat, wie es der Hersteller eigentlich vorschreibt

Es hat schon seinen Grund, warum (alle ?) Hobbyisten am Universal Pin Driver gescheitert sind, und kommerzielle Geraete sauteuer sind weil sie hunderte von Transistoren enthalten, oder Spezial-ICs von Edge.

Da Hobyisten aber nicht mehrere verschiedene Chips pro Tag programmieren, lies dir mal den Vorschlag im Kapitel F.7.4. EPROMs / GALs programmieren der de.sci.electronics FAQ:

formatting link
durch, der ohne jegliche Transistoren auskommt, und ohne viele ICs, und echt billig zu realisueren ist

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Hallo MaWin,

Danke für die Infos (wenn sie auch nicht sehr ermutigend sind :-( ) So ganz will ich aber noch nicht aufgeben... Ich habe schon mal ein bisschen gestöbert, die Edge-Teile von Semtech sehen interessant aus, aber erwartungsgemäss habe ich bisher nicht mal einen 100er- oder 1000er-Preis ausmachen können, das wird wohl aussichtslos sein da an eine Handvoll dranzukommen. Vielleicht sollte ich mein komplettes Design doch noch mal überdenken und verschiedene Programmieradapter verwenden die die Versorgungs- und Programmierspannungen festverdrahtet auf die korrekten Pins legen (genau das wollte ich ursprünglich vermeiden), das würde jedenfalls eine Menge Probleme ersparen.

Viele Grüße,

Andreas

MaW> "Andreas Fester" schrieb im Newsbeitrag

[...]
--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester

"Andreas Fester" schrieb im Newsbeitrag news:41eab7ae$0$23124$ snipped-for-privacy@newsread2.arcor-online.net...

An eine Handvoll schon, die meisten Kunden von denen brauchen keine 1000, aber der Preis ist so, als ob du gleich 100 nehmen wuerdest :-)

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Am Sun, 16 Jan 2005 14:24:28 +0100 schrieb Andreas Fester :

Ich würde den 1k2 Widerstand durch geeignete Analogschalter ersetzen, die gibt es bei Bedarf auch für 40V und mit wenigen Ohm R_DS_on. Wie hoch soll U_var max. sein?

--
Martin
Reply to
Martin

Hallo Martin,

[...]

U_var soll maximal 25 V sein. MaWin hat ja schon einige Probleme angesprochen, und ich bin momentan dabei das alles zu sortieren; eigentlich bin ich inzwischen soweit dass es wohl mit vertretbarem Aufwand kaum möglich ist einen "Universal Pin Driver" zu implementieren. Ich überlege mir gerade eine Lösung bei der mittels Relais zwischen UVar und den Logik-Ein-/Ausgängen umgeschaltet werden kann (wem das zu teuer ist kann das dann immer noch wie von Manfred vorgeschlagen mit Jumpern machen ;-), und es betrifft ja auch nicht alle Pins des ZIF-Sockels).

Das mit den Analogschaltern wäre ja vielleicht eine interessante Alternative zu meinem Relais-Ansatz, was wären denn das für Bausteine? Ich kenne bisher eigentlich nur den 4066 ....

Gruss,

Andreas

--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester

Andreas Fester schrieb:

Ja, es ist eine Alternative, zumindest für eine eingeschränkte Menge von unterschiedlichen zu programmierenden Bauteilen. Ich hab sowas mal für einen (E)EProm/Linear Flash Card Programmer gemacht und bin dabei auch auf VCC/VPP-switches für PCMCIA-Slots gestossen, die wurden dann -in Kombination mit niederohmigen Analogschaltern- auch für den ZIF-Sockel eingesetzt. Schau Dir mal TPS2212 und Konsorten von TI an, ähnliches gibst auch noch von anderen Herstellern. Wenn ich meinen Unterlagen trauen kann wurden auch noch DG413 und versch. Max46xx eingesetzt, vermutlich gibts mittlerweile auch noch niederohmiges. Ich würde mich aber von den 25V verabschieden, sonst wirds auch mit o.g. Teilen nichts. Es gab hier übrigens schon einige Threads zu dem Thema, vielleicht lässt sich da noch was ergoogeln.

Jörg.

Reply to
Joerg Schneide

Am Mon, 17 Jan 2005 23:58:55 +0100 schrieb Joerg Schneide :

Ich weis jetzt nur MAXIM, die haben Telecom Analogschalter für >40V mit einigen Ohm und natürlich abgestuft, diverse andere. die DGxxx sind original nicht MAXIM sondern von einem anderen Hersteller - Name entfallen. Eigentlich müßten aber auch einzelne N-FETs gehen. S am Ein-/Ausgang der digital-ICs, Gate auf 9-10V zum Einschalten, D zum Pin. Egal ob der Digital-Treiber 0 oder 5V liefert, die DS-Spannung liegt zw. 5 und 10V der FET ist eingeschaltet, wenn G auf 0V, dann ist er aus. Geeignet ist zB der BS170, gibt es in TO-92 oder SOT23, oder BSS123 im SOT23. Das ganze ist sozusagen nur ein halber Analogschalter. Zum Schalten der Gates kann man 40xx Logikchips verwenden, zB Schieberegister 4094, das reduziert den Aufwand an Pegelwandlern zur 3V3/5V Logik, insbesondere, da diese FETs nur beim Umschalten des Device-Types (und ggf Prog/Verify) umkonfiguriert werden müssen. Prog/Verify könnte man ev. auch durch Umschalten von V-var ändern.

--
Martin
Reply to
Martin

Martin schrieb:

Der Vorteil bei Analogschaltern oder gar Multiplexern gegenüber diskreten Lösungen liegt wohl in der einfacheren Ansteuerung. Man kann durch geschickte Wahl von Öffner/Schliesser, Eingangslogik, evtl. Enable schon einen Teil der Logik erschlagen, bei entsprechender Bauteilwahl braucht man sich auch weniger um Dinge wie Break bofore Make zu kümmern. Es dürfte auch auf weniger Bestückungsarbeit hinauslaufen. Dafür wird es aber wohl wesentlich teurer. Um einen Prozessor mit vielen Ports (oder eine Porterweiterung) kommt man wohl in beiden Fällen nicht herum, bei diskreter Lösung braucht man halt einige Mehr.

Jörg.

Reply to
Joerg Schneide

Am Tue, 18 Jan 2005 12:22:58 +0100 hat Joerg Schneide geschrieben:

Deswegen habe ich ja beide Lösungen genannt, wiel ich nicht wußte, ob Bauteilkosten oder Fertigungsaufwand das wichtigere Kriterium ist.

--
Martin
Reply to
Martin Lenz

Andreas Fester schrieb:

n=20

t;=20

ber

ung=20

Hallo,

musst Du wirklich jeden einzelnen Pin auch auf Masse schalten k=F6nnen? Wie w=E4re es mit Reedrelais zum Anschalten der Versorgungsspannungen und= =20 der Masse an den IC, da wo auch wirklich Versorgungspins sein k=F6nnen?

Bye

Reply to
Uwe Hercksen

Vermutlich beabsichtigt Galep nochmal zu erfinden. Als ich noch jung-&-dumm war habe ich auch mal versucht ein PAL-Programmiergerät a la Pintreiber-Bauteilgrab zu konstruieren. Aber bevor das weitgenug gediehen war wurden die Dinger durch GALs absolet. Kann sein, daß selbstgestrickte Programmiergeräte für in-circuit-Programmierung von SMD-Teilen die bereits in Schaltungen verlötet sind wieder aktueller werden.

Ich würde das dann aber mechanisch vom Typ "Pagode" bauen:

  • unten ein Einplatinencomputer mit z.B. CF als Massenspeicher. CF enthält Programmieralgorithmus , "Master-EPROM-Daten". Im Einplatinencomputer macht sich sowas wie FORTH natürlich gut. Eventuell kann man heute aber Linux auf kleine x86/ARM- Hardware schrumpfen. Das Ding über V24 von Terminalprogramm gesteuert. Über Steckernetzteil mit z.B. 24V versorgt wo dann aus Sekundärstepper 5V gemacht werden. Hat einige R2R D/A-Wandlerausgänge 0 - 5V 8 Bit. Und eine Unmenge Port-Pins.
  • huckepack gesteckt die Adapterschaltung für einen bestimmten Controller oder EPROM-Familie. Es ist unwirtschaftlich "universell" sein zu wollen.
  • huckepack gesteckt den Sockel. Man kann den Controller ja in DIL verbauen ( heute immer seltener ), oder in QFP, oder als Kabel in die Leiterplatte. Es gibt also auch hier keine "universelle" Lösung mehr.

MfG JRD

Reply to
Rafael Deliano

Hallo Uwe,

Uwe Hercksen wrote: [...]

Nein, der Schaltplan zeigt die maximale Beschaltung; Jeder Pin sollte auf Logikpegel geschaltet werden können, und verschiedene ausgewählte Pins zusätzlich auf Masse oder eine variable Spannung.

Ja, das mit den Relais ist mir inzwischen auch aufgeleuchtet :-) Das wäre wahrscheinlich die Lösung die am saubersten funktionieren würde. Nachteil ist dass die Relais nicht ganz billig sind, ich habe 1xum im DIL-Gehäuse mit integrierter Freilaufdiode für 2,50¤ gefunden...

Allerdings würde ich das ganze dann so vorsehen dass die Relais möglichst einfach nachträglich noch bestückt werden können, wenn ein neuer Bausteintyp dazukommt (der Programmer aus besagtem ELRAD-Artikel hatte auch an ausgewählten Pins die Transistoren für Masse und VPP/VCC, aber ich hatte bei insgesamt vier Typen bereits einen bei dem das nicht gepasst hat :-( , da sollte man also flexibler sein ...)

Gruss,

Andreas

--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester

Am Tue, 18 Jan 2005 19:04:27 +0100 hat Andreas Fester geschrieben:

Bischen suchen, was es genau gibt und nötig ist. Die 200V/150mA PhotoMOS Relais vom pollin um 0,15/Stk. gibt es leider nicht mehr, ich hab sie zumindest auf die schnelle nicht mehr gefunden.

Wenn du keine uralten ICs programmieren willst, dann kommst du mit 13V aus und kannst CD4066 oder MUXe - CD4051/4052/4053 verwenden, die 50 Ohm stören sicher nicht.

--
Martin
Reply to
Martin Lenz
[...]

hab grad gesehen dass auch die DGxxx bei single supply bis zu 30V vertragen.

Gruss,

Andreas

--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester

Hallo,

ich habe mir aufbauend auf Euren Anregungen nochmals ein paar Gedanken in Verbindung mit dem Analogschalter-Ansatz gemacht. Könnte diese Schaltung mehr Aussicht auf Erfolg haben als die ursprüngliche?:

formatting link

Die verschiedenen Steuereingänge würde ich hardwaremässig fest so verdrahten dass keine ungültigen Zustände auftreten können (sprich Analogschalter geschlossen und T1 leitet, so dass VPP am 125/244 anliegt).

Oder ist es sicherer, den ZIF-Pin zwischen Logik und Spannung umzuschalten, wie hier:

formatting link

Hier könnte man die beiden Transistoren gemeinsam schalten, da bei log. 1 nur der untere und bei log. 0 nur der obere schaltet, aber beide durch den Analogschalter vom ZIF-Pin (und vor allem vom 244/125) getrennt sind).

So ähnlich würde ich mir auch eine Relais-basierte Lösung vorstellen (1 Umschaltkontakt), und als Low-Cost-Lösung könnte man die von MaWin favorisierte Steckkontakt-Variante realisieren indem statt Analogschalter oder Relais eben Jumper zum manuellen Umschalten verwendet werden.

BTW: Das hier ist übrigens ein inzwischen schon etwas älteres Bild des Prototyps, der bisher existiert:

formatting link

Gruss,

Andreas

--
Andreas Fester
mailto:Andreas.Fester@gmx.de
WWW: http://littletux.homelinux.org
Reply to
Andreas Fester

Am Tue, 18 Jan 2005 22:22:19 +0100 schrieb Andreas Fester :

Das ist nicht nötig, wenn du über die Ansteuerlogik sicherstellst, daß die PWR-Transistoren und der FET niemals gleichzeitig eingeschaltet werden, ansosnten müßtest du die korrekte Umschaltung der AS sicherstellen. Weiters fließt hier der Betriebsstrom des Chips über die Analogschalter, die dadurch unnötig niederohmig sein müssen (-> teuer, hohe charge injection, hier wahrscheinlich unwichtig). Ich würde allerdings zumindest die GND Switches als MOSFETs ausführen - Logic-Level FETs, ohne zusätzliche Widerstände an der 5V Logik. Bei den V_var Schaltern ist es bipolar mit der Ansteuerung einfacher, du brauchst nur Open Collctor Treiber, die 30V Vertragen, da war in 74xx (wahrscheinlich ohne LS) etwas. Für FETs an V-var müßtest du die Gatespannung begrenzen, das würde zusätzliche Z-Dioden bedeuten.

bringt nix. den oberen kannst du mit OC (GND oder offen) schalten, den unteren mußt du mit Spannung (die aber deutlich kleiner 25V sein kann und soll) schalten, du brauchst aso aufwendiger Treiber für diese Transistoren, wenn du sie zusammenschaltest.

Analogschalter oder FETs erscheinen mir hier die beste Variante, da würde ich mich eher mit V_var

Reply to
Martin

Andreas Fester schrieb:

Ich würde eher von der Jumperlösung abraten, dann lieber die Zwischenplatinenlösung mit devicespezifischem Routing. Es kann sonst schnell sehr ärgerlich werden wenn mal "mal eben schnell" was brennen will und hat einen Jumper vergessen/falsch gesteckt oder Wackler, womöglich noch bei einem OTP-Chip. Man müsste es halt jedesmal an vielen Punkten genau richtig machen, im Gegensatz zu einmal ein richtiges Layout und einmal die richtige Platine einsetzten. Es wäre dann auch möglich bauteilnahe Komponenten wie Cs unterbringen. Wenn man im Standardraster bleibt kann sich auch jeder relativ schnell selbst was auf Lochraster fädeln.

Das ideale wäre natürlich eine niederohmige 40x40 Switchmatrix, aber sowas gits wohl nicht in Silizium.

Noch ein Tip: Ein gewisser Robert Rottmerhusen hat auch mal so ein Projekt gestartet, vielleicht lohnt es sich ihn zu kontaktieren, er hatte eine Menge Datenblätter und vermutlich auch schon eine Zuordnung ID-Codes zu Parametern. Er hatte als Prozessor einen M16C62 vorgesehen, was ich für eine gute Wahl halte, hat ne Menge Pins, verträgt etwas höhere Spannung (6,5VCCabsmax/+0,3ViH), läuft bis herunter zu 2,7V, und hat so ziemlich alles was man an Peripherie braucht. Es gibt auch eine neue Variante (M16/62P) mit zwei getrennten VCCs, so kann man z.B. externe 5V und 3V Peripherie ohne Probleme betreiben.

Jörg.

Reply to
Joerg Schneide

Am Wed, 19 Jan 2005 16:16:29 +0100 hat Joerg Schneide geschrieben:

Switchmatrix gibt es schon in Silizium, nennt sich FPGA :-) So niederohmig braucht die auch nicht zu sein, weil die max. 3..4 nötigen Versorgungsspannungen eh über andere Schalter als die Logik geroutet werden können. Für die Logik ist wiederum die Matrix unnötig, es muß nur sichergestellt werden, daß der Prozessor jeden Pin als Ein- und Ausgang ansprechen kann. Er muß halt die richtigen Bits an die richtigen Pins schreiben. Wenn du keinen Prozessor auf dem Programmer verwenden willst, dann kannst du die Bits in einem FPGA sortieren, falls du das nicht in der PC-Software machen willst.

Für Audio geeignete 16*16 Switchmatrizen gibt (gab?) es von AD, hat ein Freund in einer Art Vorverstärker verbaut.

--
Martin
Reply to
Martin Lenz

Ich vermute für den Einplatinencomputer wäre ein antiker CMOS-x86 mit 8 Bit ( V20 ? ) oder 16 Bit Bus günstiger.

  • man kriegt Betriebsysteme/Programmiersprachen/Treiber für x86 leichter.
  • viele Leute haben schonmal auf x86 rumprogrammiert und adoptieren ihnen bekannte CPU deshalb leichter.
  • kein Cache, man kann Verzögerungsschleifen einfach in Software programmieren. Das spricht z.B. gegen ARM und andere CPUs mit komplexem Timing.
  • man braucht nichtnur Portpins sondern langfristig auch Schnittstellen a la USB/Ethernet oder CF-Karte. Microcontroller reicht weder von Schnittstellen, noch von verfügbarem Speicher.
  • alte DIL-Gehäuse sind leichter einlötbar und 2lagig routbar. In einer "Pagode" mit gestapelten Boards kann das unterste ohnehin recht groß sein.
  • relativ langsamer Bus paßt besser für Peripherie-ICs. Die ICs für die Portpins will man ja sockeln, da sie beschädigt werden können.
  • obsolete Oldtimer die mal in Massen produziert wurden sind langfristig bessere verfügbar. Die meisten komplexen Controller sind Papiertiger.

Ein "offenes System" ist natürlich nur relevant wenn jemand Grundboards in Kleinserie fertigen und andere Anwender abgeben will. Da der "Hersteller" nicht alle Adapter selber entwickeln kann müssten die dann von den interessierten Anwendern erstellt werden und es sollte ein Rückfluß von Stromläufen und dokumentierter Treibersoftware erfolgen. Es gibt da durchaus einen kleinen Markt für sowas bei Leuten denen Galep zuwenig und Data I/O ( pekuniär ) zuviel ist.

MfG JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.