###   Projekte und Informationen rund um den KC85   ### 

Top-Themen:

  • RAM satt – Das 4MB-RAM-Modul M035
  • Das neue Joystick/Centronics-Modul M021
  • Speichertestprogramm RAMTEST
  • Ersatz der Dekodier-PROMs im KC85/4-Grundgerät
  • Ein Tool für alle Fälle: Der etwas andere Prüfstift

Ein paar Worte zur Einleitung

von Frank Dachselt

Unser diesjähriges Clubtreffen führte uns also wieder einmal (für die Statistik: zum bereits dritten Mal) ins vogtländische Pechtelsgrün. Neben der Tatsache, daß dieser wunderschöne Ort gut erreichbar im Einzugsgebiet der Teilnehmer liegt, ist es mit Sicherheit auch der stets zuverlässig und reibungslos funktionierenden Organisation von Dietmar Meyer zu verdanken, daß wir immer wieder gern in die Pension “Sonnenblick“ kommen. An dieser Stelle deshalb im Namen aller Teilnehmer ein großes Dankeschön an Dietmar für die aufgewendete Mühe.

Wer glaubt, daß beim zehnten Clubtreffen nun endlich beschauliche Routine einkehren müsste, der irrt gewaltig. Jedes Clubtreffen ist eine einzigartige Herausforderung und bietet selbst erfahrenen Teilnehmern unzählige Neuigkeiten und Überraschungen. So waren unter den mehr als 30 Teilnehmern neben den bekannten Gesichtern auch wieder einige neue zu entdecken. Und nicht weniger abwechslungsreich ging es bei der Hardware zu, denn schon längst gibt es auf unseren Treffen mehr als nur den KC85 zu sehen. So bot sich den Anwesenden auch diesmal wieder ein abwechslungsreicher “Blick über den Tellerrand“ hinaus auf viele interessante Zeugen der Computergeschichte.

Die Bilder in dieser News-Ausgabe sollen versuchen, einen Teil des Geschehens und der Atmosphäre wiederzugeben, sowie natürlich auch Vorfreude und Neugier auf unser nächstes Treffen wecken. Deshalb ergeht an dieser Stelle wie gewohnt der Aufruf an alle, nach Möglichkeiten für unser 11. Clubtreffen im nächsten Jahr zu suchen. Wer einen geeigneten Ort kennt und die Organisation übernehmen möchte, sollte seinen Vorschlag der Redaktion mitteilen, damit wir zu gegebener Zeit eine Entscheidung treffen können.

Nun aber erst mal viel Vergnügen beim Lesen dieser Ausgabe.

Euer Redakteur

 



Bild 1: Clubtreffen 2004: KC-Systeme dicht an dicht, hier die Anlagen von Frank Dachselt, Steffen Gruhn und Dietmar Meyer nebst “begleitender“ PC-Technik.

 


Kassenbericht und Mitgliederverwaltung

von Uwe Schnick

Hallo KC-Freunde,

ich möchte Euch heute zwei Dinge vorstellen. Das ist einmal der Kassenbericht für das vergangene Jahr 2003 und zum anderen sind es Gedanken zum Thema Clubmitgliedschaft und Finanzierung.

Kassenbericht

Um unsere Finanzen müssen wir uns momentan keine Sorgen machen. Hier die Fakten für den Abrechnungszeitraum von 01.01.2003 – 31.12.2003:

Vermögen zum 01.01.2003: Das Clubvermögen betrug zum 31.12.2003 insgesamt EUR 2236,71. Dieser Betrag setzt sich aus dem Kontoguthaben von EUR 2140,48 und der Handkasse von EUR 96,23 zusammen. Nicht enthalten ist der Restbetrag auf dem ehemaligen Clubkonto, daß Andreas Ose verwaltete.

Einnahmen: Im Jahr 2003 wurden insgesamt EUR 459,35 eingenommen. Dieser Betrag gliedert sich in Mitgliedsbeiträge von insgesamt EUR 339,31 und dem Restbetrag aus der Kontoauflösung des ehemaligen Clubkontos durch Andreas Ose von EUR 120,04.

Ausgaben: Die Ausgaben im Jahr 2003 betrugen insgesamt EUR 445,64. Die Summe wurde für den Versand der News 1/2003 und 2/2003 und für Porto- und Kontokosten aufgewendet.

Vermögen zum 31.12.2003: Zum Ende des Jahres 2003 betrug das Clubvermögen EUR 2250,42. Darin enthalten ist das Kontoguthaben auf dem Konto bei der Deutschen Bank in Böblingen von EUR 2154,19 und der Betrag der Handkasse von EUR 96,23.

Überbetrag: Das Clubvermögen ist größer als der Betrag, der für den Versand der offenen Newsexemplare nötig wäre. Die Anzahl der offenen News zum 31.12.2003 betrug 181 Exemplare. Pro News wird ein Betrag von EUR 5 angenommen: 181 × EUR 5 = EUR 905,00. Aus der Differenz aus dem Clubvermögen zum 31.12.2003 von EUR 2250,42 und dem Betrag zum Versand der offenen News EUR 905,00 ergibt sich ein Überbetrag von EUR 1345,42.

Die Prüfung des Berichts steht noch aus, da ich zum Clubtreffen leider nicht erscheinen konnte.

Soviel zu den finanziellen Belangen der Clubs. Nun zu einigen Dingen, die mir schon seit einiger Zeit nicht mehr aus dem Kopf gehen.

 



Bild 2: Clubtreffen 2004: Besonders viel Platz beanspruchte Enrico Grämers Aufbau, dafür gab es hier auch reichlich Neues zu bewundern.

 

Clubmitgliedschaft und Finanzierung

Nach schwindender Anzahl der Beiträge zu den KC-News durch die Clubmitglieder und die damit verbundene Anzahl der Auflagen pro Jahr muß der Club sich mit einer Neuordnung der Finanzen und Ziele auseinandersetzen. Eine stillschweigende Neuerung haben die meisten von Euch mit der letzten Ausgabe der KC-News bereits kennengelernt: den individuellen Kontoauszug. Aber mal von vorn...

Wir stehen vor folgenden Problemen:

  1. Die Mitgliedschaft im Club basiert auf dem News-Abonement. Damit ist eine Mitgliedschaft ohne News-Abo nicht möglich. Denkbar sind beispielsweise folgende zusätzliche Mitgliedsformen:
    • Jemand ist Mitleser der News. 
    • Jemand erhält alle allgemeinen E-Mails des Clubs, ist also nur auf dem Mailverteiler aufgesetzt.
  2. Neue Projekte sind teuer. Eine finanzielle Unterstützung für neue Projekte wäre meines Erachtens nach sehr wünschenswert.
  3. Die Anzahl der News-Beiträge ist weiter im Sinken begriffen.
  4. Zusätzliche Kosten für kurzfristige Benachrichtigungen per Post usw. sind nicht immer sicher abgedeckt.

Es sind zum Beispiel folgende Modelle für die zukünftige Finanzverwaltung denkbar, die allerdings nicht alle Punkte abdecken:

1. Variable-Kosten-Modell: Die Einzahlungen eines jeden Clubmitglieds werden auf einem individuellen Konto abgelegt und pro KC-News werden 5 EUR davon abgebucht. Zum Abschluß des Finanzjahres wird entschieden, was mit dem übrigen Geld passiert, also der Differenz zwischen tatsächlichen und gestellten Kosten geschieht. Das wären dann z.B. die Projektförderung, Zusatzkosten oder Gutschrift auf dem jeweiligen Konto des Clubmitglieds. Die Mitgliedschaft basiert weiterhin auf dem News-Abonement. Jedes Mitglied erhält regelmäßig mit den News einen Kontoauszug. Jeder weiß dann genau, wann er wieder eine Einzahlung tätigen muß.

2. Festkostenmodell: Es wird weiterhin ein fester Mitgliedsbeitrag pro Jahr oder auch halbjählich fällig. Damit werden die Kosten der KC-News abgedeckt. Zusätzlich wird ein fester Anteil für neue Projekte des Clubs bereitgestellt. Über die Geldvergabe muß dann ein zu wählendes Team entscheiden. Die Mitgliedschaft wird direkt an den Kontostand gekoppelt. Die Einzahlung erfolgt zu einem festen Termin, z.B. 15. September (zusätzlich 15. März bei halbjählicher Zahlungsweise). Durch einen Kontoauszug erhält jeder regelmäßig die Rückmeldung.

Außerdem würde ich gerne die Regelung über den halben Preis für Amtsinhaber in anderer Weise regeln. Ich stelle mir ein generelles Gutschriftenmodell vor, was auch andere in Anspruch nehmen können: Für Leistungen, die für den Club erbracht werden, gibt es eine positive Gutschrift auf dem Clubkonto. Man müsste dafür dann einen Leistungskatalog zusammenstellen. So könnte man den einen oder anderen vielleicht zum Schreiben von Beiträgen animieren.

Da dies sicherlich noch nicht der Weisheit letzter Schluß ist, möchte ich Euch zur offenen Diskussion per E-Mail, Telefon oder Brief aufrufen. Ich werde die Ideen dann zusammenfassen und in den nächsten News zur Abstimmung stellen.

Noch was in eigener Sache: Da ich oft nicht zu einer festen Uhrzeit zu Hause erreichbar bin, manchmal Urlaub habe oder mal in der Welt umhergeistere, kann ich Telefonate nur selten direkt entgegennehmen. Außerdem ist es Dank ISDN gut möglich, daß ich bereits auf Leitung 1 spreche.

Ich würde Euch deshalb bitten, auf meinem extra dafür eingerichteten Anrufbeantworter wenigstens Name und Telefonnummer zu hinterlassen, falls Eure Rufnummer nicht übermittelt wird. Ansonsten habe ich keine Chance, Euch zu antworten bzw. zurückzurufen. Am besten wäre es, wenn Ihr noch hinterlasst, bis wann man Euch zurückrufen kann (21:00, 22:00, 23:00, ...).

Ich freue mich auf eine anregende Diskussion.

 



Bild 3: Clubtreffen 2004: Die gespannten Blicke der Anwesenden verfolgen hier die Funktion des Plotters K6418, auf dem Reinhard Birk das Begrüßungsplakat für das Treffen zeichnen ließ.

 


SYSGEN-Update, Version 1.4

von Mario Leubner

In gewohnter Art und Weise will ich auch dieses Mal wieder ein paar Neuerungen am Betriebssystem verbreiten. In der Ausgabe 2/2003 habe ich ja bereits erläutert, wie man am GIDE-Interface zwei Festplatten am KC betreibt. Leider gibt es dabei immer noch ein paar Probleme, die ich noch etwas näher untersucht habe: Und zwar arbeiten nicht alle Festplatten untereinander zusammen! Aber das ist kein Problem des KC oder des GIDE-Interface, sondern ein allgemeines Problem der unterschiedlichen Hersteller der Platten – denn das tritt genau so auch am PC auf.

Nun habe ich mir vorgenommen, zumindest beim Systemstart eine Abfrage einzubauen, die so gut wie möglich erkennt, welche Master- und Slave-Platten angeschlossen sind. Dazu habe ich in allen machbaren Kombinationen von den mir zur Verfügung stehenden 7 Festplatten und 2 CF-Cards, deren Zusammenarbeit und die Erkennung getestet.

 



Bild 4: Clubtreffen 2004: Mario Leubner zeigt die Ergebnisse der Festplattentests.

Das Ergebnis: Von 79 möglichen Kombinationen (auch Einzelbetrieb der Platten eingeschlossen) ist

  • 53 mal korrekter Betrieb und Erkennung möglich.
  • 17 mal wird eine Slave-Platte nicht korrekt erkannt, trotzdem kann mit der Master-Platte gearbeitet werden.
  • 7 mal wird nicht korrekt erkannt, daß kein Slave vorhanden ist.
  • 2 mal ist kein Zugriff möglich (Meldung: nicht bereit).

Das genaue Ergebnis ist in Bild 6 zu sehen.

Festplattentest
(volle Größe)
Bild 6: Ergebnisse von Festplattentests am KC85-GIDE


Es gibt auch keine generelle Aussagemöglichkeit, wann zwei Platten zusammenarbeiten und wann nicht. Wenn die Platten vom gleichen Hersteller sind, dann ist zwar die Wahrscheinlichkeit höher, daß es funktioniert, es muß aber nicht so sein. Manchmal hilft es sogar, Master und Slave einfach zu vertauschen: siehe z.B. Maxtor 7131AT und ALPS DR311C. Die Maxtor als Master geht nicht in dieser Kombination, aber ist die ALPS der Master, dann funktioniert es!

Um nun von vornherein eine Aussage zu finden, welche Platten wie miteinander arbeiten oder nicht, kann man zum einen das erweiterte GIDETEST (aus GIDE09.PMA) verwenden. Das Programm hat Frank Dachselt in den KC-News 2/2003 vorgestellt.

Für einen Schnelltest habe ich noch ein kleines Hilfsprogramm entwickelt: Ich habe es einfach GIDE.COM genannt. Es macht im Prinzip die gleichen Tests als wenn man den KC bootet, nur lädt GIDE.COM nichts von den Festplatten und schreibt auch keine Daten. Es werden nur die Infos ausgewertet, die die Platten selbst melden. Und diese Infos kommen auf dem Bildschirm zur Anzeige. Man kann also die Platten in Ruhe ausprobieren, ohne etwas zu zerstören und – falls es doch nicht funktionieren sollte – die Platte unverändert wieder dort einsetzen, wo man sie her hat. Die Anzeige beim Aufruf von GIDE.COM sieht etwa so aus:

KC GIDE-Diagnosetool (c) ML 22.01.2004 
--------------------------------------


Real-Time-Clock: 22.01.2004 18:44:33
GIDE-Reset: OK.
Motor ein: OK.
Diagnose : 01hex


Master-HDD: SAMSUNG CF/ATA
- Anzahl Zylinder = 496
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 32


Slave-HDD : ST9840AG
- Anzahl Zylinder = 1628
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 63


In diesem Fall waren zwei Festplatten angeschlossen und wurden auch erkannt. Zunächst wird die RTC-Uhr gelesen – daran erkennt man, ob der Zugriff auf das GIDE überhaupt klappt! Danach erfolgt ein RESET am GIDE-Interface, es wird der Festplattenmotor eingeschaltet (falls die Platten nicht von selbst anlaufen) und zuletzt die Diagnose ausgelöst. Hier gibt es eigentlich nur zwei gültige Werte: 01h heißt OK für Master und Slave und 81h heißt OK für Master und Slave nicht vorhanden. Alles andere kann man als nicht bereit deuten. Bei allen 4 Tests kann es mitunter eine kurze Wartezeit geben, bis die Rückmeldung kommt. Aber auch das ist abhängig von den Festplatten.

Falls dann noch gültige Daten von den Festplatten übermittelt wurden, erscheinen diese im Klartext darunter. Man kann sich die Werte aufschreiben oder ausdrucken und später bei der Erstellung der OPTION.INC verwenden.

Falls der Slave nicht korrekt erkannt wurde oder ungültige Daten im Parameterblock vorgefunden werden, dann erhält man statt der ausgewerteten Anzeige eine Fehlermeldung und einen Hexdump der ersten 96 Byte der gelesenen Daten. Das sieht dann etwa so aus:

KC GIDE-Diagnosetool (c) ML 18.01.2004 
--------------------------------------


Real-Time-Clock: 18.01.2004 18:05:54 
GIDE-Reset: OK.
Motor ein: OK.
Diagnose : 01hex


Master-HDD: SAMSUNG CF/ATA
- Anzahl Zylinder = 496
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 32


Slave-HDD : Konfigurationsbyte1 = 0 erkannt!
Laufwerksinfo (Auszug):

00: 04 00 0C 00 2C 00 AC 00 EC 00 EC 00 EC 00 EC 00 ....,...........
10: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................
20: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................
30: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................
40: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................
50: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................

Obwohl bei der Diagnose 01hex gemeldet wird, kommen vom Slave keine gültigen Daten an. Diese Kombination der Festplatten ist also nicht geeignet. Für die Erkennung, ob der Datensatz gültig ist, werden mehrere Tests durchgeführt:

  • Konfigurationsbyte 0 darf nicht Null sein
  • Zylinderanzahl darf nicht Null sein
  • Kopfanzahl darf nicht Null sein
  • Sektoranzahl darf nicht Null sein
  • Bit 7 in der Modellbezeichnung darf nicht gesetzt sein

Die Abfrage des zweiten Konfigurationsbytes habe ich wieder verworfen, da gibt es einige Platten, bei denen das Byte Null ist. Alle anderen Daten lassen sich auch nicht automatisch auswerten. Dazu habe ich umfangreiche Tests gemacht und ich möchte mich auch noch einmal bei allen bedanken, die mich dabei unterstützt haben (besonders Enrico Grämer, Guido Grohmann und Silvio Güldner).

Doch nun zum eigentlichen SYSGEN 1.4:

Die gewonnenen Erkenntnisse habe ich in SYSGEN 1.4 einfließen lassen. Und wie schon erwähnt, laufen beim Bootvorgang die gleichen Tests ab wie bei GIDE.COM – nur die Anzeige und Fehlerauswertung erfolgt nicht so ausführlich.

Wichtig war mir nur, daß eine nicht funktionierende Festplattenkombination auch beim Bootvorgang erkannt wird und die zugehörigen Partitionen in einem solchen Fall ausgeblendet werden.

Alle Kommandos zum GIDE-Interface wurden außerdem mit einer TimeOut-Schleife programmiert, so daß man jetzt auch booten kann, wenn weder Master noch Slave funktionieren. Es sind dann zwar keine Zugriffe auf die Festplattenpartitionen möglich, man könnte aber Programme von Diskette starten.

Bei der Anzeige der Festplattenbezeichnungen werden jetzt alle nicht darstellbaren Zeichencodes ausgefiltert (falls doch noch einmal eine Erkennung ungültiger Daten nicht möglich war).

Und eine wesentliche Neuerung, die besonders für mich von Bedeutung ist: Nach dem Einlesen einer SYS-Datei erhält man ab sofort eine Auflistung aller eingestellten Laufwerke. So hat man auch später noch einen Überblick, was in den SYS-Dateien für Einstellungen erzeugt worden waren. Bei 8 möglichen Zeichen im Dateinamen lassen sich ja nicht so viele Informationen unterbringen, wie eigentlich nötig wären. Und wenn sich im Laufe der Zeit einige Dateien angesammelt haben, dann ist das schon hilfreich.

Was ist nun zu tun, um ein Update auf die Version 1.4 zu machen? Und für wen lohnt es sich überhaupt?

Die bisher erzeugten SYS-Dateien sind alle weiterhin verwendbar. Niemand braucht also wieder die OPTION.INC zu ändern oder einen Assembler auszuführen – vorausgesetzt man will nichts neu machen.

Und wer keine Probleme mit der Version 1.3 hat, der braucht auch nicht unbedingt auf die 1.4 umsteigen. Wenn aber beim Booten z.B. manchmal der Cursor verschwindet oder andere kryptische Zeichen auf dem Bildschirm erscheinen, wenn die Slave-Platte getestet wird, dann hilft die Version 1.4 weiter:

Es muß nur SYSGEN14 aufgerufen werden. Dann wie gewohnt zu allen Menüpunkten die Einstellungen vornehmen und neu in die Systemspuren schreiben. Das war’s dann auch schon und ab sofort wird mit dem neuen ML-DOS 1.4 gebootet.

 



Bild 5: Clubtreffen 2004: Der Plotter K6418 hat gerade das Begrüßungsplakat fertiggestellt.

 


RAM satt – Das 4MB-RAM-Modul M035

von Enrico Grämer

In der letzten News gab es schon mal einen kleinen Vorgeschmack mit dem Foto des ersten Prototypen. Viele neue Erkenntnisse gibt es zu dem RAM-Modul nicht mehr, mit einer Ausnahme: Es funktioniert! Leider war die ganze Elektronik nicht mehr in den CPLD 9572 hineinzubekommen. Dafür muss nun der grösste Nicht-SMD-CPLD von Xilinx, der XC95108 mit 108 Macrozellen und 2400 Gattern, herhalten. Dieser übernimmt die gesamte Steuerung der vier 1MB-Module, das Autodetect der SIMMs (dazu später mehr) und die Ansteuerung der beiden 7-Segment-Anzeigen.

Schaltplan: C3 und R26 bilden zusammen ein RC-Glied, um die Flipflops im CPLD beim Einschalten des KCs definiert zurückzusetzen. Das gleiche ist auch auf den Plänen der Original-RAM-Module wieder zu finden.

Die Widerstände R1 bis R11 und R20 bis R25 mit 33 Ohm dienen der Entstörung in sämtlichen Leitungen zu den RAM-Modulen. Durch die kapazitiven Lasten der RAMs kann es bei den Schaltflanken zu Unter- oder Überschwingen der Pegel außerhalb der Betriebsspannung kommen. Ähnliches gilt für die 100 Ohm Widerstände R12 bis R19 und R31 bis R38 in den Datenleitungen. Diese werden durch die Datenleitungen mit deren Wellenwiderstand abgeschlossen (terminiert). Ohne diese Widerstände war das Modul in den höheren Schächten nicht stabil zum Laufen zu bekommen.

Die LEDs zeigen den Schaltzustand der einzelnen Module an: D1 für Modulschacht + 0 bis D4 für Modulschacht + 3. Wer andere LEDs einbauen möchte, muss dabei beachten, dass nur maximal 20 mA pro Anschluss zulässig sind. J2 dient im Bedarfsfall der Programmierung der CPLD entsprechend JTAG-Standard.

Die Pins 1 und 30 der SIMMs sind normalerweise beide für deren Stromversorgung gedacht und auf dem RAM-Modul miteinander verbunden. Im M035 wird Pin 30 dagegen als Detect-Anschluss verwendet. Ist ein SIMM-Modul gesteckt, so wird der jeweilige Detect-Eingang auf +5V gezogen und somit von der CPLD das Vorhandensein des RAM-Moduls erkannt. Die Anzahl der RAM-Module und deren Bestückungsreihenfolge ist beliebig. Ein Strukturbyte wird nur gesendet, wenn das dazu gehörige RAM-Modul gesteckt ist. Gleiches gilt für das Schalten des Moduls.

Wer noch 4MB-SIMMs hat, kann diese auch verwenden. Dazu ist der Jumper J3 zu setzen. Das 4MB-SIMM-Modul (in diesem Fall maximal eins) kann in eine beliebige der vier vorhanden Fassungen gesteckt werden. Die Jumper J4 und J5 sind zum Testen der RAM-Module gedacht. Mit ihnen wird der Refresh auf die Hälfte bzw. ein Viertel ausgedünnt.

Zusätzlich besteht für “Case-Modder“ und Programmierer, die den genauen Schaltzustand der RAMs wissen möchten, die Möglichkeit, zwei 7-Segment-Anzeigen anzuschließen. Die dazu benötigten Bauteile sind nicht im Bausatz enthalten. Es können Anzeigen mit einer Ziffernhöhe von 7...10 mm und gemeinsamer Anode verwendet werden.

Vom Schaltzustand wird die Blocknummer (Bits 2...7 des Modulsteuerwortes als 00h... 3FH) des eingeschalteten 1MB-Teilmoduls mit der höchsten Priorität dargestellt. Ist keines der vier Teilmodule aktiv geschaltet, bleibt die Anzeige dunkel. Der rechte Dezimalpunkt zeigt den gesetzten Schreibschutz des Teilmoduls (invertiertes Bit 1 des Modulsteuerwortes) an. Der linke Dezimalpunkt zeigt an, ob gerade ein Speicherzugriff (Schreiben oder Lesen) in das Modul stattfindet.

Leider waren am CPLD keine 16 freien Anschlüsse mehr verfügbar. Deswegen werden die fertig dekodierten Informationen für die Anzeige seriell (über die Signale SDA und STA) an die beiden Schieberegister U6 und U7 weitergereicht, die diese Daten wieder parallelisieren. Wegen akutem Platzmangel kommen hier SMD-Bauteile zum Einsatz. Das sollte aber kein Problem darstellen, denn wer die Anzeige benötigt, der kann auch mit dem Lötkolben umgehen ;–). Der Wert für die Vorwiderstände R46 bis R61 richtet sich nach den Daten der verwendeten Anzeigen und liegt zwischen 100 und 470 Ohm.

Aufbau: Und nun wird es ernst. Besonders hohe Löterfahrungen werden von den Bauteilen nicht gestellt. Es hat sich aber erwiesen, dass eine bestimmte Reihenfolge bei der Bestückung vieles leichter macht.

Als erstes möchte ich empfehlen, die Kontaktleiste, z.B. mit Sandpapier, anzuschrägen. Dadurch lässt sich später das Modul leichter in den KC stecken. Für die Modulbuchsen im Gerät ist das auch von Vorteil. Dann wird die Fassung für den CPLD bestückt. Dabei ist darauf zu achten, dass die schräge Außenkante rechts oben (siehe Platinenaufdruck) ihren Platz findet. Anschließend geht es mit den Widerständen weiter. Hier habe ich mich aus Platzgründen für die bedrahtete Bauform 0204 entschieden. Diese sind nur ca. 2 mm lang. Die Anschlussdrähte werden kürzestmöglich direkt am Widerstand umgebogen und entsprechend dem Platinenaufdruck bestückt. Genauso geht es mit den restlichen Bauteilen weiter, zuerst die flachen, dann die höheren Bauteile. Als letztes sind also die SIMM-Fassungen und die Elkos dran. Die quadratischen Lötaugen der LEDs kennzeichnen deren Kathode.

Ist alles fertig bestückt, kann nach einer letzten optischen Überprüfung das Modul getestet werden. Hierzu wird es beliebig mit RAM-Modulen bestückt, die aber nicht höher als 15 mm sein dürfen. Im Höchstfall sind 17 mm zulässig, wenn die Plaste des Moduloberteils unter dem Alu-Schild herausgeschnitten wird. Zum Testen von RAM-Modulen haben Frank und Mario ein prima Testprogramm geschrieben (siehe Beitrag zum Programm RAMTEST in dieser Ausgabe). Allerdings dauert es ziemlich lange, das 4MB-Modul komplett zu überprüfen.

Bevor ich es noch vergesse: Meinen herzlichen Dank an Frank und Mario für das Testen des Moduls, besonders an Frank, weil er das Verilog-Programm für den CPLD geschrieben hat. Mittels Schaltplan ist das viel aufwändiger.

Also dann, viel Spass!

 






Bild 8: Platinenlayout des M035 (oben: Leiterseite, unten: Bestückungsseite).

 






Bild 9: Bestückungsplan (oben) und Stückliste (unten) des M035.

 


(volle Größe)
Bild 10: Schaltplan des M035, Teil 1

 


(volle Größe)
Bild 11: Schaltplan des M035, Teil 2

 



Bild 12: Aufgebautes M035 (ohne Blockanzeige), bestückt mit vier 1MB-RAM-Modulen.

 

 



Bild 7: Clubtreffen 2004: Da steckt viel Handarbeit drin: Blick in den geöffneten Z1013 von Silvio Güldner.

 


Das neue Joystick/Centronics-Modul M021

von Enrico Grämer

In der letzten News war der Schaltplan und das Layout bereits vorab abgedruckt. Inzwischen habe ich das Modul aufgebaut und ausprobiert. Ein paar Kleinigkeiten haben mich dabei noch gestört, diese habe ich nun auch beseitigt. Im Layout sind rechteckig umrahmte Lötaugen mit den Bezeichnungen “DXD“ bzw. “DXJ“ zu sehen. Diese sind für Überspannungsschutz- (Suppressor-) Dioden vorgesehen. Es kommen bidirektionale Dioden, z.B. P6KE6V8, zum Einsatz. Da diese sehr teuer sind, habe ich sie für den Bausatz nicht vorgesehen. Im Normalfall sollte auch die einfache Schutzbeschaltung, bestehend aus Vorwiderstand und 1N4148-Diode, ausreichend sein. Andererseits soll es auch Leute geben, bei denen Murphy zur Untermiete wohnt, damit er es nicht mehr soweit hat... ;–)

Bevor nun jeder zum Lötkolben greift, möchte ich empfehlen, die Kontaktleiste der Platine mit Sandpapier etwas anzuphasen. Dadurch lässt sich das Modul leichter stecken. Die Kontaktzungen im KC werden dann auch nicht mehr so stark mechanisch belastet.

Wie üblich fängt man bei den flachen Bauteilen an bzw. arbeitet sich in der Reihenfolge nach durch, wie man am besten rankommt. Also: IC-Fassungen, Dioden, Widerstände, Kondensatoren und zum Schluss die Sub-D Stecker. Pin 1 der ICs und die Kathoden der Dioden haben rechteckige Lötaugen erhalten. Bei den Sub-D Steckern muss darauf geachtet werden, dass die jeweils äußeren Bohrungen der Lötmesser für die Stecker-Schirmung mit den Bohrungen der Gehäuseverschraubung identisch sind. Man muss also von der 25-poligen Sub-D-Buchse den linken und vom 9-poligen Sub-D-Stecker den rechten Lötmesser abkneifen. Die zwei inneren Messer sind wegen der besseren mechanischen Stabilität auf jeden Fall zu verlöten. Die zwei vorderen Abstandshülsen im Gehäuseoberteil sind um ca. 2 mm zu kürzen.








(volle Größe)

Bild 13: Bestückungsplan (oben), Stückliste (mitte) und Schaltplan (unten) des M021.

 



Bild 14: Aufgebautes M021, hier noch der Prototyp ohne Bestückungsaufdruck und ohne Überspannungsdioden.

 

 

Verfügbare Bausätze

Im Moment sind folgende Bausätze vorrätig und können kurzfristig geliefert werden:

Bausatz  Preis

PC-Tastaturinterface  22 EUR
M021 (Joystick/Centronics) 32 EUR
M035 (4 MB RAM), ohne SIMM-Module und Blockanzeige 50 EUR
4 x 1MB-SIMM-Modul für das M035 2 EUR

 

 



Bild 15: Clubtreffen 2004: Unter den kritischen Augen der Anwesenden führte Göran Heinze Reparaturen und Aufrüstungen an diversen KC-Systemen durch.

 


Speichertestprogramm RAMTEST

von Frank Dachselt und Mario Leubner

Das Programm RAMTEST testet die Funktionsfähigkeit von internen und externen RAM-Modulen im KC85. Die zu testenden RAM-Bereiche werden in Blöcken zu 16 KByte entsprechend dem Modulkonzept des KC85 verwaltet.

Das Programm liegt als Assemblerquelltext (EDAS) und als fertig übersetztes MC-Programm RAMTEST.KCC vor. Mit dem fertigen Programm lassen sich komplette Module und interne Speicherbänke testen, die Assembler-Version erlaubt darüber hinaus auch das gezielte Testen einzelner Blöcke der Module. Dazu müssen im Assemblerquelltext des Programms die zu testenden Blöcke vereinbart werden. Am Beginn des Quelltextes existiert eine Datenstruktur, die Datensätze der folgenden Form enthält:

SLOT0:   DEFB 03H        ; Modulschacht 
        DEFB 00H        ; erste Bl.-#
      DEFB 03H        ; erstes MSTW
        DEFB 04H        ; MSTW-Inkrem.
        DEFB 14         ; Anzahl Bl.
      DEFW 8000H      ; Adresse 

Jeder Datensatz enthält die zu testenden RAM-Blöcke für einen (internen oder externen) Modulschacht. Die Modulschacht-Adresse ist als erstes Byte anzugeben. Danach folgt eine Blocknummer, ab der die zu durchlaufenden RAM-Blöcke gezählt werden sollen. Diese Angabe ist nur für die Anzeige von Bedeutung, um die Blöcke unabhängig vom Modulsteuerwort zu identifizieren. Das nächste Byte ist das Modulsteuerwort des ersten zu testenden Blocks in diesem Modul. Der Wert, der zum Modulsteuerwort addiert werden muss, um den jeweils nächsten Block einzuschalten, wird im folgenden Byte angegeben. Danach folgt die Anzahl der Blöcke, die in diesem Modul getestet werden sollen. Die abschließende Angabe ist die Basisadresse des RAM-Blocks, wobei als Standardwert 8000H zu verwenden ist. Alle RAM-Blöcke müssen mit den angegebenen Modulsteuerworten auf der angegebenen Basisadresse aktiv geschaltet werden.

Der oben angegebene Datensatz ist für den auf 256 KByte aufgerüsteten RAM des KC85/4 vorgesehen. Es werden 14 Blöcke zu 16 KByte auf der internen Moduladresse 03 (RAM8), beginnend mit der logischen Blocknummer 0 getestet. Das erste Modulsteuerwort ist 03H, das zweite 03H + 04H = 07H, das dritte 07H + 04H = 0FH usw. Die logischen Blöcke 0E und 0F werden nicht getestet, da sie dem RAM0 und dem RAM4 entsprechen.

Beispiele für externe (gesteckte) Module sind im folgenden angegeben:

4 Blöcke des M011 (64 KByte) im Schacht 0C:

SLOT1:   DEFB 0CH        ; Modulschacht
         DEFB 00H        ; erste Bl.-#
         DEFB 03H        ; erstes MSTW
         DEFB 40H        ; MSTW-Inkrem.
         DEFB 4          ; Anzahl Bl.
         DEFW 8000H      ; Adresse

1 Block des M022 (16 KByte) im Schacht F0:

SLOT2:   DEFB F0H        ; Modulschacht 
         
DEFB 00H        ; erste Bl.-#
         DEFB 83H        ; erstes MSTW
         DEFB 00H        ; MSTW-Inkrem.
         DEFB 1          ; Anzahl Bl.
         DEFW 8000H      ; Adresse

Mit dieser Datenstruktur können auch gezielt einzelne Blöcke oder Teilbereiche aus größeren Modulen ausgewählt und getestet werden. Die Anzahl der definierten bzw. zu verwendenden Datensätze ist frei wählbar. Das Ende der Definitionstabelle wird durch eine abschließende 0 gekennzeichnet. Im Quelltext ist Platz für 20 Datensätze vorgesehen. (siehe Kommando TESTM weiter unten in der Beschreibung!).

Nach der Assemblierung steht im CAOS-Menü das Menüwort TEST zur Verfügung, mit dem das Testprogramm gestartet wird. Zuvor sind alle nicht im Test verwendeten externen Module, die den RAM-Bereich der zu testenden Module (im Normalfall 8000H...BFFFH) überdecken können, auszuschalten. Die internen RAM8-Blöcke werden automatisch durch das Programm geschaltet. Bei Verwendung der Basisadresse 4000H ist der RAM4 auszuschalten (SWITCH 4 0), wenn dieser nicht mit getestet wird.

Für einen vollständigen Test empfiehlt es sich, nicht nur das zu testende Modul selbst zu verwenden, sondern auch mindestens ein höher priorisiertes und ein niedriger priorisiertes Modul in die Testschleife aufzunehmen, um auch die korrekte Funktion der Prioritätskette zu testen.



Bild 16: Clubtreffen 2004: Hier wird der Prototyp des M035 in Enrico Grämers KC- System im Schacht 1C getestet. Das Monitorbild zeigt, daß bisher keine Fehler aufgetreten sind.

Das Testprogramm arbeitet die Datenstruktur in der angegebenen Reihenfolge zyklisch ab. Während des Tests ist der Bildschirm in zwei Fenster aufgeteilt. In der obersten Zeile werden zur Kontrolle die im Test einbezogenen Modulsteckplätze angezeigt. Darunter (Statusfenster) wird für jeden getesteten Block eine Zeile der Form

       rr mm:bb --> mi:bi I10ESBWPIR

ausgegeben. Die Angaben haben folgende Bedeutung:

   rr ... Nummer des Testdurchlaufs (Runde), beginnend bei 00 
   mm ... aktuelle Moduladresse
   bb ... aktuelle Blocknummer
   mi ... zurückgelesene Moduladresse
   bi ... zurückgelesene Blocknummer

Die Zeichen “I10SBWPIR“ kennzeichnen die durchgeführten Tests. Falls während der Tests in einer Speicherzelle ein Fehler erkannt wird, wechselt das Zeichen die Farbe von Weiß auf Rot und im unteren Bildschirmteil (Fehlerfenster) erscheint eine Zeile der Form

       rr mm:bb t aaaa dd --> dr # eeee:eeee

Die Angaben haben folgende Bedeutung:

        rr ... Nummer des Testdurchlaufs (Runde), beginnend bei 00 
      mm ... aktuelle Moduladresse
      bb ... aktuelle Blocknummer
      t ... Testmode (I,1,0,E,S,B,W,P)
    aaaa ... Speicheradresse
      dd ... erwartetes Datenbyte
      dr ... zurückgelesenes Datenbyte
eeee:eeee ... laufende Nummer des Fehlers (32 Bit)

Im einzelnen werden folgende Tests durchgeführt, die durch jeweils eines der Zeichen I,1,0,E,S,B,W,P oder R symbolisiert werden:

I ... Blockidentifizierung

Dieser Test liest zunächst aus <Basisadresse> und <Basisadresse + 1> die dort abgelegten Werte mi (Moduladresse) und bi (Blocknummer) zurück und gibt sie in der Statuszeile aus. Diese Werte stimmen erst ab dem zweiten Durchlauf mit den erwarteten Werten mm und bb überein. Eine Abweichung der beiden zurückgelesenen Werte von den erwarteten Werten hat keine Ausgabe im Fehlerfenster zur Folge, da diese Information im Statusfenster erscheint. Ab dem zweiten Durchlauf enthalten die restlichen Bytes des Blocks ein eindeutiges Pseudo-Zufallsmuster, das zurückgelesen wird. Der Vergleich wird ab dem zweiten Durchlauf durchgeführt, das führende ’I’ in der Testanzeige erscheint deshalb nicht im ersten Durchlauf.

1 ... alle Bits 1

Der gesamte Speicherblock wird mit dem Datenbyte FFH gefüllt und zurückgelesen.

0 ... alle Bits 0

Der gesamte Speicherblock wird mit dem Datenbyte 00H gefüllt und zurückgelesen.

E ... Einzelbit-Tests

Es wird überprüft, ob sich alle Bits einer Speicherzelle einzeln setzen und rücksetzen lassen. Anschließend wird noch kontrolliert, dass keine (nur durch ein Adressbit abweichende) benachbarte Speicherzelle beim Schreiben des Datenbytes FFH mit verändert wird (Übersprechtest). Dieser Test wird nur für jede 31. Speicherzelle ausgeführt.

S ... aperiodisches Muster (vorwärts)

Der Speicherblock wird ab <Basisadresse> mit einem aperiodischen Muster der Form

01 02 02 03 03 03 ...

gefüllt und zurückgelesen.

B ... aperiodisches Muster (rückwärts)

Der Speicherblock wird ab <Basisadresse +3FFFH> rückwärts mit einem aperiodischen Muster der Form

01 02 02 03 03 03 ...

gefüllt und zurückgelesen. 

W ... Schreibschutz

Bei gesetztem Schreibschutzbit wird das Muster des Tests B mit einem anderen Muster überschrieben. Das anschließende Zurücklesen muss die Bytes des Testmusters B liefern, ansonsten wird ein Fehler ausgegeben. 

P ... Programmabarbeitung

In den Speicherblock wird Programmcode geladen und dort gestartet. Der Programmcode beginnt ab <Basisadresse + 100H> und hat folgende Form:

34 ... 3C47H-mal ... 34 C9

Der Operationscode 34H entspricht dem Befehl INC (HL), C9H dem Befehl RET. In die Speicherzelle <Basisadresse + 1> wird der Wert 00H geladen und das Unterprogramm mit HL = <Basisadresse + 1> aufgerufen. Nach erfolgreicher Abarbeitung des Programms wird in der Speicherzelle <Basisadresse + 1> der Wert 47H erwartet. ACHTUNG: Da die fehlerhafte Abarbeitung des Programmcodes auch zum Absturz des Rechners führen kann, wir dieser Test nur ausgeführt, wenn die vorher für diesen Block absolvierten Tests fehlerfrei waren, ansonsten wird für den Test ein “-“ statt dem “P“ angezeigt. 

I ... Schreiben der Blockidentifizierung

Das abschießende ’I’ in der Testfolge schreibt die Werte mm und bb in die Speicherzellen <Basisadresse> und <Basisadresse + 1> und füllt den Rest des Blocks mit einem eindeutigen Pseudo-Zufallsmuster (16 Bit m-Sequenz mit Startwert mm:bb). Das Rücklesen erfolgt erst im nächsten Durchlauf am Beginn der Testfolge für diesen Block (Datenerhalt-Test). 

R ... Refresh-Test

Es wird eine Warteschleife abgearbeitet, deren Dauer in Sekundenschritten wählbar (siehe Kommandozeilen-Parameter) ist. Für die Dauer dieser Schleife erfolgen keine Schreib-/Lesezugriffe in den zu testenden Speicherblock. Der Datenerhalt muss während dieser Zeit allein durch den M1-Zyklus-Refresh gewährleistet werden. Die Warteschleife ist so dimensioniert, dass für je 1024 M1-Zyklen eine Zeit von 8,67 ms gebraucht wird. 

Kommandozeilen-Parameter:   Dem Programm TEST können bis zu drei Parameter beim Programmaufruf übergeben werden:

TEST ff ss rr

Der Vorgabewert für nicht angegebene Parameter ist jeweils 0.

Der Parameter ff beeinflusst die Art der Fehlerausgabe im Fehlerfenster. Mit zunehmenden Wert ff wird die Ausgabe im Fehlerfenster beschleunigt, der Informationsgehalt im Gegenzug aber verringert:

ff = 0 ... Paging, wartet nach 14 Zeilen auf Tastenbetätigung
1 ... fortlaufendes Scrollen über großes Fehlerfenster 
2 ... fortlaufende Fehlerausgabe einer Zeile, dafür ist das Statusfenster entsprechend größer 
3 ... Fensteraufteilung wie bei ff = 2, aber nur Ausgabe des Fehlerzählers eeee:eeee

 

Der Parameter ss legt den Schaltzustand der zu testenden Module fest:

ss = 0 ... Die zu testenden Module sind im Normalfall ausgeschaltet. Das jeweils aktuelle Modul wird eingeschaltet und nach dem dazugehörenden Test wieder ausgeschaltet. 
1 ... Alle zu testenden Module werden zum Beginn einer jeden Runde eingeschaltet. Nach dem dazugehörenden Test wird das aktuelle Modul ausgeschaltet.

 

Voraussetzung für den Test mit ss = 1 ist, dass alle zu testenden Module nach Schachtnummern geordnet, beginnend mit der kleinsten, in die Datenstruktur des Testprogramms eingetragen werden.

Grundsätzlich muss sichergestellt sein, dass kein nicht zu testendes (aktiv geschaltetes) Modul ein zu testendes Modul überdecken kann. Im Zweifelsfall sollten alle nicht am Test beteiligten Module zuvor ausgeschaltet werden. Die internen RAM8-Blöcke werden automatisch durch das Programm geschaltet.

Der Parameter rr legt die Länge der Warteschleife (Test ’R’) in Sekunden fest. Alle Werte von 00 bis FF sind zulässig.

Das Testprogramm kann jederzeit durch Drücken der BRK-Taste abgebrochen werden. Die Abfrage der BRK-Taste erfolgt jeweils am Ende der Tests eines Blocks und nach jeder Zeile, die im Fehlerfenster ausgegeben wird.

Erzeugen der Modulliste:   Das Menüwort TESTM im CAOS-Menü dient der automatischen Generierung von Datensätzen für die Tests mit dem Menüwort TEST. Wenn komplette Module getestet werden sollen, ist es damit nicht erforderlich, den Assemblerquelltext zu bearbeiten und die Tabellen am Anfang neu zu schreiben. Dies geht einfacher mit dem Kommando TESTM:

TESTM ohne Argumente durchsucht alle internen und externen Module des KC und zeigt die gefundenen Module zur Kontrolle an. Nach maximal 20 Modulen bricht die Suche ab, da der für die Daten vorgesehene Speicher maximal 20 Module aufnehmen kann.

Es lassen sich aber auch gezielt einzelne oder mehrere Module in den Test aufnehmen. Dazu sind diese einfach als Liste von Argumenten hinter TESTM anzugeben. Zur Kontrolle wird auch hier wieder angezeigt, welche Module erkannt und in der Liste aufgenommen wurden. Beispiel:

TESTM 03 04 10 F0 F1

Es werden die internen Speicher RAM8 (Steckplatz 03), RAM4 (Steckplatz 04), sowie die Module auf Steckplatz 10, F0 und F1 getestet. Bekannte Module, die automatisch erkannt werden, sind:

RAM4 ... 1 oder 2 Ebenen, abhängig von CAOS-Version
RAM8 ... 2 oder 14 Ebenen abhängig von Speicherausbau und CAOS-Version
M022 ... 16 KByte
M024 ... 32 KByte
M011 ... 64 KByte
M036 ... 128 KByte
M032 ... 256 KByte
M034 ... 512 KByte
M035 ... 1 MByte

Nach Ausführung des Kommandos TESTM ist nur die Definitionstabelle erzeugt. Der eigentliche Test erfolgt erst durch das Kommando TEST, bei dem weitere Parameter angegeben werden können.

Ausgabe der Fehlerstatistik:   Im CAOS-Menü steht weiterhin das Menüwort BLIST zur Verfügung, mit dem nach Durchführung der Tests eine Fehlerstatistik ausgegeben wird. Jeder Block, in dem ein Fehler erkannt wurde, erscheint mit einer Zeile der Form

mm:bb eeee:eeee [I10ESBWP]

Die Angaben haben folgende Bedeutung:

        mm ... Moduladresse 
        bb ... Blocknummer
 eeee:eeee ... Anzahl der Fehler, die insgesamt in diesem Block erkannt wurden (32 Bit)
[I10ESBWP] ... hier erscheinen nur die Zeichen der Tests, bei denen im Block Fehler aufgetreten sind

 


Ersatz der Dekodier-PROMs im KC85/4-Grundgerät

von Enrico Grämer

Mario Bock hat auf dem KC-Treffen seinen KC85/4-Nachbau, das Optima V1 Board, vorgestellt. Sollte es in Serie produziert werden, besteht ein nicht unerhebliches Problem: Im KC werden als Adress-Dekoder zwei 74S287 mit den Bauteilnummern D202 und D005 eingesetzt. Das sind 256x4-Bit-PROMs, die so gut wie nicht mehr zu beschaffen und wenn doch, sehr teuer sind. Allein ein passendes Programmiergerät soll einige Hundert Euro kosten. Als Ersatz bieten sich da GALs vom Typ GAL16V8 an. Allerdings muss man einen kleinen Adapter bauen, da die Pin-Zahl und die Belegung nicht stimmen (siehe Tabelle mit der Pinzuordnung).

Bild 18 zeigt die Inhalte der beiden PROMs unter Berücksichtigung der Adressen (A7...A0) und der Ausgänge (Q3...Q0). Bei Abweichungen vom “Grundzustand“ sind die Ausgänge farbig hinterlegt. 

In der Tabelle mit der Pinzuordnung ist die Pinbelegung der PROMs und GALs zu finden. Wer sich die GALs selbst programmieren möchte, kann dazu die JEDEC-Dateien PROMD202.JED und PROMD005.JED verwenden. Alle zugehörigen Dateien befinden sich im Archiv PROMS.ZIP.

Signal 74S287 GAL16V8   Signal 74S287 GAL16V8
A0  5 7   A7  15 17
A1  6 8   /OE 13/14 -
A2  7 9   Q0 12 15
A3  4 6   Q1 11 14
A4  3 5   Q2 10 13
A5  2 4   Q3 9 12
A6  1 3   GND 8 10
        +5V 16 20

 

Die nicht benutzten Pins 1, 2, 11, 16, 18 und 19 der GALs bleiben jeweils unbeschaltet.

 



Bild 17: Clubtreffen 2004: Kaum vom Original zu unterscheiden: Das Prototyp-Board “Optima V1“ des KC85-Neubauprojekts von Mario Bock.

 





Bild 18: Inhalt der Dekodier-PROMs im KC85/4-Grundgerät

 


Ein Tool für alle Fälle: Der etwas andere Prüfstift

von Guido Speer

Wer jetzt eine Eierlegende-Wollmilch-Sau erwartet, ist hier fast richtig :–) Wer aber das allerneueste XYZ-Modul für den KC erwartet, ist total falsch. Das ist mehr die Domäne von Enrico und Frank. Wiewohl das folgende Werkzeug (Tool) dennoch sehr gut am KC zu gebrauchen ist. Aber der Reihe nach!

Die Vorgeschichte...

... ist schnell erzählt. Da ich neben Arbeit, KC und Tonbandmaschinen auch noch etwas mit Funktechnik am Hut habe (so noch Zeit ist), suchte ich nach einem kleinen Frequenzzähler, um einen älteren DDR-HF-Generator nachzurüsten. Dabei bin ich im WWW auf diverse Schaltungen gestoßen, in denen PICs von Microchip eingesetzt wurden. Außer dem PIC, ein paar Widerständen, Vorteiler und LCD-Display, war kaum mehr dran. Der Hauptteil steckt in der Software – das überzeugte. Und wie das so ist, man bastelt sich durch, liest hier und dort was nach, findet noch viele interessante Schaltungen und ist mitten drin in der PIC-Welt. Enrico meint zwar, “die Dinger sind räudig“, da sie nur gut 30 Befehle haben, aber genau das ist für Programmiertrottel wie mich die Chance, einzusteigen. Und wenn die paar Befehle dazu taugen, so was wie das folgende Projekt zu realisieren, was will man mehr?

Das Projekt...

... ist nicht von mir, sondern von Voja Antonic in den Beispielschaltungen (App-Notes) von Microchip veröffentlicht worden (s.u.) und lief mir zufällig in feinstem Englisch über den Bildschirm. Nachdem ich mir die technischen Daten einigermaßen zusammengestammelt hatte war klar: Das muss ich haben! Das Schaltbild war sehr übersichtlich. Außer PIC, ein paar Transistoren und Kleinteilen, brauchte man nur noch ein Display. Selbiges hatte ich zufällig noch liegen (sogar mehrere, bei eBay gehamstert). Also los!

Die Daten...

... sind recht ordentlich:

  • Frequenzzähler 0...40(!) MHz, etwa TTL-Pegel, oder wesentlich empfindlicher, je nach Schaltung.
  • Ein-Kanal Logikanalyser: 25 ms – 1 µs (40 Hz – 1 MHz), 300 Sampels Speichertiefe, Trigger umschaltbar auf H/L- oder L/H-Flanke.
  • Empfänger für serielle Signale: Umschaltbar RS232 oder TTL, alle Standard-Baud-Raten von 1200 bis 115000, mit oder ohne Parität, 7 oder 8 Bit, 42 Zeichen Speicher.
  • Logik-Prüfstift: H, L und Pulse klassisch über LEDs angezeigt, wobei auch sehr kurze Impulse noch sichtbar sind.
  • Power über eingebaute NiMH-Akkus 4,8 Volt, 700 mAH AAA für viele Stunden Laufzeit (mein Prototyp: 40 Stunden) oder ext. Netzteil ca. 14...18 V, 100 mA AC/DC.
  • Stromaufnahme: 5...20 mA, je nach eingesetzten LEDs und LCD
  • Auto-Power-off nach 8 Minuten ohne Tastendruck (außer beim Laden/Entladen und gestartetem Logicanalysermodus)
  • Mikrocontroller-überwachte Lade- und Entladeschaltung (einfache Timer gesteuerte Konstantstromquelle und Stromsenke)
  • Anzeige: 2 x 20 Zeichen Dot-Matrix-LCD
  • Bedienung: 2 Tasten für alle Funktionen
  • Abmessungen: etwa 180 x 45 x 25 mm
  • Zu guter Letzt: Keine teuren Spezialbauteile, alles ist in einer gut sortierten Bastelkiste vorhanden bzw. leicht beschaffbar.

Die Software (Firmware)...

... war als erstes zu erstellen. Die lag natürlich auch in der App-Note vor, aber das Ganze als PDF und dazu noch als List-File. Also erstmal den Text extrahiert. Dann in mühevoller Kleinarbeit aus über 2000 Zeilen alle überflüssigen Zeilennummern, Hex-Codes usw. rausgepusselt, übrig blieb der reine Assembler-Text. Den assembliert (und einige Fehler gesucht) und die Firmware war da (s.u.). Diese füllt den vorhandenen Programmspeicher im 16F84 vollständig aus. Nicht ein Byte ist mehr frei.

Die Schaltung...

...ist recht übersichtlich, aber in einigen Punkten gegenüber dem Original verändert worden. Diese sind:

  • Im Original waren 180mAH-NC-Akkus eingesetzt. Da diese etwas schwachbrüstig sind, NC auch noch mit dem Memory-Effekt behaftet ist, habe ich 700mAh-NiMH eingesetzt.
  • Die Lade- und Entladeströme mussten nun angepasst werden. Deshalb wurden gegenüber der Originalschaltung R19, R20 und 21 geändert.
  • Da LED5 die ca. 70 mA Ladestrom nicht verkraften würde, wurde ihr R24 parallel gelegt.
  • “Akku-Hauptschalter“ in Form eines Jumpers
  • Kontrastreglung für das LCD
  • T1 und T4 wegen der höheren Verlustleistung durch stärkere Typen ersetzt
  • Die deutlichste Änderung: T6 mit D13 und R23 eingefügt. (siehe Schaltungsbeschreibung)

Schaltungsbeschreibung

Fast alle Funktionen werden vom Mikrocontroller, einem PIC 16F84-10 von Microchip, gesteuert.

Die Versorgungsspannung von etwa 14...18 Volt gelangt über die Graetz-Brücke an LED5. Es ist also völlig egal, welche Polarität der Netzteilstecker (3,5 mm Klinke) hat, sogar Wechselspannung ist möglich. Unter 14 Volt nimmt der Ladestrom rasch ab, über 18 Volt sollten es nicht sein, da der Strom über LED5 zu hoch wird und die Verluste in T4 ansteigen. Die Flussspannung von LED5 sollte etwa 1,9 Volt sein.

Normale grüne LEDs sind da etwa richtig. Neumodische Power-LEDs sind hier völlig falsch, da sie bis zu 3,5 Volt haben. Die LED würde also nie leuchten. T4 bildet mit R19, D7 und D8 eine einfache (aber völlig ausreichende) Konstantstromquelle. ZD2 ist nicht etwa zur Spannungsstabilisierung vorgesehen, sondern leitet im Defektfall eine zu hohe Spannung nach Masse ab, um den PIC und das Display zu schützen. Die Spannung wird nur durch den Akku “stabilisiert“. Das heißt, sie schwankt zwischen etwa 4 Volt (Akku leer) und etwa 6 Volt (Akku voll). Ist der Akku defekt oder nicht richtig kontaktiert (oder Jumper offen), steigt die Spannung an und ab ca. 6,8 Volt leitet ZD2. Sie wird dabei ordentlich warm, das sollte also nur kurzzeitig vorkommen. Die Diode D5 verhindert den Rückfluss der Akkuspannung, wenn das Netzteil nicht angeschlossen ist. T5 ist der “Power-Schalter“. Dazu wird seine positive Basis (wie auch die von T4) über D6, D1 oder D2 und gedrückter Ta1 oder Ta2 kurz nach Masse gezogen. Der PIC startet und aktiviert über R9 und T3 die Selbsthaltung. Diese dauert genau 8 Minuten. Jeder Tastendruck (Ta1, Ta2) setzt den internen 8-Minuten-Zähler zurück.

Um einem Memory-Effekt vorzubeugen, sollte ein halbvoller Akku vor dem Laden entladen werden (ist bei NiMH-Akkus nicht ganz so kritisch). Dazu bilden T1 mit R20, R21 und LED4 mit R22 eine einfache Stromsenke, die die Akkus mit etwa 100 mA entlädt. Geschaltet wird diese über R11 vom PIC. Da der gleiche Anschluss auch für das Display benutzt wird, werden dessen Steuersignale mit C4 geglättet (also nur ein deutlich längerer “Impuls“ kann C4 genügend aufladen und T1 durchsteuern.) Der PIC überwacht über RA1 mit einem einfachen Komparator (T2 und dessen Beschaltung) die Akkuspannung. Sinkt diese unter 4 Volt, steuert T2 nicht mehr durch, RA1 geht auf H, der PIC erkennt das, T1 wird geöffnet und T6 geschlossen, das Laden beginnt. Gleichzeitig startet der PIC einen 14-Stunden-Timer. Nach Ablauf der 14 Stunden schaltet sich das Gerät ab, das Laden wird beendet. Die Ladeschaltung arbeitet übrigens immer wenn das Gerät eingeschaltet und das Netzteil eingesteckt ist, also auch wenn normal gearbeitet wird. In der Originalschaltung war die Ladeschaltung auch beim Entladen aktiv. Also der mühsam produzierte Ladestrom wurde beim Entladen gleich wieder über R20/R21 verheizt. In der Originalkonfiguration war das gerade so vertretbar, da ja nur ca. 18 mA Ladestrom flossen. Also selbst mit eingestöpseltem Netzteil wurden die Akkus noch mit gut 80 mA entladen. Jetzt ist der Ladestrom gut 70 mA hoch, bleiben noch knapp 30 mA zum Entladen. Das hatte mich genervt, deshalb (und aus Umweltschutzgründen haha...) habe ich T6 eingefügt. Der schaltet den Ladestrom erst dann zu, wenn T1 den Akku nicht mehr entlädt. Damit jetzt kein Querstrom über R23, R20 und R21 an der Konstantstromquelle vorbei fließt, musste D13 eingefügt werden.

Der Rest ist schnell erklärt. Der Quarz bestimmt die Genauigkeit des Frequenzzählers, ist aber eher unkritisch, da der Zähler (leider) prinzipbedingt keine Einerstellen exakt auflösen kann. Das heißt, die Auflösung der letzten Stellen ist abhängig vom eingestellten Zählbereich und geht von minimal 4 Hz (bei 5 Mhz Anzeige) bis 32 Hz (bei 40 MHz Anzeige). Die Genauigkeit reicht für Computeranwendungen aber allemal aus und selbst im KW-Funkbereich sind viele kommerzielle Geräte schlechter. Zur Verdeutlichung: 40 MHz sind ausgeschrieben genau 40.000.000 Hz! Als Quarz habe ich einen (teuren) HC49-Quarz mit ca. 10 ppm Genauigkeit eingesetzt. Übliche Quarze für Mikrocontroller (also das billige Conrad-Geraffel) haben ca. 50 ppm und laufen meist 200...500 Hz zu hoch, gehen zur Not aber auch. Durch variieren von C2 und C3, kann der Quarz auf genau 10,0 MHz gezogen werden. Dabei kann aber die Schwingstabilität leiden. Ich habe den Prüfstift mit meinem 10MHz-Frequenznormal (Genauigkeit besser als 0,1 ppm!) verglichen und er zählte immer ca. 30 Hz zu wenig. Bei einem Billig-Quarz waren es dann etwa 170 Hz. Aber nochmals: Sicher will mit diesem Prüfstift niemand einen Sender abgleichen, obwohl das als Grobabgleich durchaus möglich wäre.

Die Empfindlichkeit des Zählereinganges kann deutlich erhöht werden, wenn R6 verringert wird. R6 bildet mit der internen Schutzdiode im PIC die Eingangsschutzschaltung. Unter 200 Ohm sollte er nicht dimensioniert werden. So eine Prüfspitze wird schnell mal irgendwo drangehalten, ohne genau zu wissen, welche (Impuls-)Spannung gerade anliegt. Ich habe das Ding schon an die falsche Seite eines Schaltnetzteiles geprömpelt. Ich habe gekribbelt, der PIC hat aber überlebt (ich irgendwie auch :–)).

Das Display wird im 4-Bit-Modus betrieben, da der PIC nur 13 Ports hat. In der Originalschaltung war keine Kontrastreglung für das Display vorgesehen. Ich habe das geändert, da bei vollem Akku das Display fast komplett schwarz war. Ich musste aber die beiden Widerstände als SMD auf die Platinenunterseite verfrachten. R24 wird gleich bestückt und R25 zunächst durch einen provisorischen Trimmer ersetzt, der Kontrast bei vollem Akku eingestellt, der Trimmer ausgemessen und ein Standardwert eingelötet. Da die Betriebsspannung zwischen ca. 4...6 Volt schwankt, ist bei fast leeren Akkus der Kontrast schon sehr flau. Das ist eine gute “Akkuzustandsanzeige“.

Die LEDs 1...3 dienen der gewöhnlichen Logikanzeige. Natürlich auch durch den PIC bewertet und gesteuert.

Zu guter Letzt habe ich noch einen Jumper am Akku eingebaut. Weil ich bei einem Kurzschluss eine Leiterbahn eingebüßt hatte, kam mir die Erleuchtung (geleuchtet hat die Leiterbahn). Er muss aber unbedingt gesteckt sein, bevor das Netzteil eingesteckt wird (siehe oben).

Weitere, sehr ausführliche Einzelheiten, vor allem zum Programmablauf und den internen Schaltzuständen, sind der App-Note von Microchip (AN0689.pdf oder 00689a.pdf) in feinstem Englisch zu entnehmen.

Die Platine...

... ist leider in der App-Note nicht enthalten, wohl aber der Bestückungsplan. Meine Vermutung war: Wer einen Bestückungsplan zeichnet, hat auch eine Platine gezeichnet. Also habe ich Google angeworfen und das ganze Internet durchsucht. Aber was immer ich auch eingegeben habe: nix! Irgendwann hatte ich die Idee, den Namen des Autors einzugeben – Bingo! Ich stieß auf die Seite von Erik Grindheim. Neben einigen kurzen Hinweisen, den Änderungen zum NiMH-Akku, den Originalquelltexten (hätte ich mir einiges ersparen können, grrr...) und vielen Fotos, fand ich da auch die Platine. Natürlich nur für die Originalschaltung. Also habe ich mein Layout-Programm angeworfen und zunächst den Schaltplan mit allen Ergänzungen gezeichnet. Der ist leider nicht ganz so übersichtlich wie das Original, da der 16F84 und das Display im Layoutprogramm nur in der normgerecht gezeichneten Version vorlagen.

Danach war die Platine dran. Hierbei wurde ich endgültig über die Möglichkeiten moderner Autoplatzierer und -router ernüchtert. Zugegeben, die Platine ist durch die Konstruktion mit den eingebetteten Akkus etwas kompliziert. Aber was das Programm selbst nach stundenlangen Optimierungsroutinen anbot, war eine Katastrophe. Also nahm ich die Layoutvorlage von Eriks Seite, habe sie nachgezeichnet und die Ergänzungen eingearbeitet. Die Herstellung ist jedem selbst überlassen. Da die Platine doppelseitig ist, habe ich mir eine “Tasche“ aus den beiden Filmen geklebt (Druckseiten nach innen), darin drei ca. 5 mm große Löcher eingestanzt (Bürolocher), die Platine (Rohmaß) eingeschoben, etwas Klebeband über die Löcher und die Platine fixiert (die Platine kann nicht mehr verrutschen) und beide Seiten ganz normal belichtet, geätzt und fertig. Alternativ habe ich mal bei PCB-Pool nachgefragt, was die in professioneller Herstellung kosten würde. Bei Abnahme von 20 (10) Stück kommen ca. 14 Euro zusammen (mir noch unklar, ob mit Lötstopp). Da PCB-Pool bei so einer kleinen Platine einen Mindestpreis hat, musste ich 2 Stück auf einen Nutzen packen, woraus eine Mindestmenge von 20 resultiert.

Alternativ kann das ganze Projekt (ernsthaft) auch auf Lochrasterplatine aufgebaut werden. Dafür aber kein Hartpapier nehmen, da das an den dünnen Stellen (beim fast unvermeidlichen Sturz von der Werkbank) brechen könnte.

Der Aufbau...

... sollte keine großen Probleme bereiten. Fast sämtliche Bauelemente sind unkritisch. Als Transistoren können natürlich auch DDR-Typen verwendet werden (SC-, SS-, SF- und SD-Serie) Die Widerstandswerte sollten nur in etwa stimmen. Außer R19, R20, R21 und R24! R20 und R21 müssen 0,6-Watt-Typen sein. Als Dioden gehen fast alle billigen Typen aus der Bastelkiste, sie sollten (zumindest D5 und D13) 300 mA vertragen. Als PIC gehen auch die A-Typen, aber ein “-10“ (MHz) sollte es sein (obwohl bei mir auch ein “-4“ problemlos lief).

Die Platine wird in die richtige Form gebracht (Säge, Feile, Sandpapier), wobei die Passmarken hilfreich sind. Dann gebohrt (Durchkontaktierungen 0,5 mm, Lötaugen 0,8 mm, Taster und Klinkenbuchse ca. 1,3 mm) und bestückt. Hierbei erst die Durchkontaktierungen mit dünnem Draht herstellen. Diese danach mit feiner Feile leicht verschlichten, damit die teilweise darüber liegenden Bauelemente ordentlich ausgerichtet werden können. Dann die Widerstände und Dioden einlöten. Dabei R20 und R21 mit etwas Abstand zur Platine montieren. Jetzt kommt (noch vor den Kondensatoren!) die IC-Fassung an die Reihe. Diese (wie auch etliche andere Bauelemente) muss auch auf der Oberseite verlötet werden (entfällt bei PCB-Platine) deshalb etwas höher setzen und solange man noch an alle Pins kommt. Die LEDs habe ich alle auf Fassungen (zerlegte IC-Fassung) gesetzt, um beim Gehäusebau etwas justieren zu können. Das ist bei LED3 dringend notwendig, sonst kann man den PIC nur schwer wieder entfernen. Bei selbst geätzter Platine diese Fassungen unbedingt oben und unten verlöten. Ansonsten reißen die beim Ein- oder Ausstecken der LEDs raus.

Die Taster 1 und 2 müssen so eingebaut werden, dass die Oberkante etwa 16 mm über der Platine steht (auch oben und unten verlöten!). Der Resettaster und C5 werden als SMD von unten auf die Platine platziert. Ebenso die beiden Widerstände vom Display und der Jumper zur Akkuabschaltung.

Als Anzeige kann fast jedes 2x20-Zeichen-LCD benutzt werden, dass mit dem Standard-Controller HD44780 (oder kompatibel) arbeitet und die erforderlichen Abmessungen hat. Meins ist mir bei eBay über den Weg gelaufen. Die Montage des Displays ist einfach (siehe Fotos), hat aber eine Falle: Da der Abstand zur Platine nur 7 mm beträgt, sind als Steckverbindung keine Standard-Teile verwendbar. Entweder man hat was Kleines oder (Motto: bin geübter Ossi) man bastelt sich was. Ich habe in das Display wieder Teile der zerlegten IC-Präzisionsfassung gelötet und dieses dann wie in der Endversion montiert. Jetzt von unten durch die Platine kurze steife Drähte (Reste von LEDs sind ideal, da sehr steif) in die Fassung gefummelt und verlötet. Dadurch habe ich sogar einen leichten Versatz in der Prototyp-Platine ausgeglichen. Diese Drähte dann auch wieder oben und unten verlöten.

Alle Transistoren werden liegend montiert, außer T6. Dieser muss sehr knapp eingelötet werden. Sollte er (je nach Typ und Hersteller) doch zu hoch rausragen, hilft nur rohe Gewalt. Man kann ihn ohne zu Zucken in Höhe der Bohrung abschneiden (Laubsäge), der eigentliche Chip sitzt im unteren Teil.

Die Prüfspitze ist das Tor zur Außenwelt. Da kann sich jeder verwirklichen wie er mag. Ich habe ein M3-Distanzstück und eine M3-Schraube genommen. Diese Distanzstücke sind vielfach aus Messing (Magnetprobe) also gut zu löten. Meins war nur 10 mm lang, 15 mm wären besser. In dieses habe ich im hinteren Drittel ein Querloch von 1,6 mm gebohrt (bei 15 mm sind 2 Löcher besser) und ein Gewinde M2 geschnitten. Dann an den Kanten leicht befeilt, damit kein Kontakt zum Gehäuse zustande kommt und auch, weil die Fassung von LED1 etwas störte. Jetzt auf die Richtige Stelle gelötet, das Loch weiter durch die Platine gebohrt, auch hier Gewinde geschnitten (von oben!) und Schraube durch. Unten noch eine Mutter zum Kontern und gut ist (siehe Fotos). Der eigentliche Prüfstift ist eine abgedrehte (richtiger: “in Bohrmaschine spitz gefummelte“) M3-Schraube mit etwas Schrumpfschlauch. Alternativ kann man als Prüfspitze auch steifen Draht jedweder Art auflöten. Man sollte aber darauf achten, dass darüber zwei Drahtbügel (LED-Abfälle sind wieder ideal) zur Platinenunterseite gelötet werden.

Ganz zum Schluss (wirklich!) werden die Akkus eingelötet (Jumper offen!). Dabei ist es sinnvoll, wenn sie fast leer sind. Im Fehlerfall haben sie dann nicht genug Power, um Schaden anzurichten. Es kann auch nichts schaden, die Akkus mit etwas Heißkleber o.ä. anzupappen.

Das Gehäuse...

... ist eine Geschmacks- und eine Materialfrage. Ich habe es klassisch aus Leiterplattenmaterial gelötet. Hierbei ist Hartpapier ungeeignet da die Kupferschicht sehr hitzeempfindlich ist. Alternativ (und dekorativ) geht auch 2mm-Plexiglas sehr gut. Das hat zudem den Vorteil, dass man sich das Ausarbeiten des großen Display-Fensters sparen kann und selbiges auch gut geschützt ist. Bei Metallgehäusen (Leiterplattenmaterial ebenso) unbedingt darauf achten, dass dieses zur Schaltung isoliert ist. Am besten innen auch isolieren. Nicht nur um die Schaltung, sondern vor allem um das eigene Leben zu schützen :). Dennoch darf das Gerät natürlich nur im Niederspannungsbereich eingesetzt werden. Klar, oder?

Die Kosten...

... sind moderat. Der PIC kostet je nach Lieferant etwa 5...10 Euro. Das Display etwa 10...18 Euro, Akkus etwa 1,50 ... 2,50 Euro/Stück. Quarz, Tasten, SMD-Teile zusammen keine 5 Euro. Der Rest ist Kleinkram und vielfach in jeder Bastelkiste vorhanden. Hinzu kommt noch die Platine, je nach Ausführung bis zu 14 Euro (s.o.). Wer (wie ich) einiges als “gebraucht“ über Flohmärkte (eBay) kauft und die Platine selber ätzt, kommt wesentlich besser weg. Mein Exemplar hat mich keine 20 Euronen gekostet.

Die Anwendung...

... erschließt sich wie immer so nach und nach. Zum Beispiel:

  • Frequenzzähler: Frequenzen messen (klar), Teilerfaktoren (Adresszähler) überprüfen, Schwingungen überhaupt nachweisen (schwingt der Quarz am µC?) usw.
  • Logikanalyser: Impulsfolgen überprüfen usw.
  • Logikprüfstift: Na was wohl? :–)
  • Serial-Empfänger: Bootsequenzen von Mikrocontrollerschaltungen anzeigen (so die ausgegeben werden) der PC bleibt erstmal aus, PC-COM-Schnittstellen auf Funktion testen usw.

Die Bedienung...

... erfasst man nach wenigen Minuten wie von selbst. Eine detaillierte Bedienungsanleitung erspare ich Euch und mir an dieser Stelle :–)

Die Fehlersuche...

... sollte überflüssig sein. Dennoch: Geht nicht, gibt’s nicht! Also machen wir Troubleshooting, wie das in Englisch so schön heißt. Die erste Handlung: Reset drücken. Geht? Ok, geht nicht? Dann alle Leiterbahnen, Durchkontaktierungen und Lötstellen kontrollieren. Leiterbahnen verätzt? Alles Ok? PIC raus und Spannungsversorgung kontrollieren. Dazu Ta1 oder Ta2 drücken, an Pin 14 vom PIC muss jetzt die Betriebsspannung (ca. 5 Volt) anliegen (natürlich nur solange man die Tasten drückt). Spannung liegt an? PIC wieder rein. Mit einem Zähler (wer hat) oder Oszilloskop (wer hat) an Pin 15 und 16 des PIC kontrollieren, ob der Quarz schwingt.

Wenn nicht, die 22pF-Kondensatoren etwas verändern. Weniger pF bedeutet aber, der Quarz schwingt mit höherer Frequenz. Mit den 22 pF sollte das gut gehen. Ansonsten Quarz tauschen. Quarz schwingt? PIC defekt oder Firmware verpfuscht. Beides ok? Dann das Display testen (könnte ja sein, dass es bloß nichts anzeigt). Dazu das Display abnehmen und probehalber extern verdrahten. Und zwar Pin 1 Masse, Pin 2 +5 Volt, Pin3 über einige KOhm an Masse. Jetzt müssen in der oberen Zeile alle Segmente vollen Kontrast haben. So kontrolliere ich auch unbekannte Displays und zähle deren Stellen. Wenn nicht, hat man eventuell ein HV-Typ erwischt. Diese brauchen zur Kontrastreglung eine negative Spannung, scheiden hier also aus. HV-Typen sind aber selten. Display ok, trotzdem keine Funktion? Prüfspitze mit Masse verbinden, LED1 (Low) muss leuchten. Leuchtet, aber Display bleibt aus? Steckverbinder kontrollieren. Leuchtet nicht? Oh oh...! Bleibt nur noch alles durchsuchen, dürfte aber bei sorgfältigem Aufbau nicht vorkommen. Meins funktionierte auf Anhieb (nach Reset).

Die Endladeschlussspannung wird mit ZD1 (3,3 Volt) und R13 festgelegt. Mit 5,6 KOhm für R13 schaltet mein Exemplar bei genau 4,17 Volt ab. Sollte diese Spannung grob abweichen, kann mit R13 etwas justiert werden. Oder man misst eine Zenerdiode exakt auf 3,3 Volt aus.

Sollte das Gerät nach dem Loslassen einer Taste trotz eingestecktem Netzteil sofort wieder ausgehen, sind die Akkus völlig leer. Dann einfach eine Taste einige Sekunden (Minuten) festhalten, damit die Akkus auf eine Anfangsspannung kommen. Schaffen sie das nicht, ist eine Zelle tot. Mann sollte sich trotzdem nicht dazu verleiten lassen, richtig volle Akkus einzulöten (s.o.).

Das Modifizieren...

... ist zur Verbesserung immer möglich. Da wären zunächst Mal die LEDs. Bis auf LED5 können alle LEDs so genannte Low-Current-Typen sein. Dann werden die zugehörenden Vorwiderstände geändert (von 330 Ohm auf ca. 1 KOhm), das vermindert die Stromaufnahme und verlängert die Betriebsdauer deutlich. LED5 bleibt wie sie ist.

Man könnte den 16F84 (A) auch durch einen moderneren 16F628 (A)-10 ersetzen. Bei gleicher Pinbelegung hat der wesentlich bessere Eigenschaften. Doppelt so großen Programmspeicher, 3-fachen Datenspeicher, interne Komparatoren usw. Und er ist billiger. Damit könnten per Software zusätzliche Eigenschaften eingebaut werden:

  • Up-Down-Timer zur Steuerung von Belichtungsgeräten oder “nur“ als Eieruhr. Als Ausgang könnten die unbenutzten Pins der Klinkenbuchse genommen werden.
  • Frequenzzähler umschaltbar zur Periodendauermessung.
  • Der Komparator mit T2 könnte entfallen und wird softwareseitig programmiert (das bringt Platz auf der Platine für Zusätzliches).
  • Ansteuerung eines Piezosummers zur Signalausgabe.

Und so weiter... Für den 16F628 muss aber das Programm neu assembliert und geringfügig modifiziert werden. Hier sind die Experten gefordert.

Die Spannungsversorgung aus nur einer Zelle mit Step-Up-Wandler bringt Platinenplatz. Das erfordert aber eine deutliche Änderung der Lade- und Entladeschaltung.

Als Spannungsversorgung könnte man auch normale Primärelemente nehmen. An den Lötpads der Platine werden Federbleche angelötet. Das hat Vor- und Nachteile. Vorteile: Man spart viele Bauelemente ein, da die gesamte Entlade- und Ladeschaltung entfällt. Dadurch gewinnt man Platz (auch in der Software) für was Anderes. Nachteil: Bei häufigem Gebrauch (der kommt sicher zwangsläufig) geht das ins Geld. Nachteil bei Akkus: Die sind erfahrungsgemäß immer dann leer, wenn man sie braucht.

Schließlich könnte man das ganze Projekt auch in SMD aufbauen. Die 2x20-Displays gibt es auch deutlich kleiner (habe gerade einige gekauft, eBay), somit kommt das Teil einem “Prüfstift“ schon näher, obwohl die vorliegende Version durchaus handlich ist.

Das Angebot...

... von mir kommt jetzt (war ja klar). Wenn in einem überschaubaren Zeitraum (am besten gleich :–)) genügend Interessenten zusammenkommen, lasse ich die Platine bei PCB-Pool fertigen. Programmierte PICs kann ich auch zur Verfügung stellen, natürlich zum Einkaufspreis. Etwa 5 passende Displays (einige mit leichten Kratzern) habe ich auch noch liegen, gehen für 4 Euronen weg (Müllerpinzip).

Das ganze Projekt auf CD mit allen Unterlagen, Webseiten, Datenblättern, diesem Text, allen Fotos vom Prototypen in hochauflösendem Farbformat, allen Quellcodes, Brennfiles usw. sowie vielen weiteren PIC-Projekten, kommt für 4 Euro (incl. Porto&Pack) oder frankiertem Rückumschlag plus 2 Euro in Briefmarken ins Haus. Einfach per Mail anfragen: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. Betreff: “Multitool“

Wer nur das aktuelle Brennfile zum PIC, den Schaltplan und das Platinenlayout (beides als TIF oder PDF) braucht, findet beides auf der Beilagendiskette.

Die Quellen...

... und Weiteres sind hier zu finden:

  • www.microchip.com – Hersteller der PICs (sehr langsamer Seitenaufbau)
  • www.sprut.de – Die deutsche Seite zum PIC überhaupt. Viele Grundlagen (auch zu Dot-Matrix-LCDs), Schaltungs- und Programmbeispiele, PIC-Programmiergeräte und dazugehörende Software, viele weiterführende Links.
  • www.phanderson.com/PIC/index.html – PIC-Seite (englisch)
  • www.interq.or.jp/japan/se-inoue/e pic6.htm – PIC-Seite (englisch, mit weiterführenden Links)
  • www.willem.org – (englisch) eines der besten und preiswertesten Programmiergeräte weltweit. Programmiert über Adapter außer Herzschrittmacher fast alles. Platinen, Adapter und/oder Bausätze gibt es über eBay.
  • www.qsl.net/la9sja/electronics/ea/ – Die Seite von Erik Grindheim mit vielen Fotos, Platinenlayout (original) und Software zum “Engineer’s Assistant“, wie das Tool international auch genannt wird.

Na dann, viel Erfolg! Guido

 

Stückliste Multitool.T3001...

Name/Nummer Wert Bemerkungen
Ba1- Ba4 4 x 1,2 V, 700 mAh NiMH AAA Zellen mit Lötfahnen
Bu1 Klinkenbuchse 3,5mm-Stereo (siehe Platine und Fotos)
C1 100 n Keramik 5mm-Raster
C2,3 22 p Keramik 2,5mm-Raster
C4 1 µF, 10 V Elko (evtl. Tantal)
C5 100 n SMD-C 1206
D1 - D13 1N4148 o.ä. ca. 300 mA
IC1 PIC16F84-10 evtl. auch A-Version DIL18
JP1   abgewinkelt, auf Unterseite
LCD1 LCD z.B. LC032L 2 x 20 Zeichen, 108 x 29 mm Lochabst.
LED1,4 rot 3mm-LED
LED2,5 grün 3mm-LED
LED3 gelb 3mm-LED
Q1 10 MHz evtl. HC49-Typ
R1,2,4,22 330 Ohm je nach LEDs
R3,6 1,5 k R6 je nach Empfindlichkeit
R5 220 k  
R7 10 k  
R8,9,18 47 k  
R10,11 2,7 k  
R12, R14-17 15 k  
R13 5,6 k ausmessen auf 4,0 V Entladespannung
R19 10 Ohm  
R20,21 80 Ohm 0,6 Watt
R23 2,2 k stehend montieren
R24 33 Ohm stehend montieren
R25 ca. 1 k ausmessen, SMD-1206 auf Unterseite
R26  22 k SMD-1206 auf Unterseite
Ta1,2 Key links, rechts DIGITAST (siehe Fotos)
SW3 Reset SMD-TASTER 6 x 6 mm (siehe Fotos)
T1,6 BD135 o.ä. NPN ICE ≥ 200 mA, Ptot ≥ 1 Watt
T2,3 BC337 o.ä. NPN (Anschlussfolge E-B-C)
T4 BD136 PNP (wie T1 und 2)
T5 BC328 PNP (Anschlussfolge E-B-C)
ZD1 3V3 100 mA (siehe R13)
ZD2 6V8 100 mA (besser 500 mA)

 

 



Bild 19: Platinenlayout Lötseite, die Originalmaße zwischen den Markern sind 175,26 x 38,73 mm, gerundet 175 x 39 mm.

 



Bild 20: Platinenlayout Bestückungsseite (gespiegelt).

 



Bild 21: Anschlussbelegung der 16F84er Serie (auch 16F628).

 


(volle Größe)
Bild 22: Schaltplan (hier schwarz/weiß, im Original farbig, bitte per Mail anfordern).

 


(volle Größe)
Bild 23: Statt Bedienungsanleitung der Ablaufplan. Hier ist jeder Schritt abgebildet.

 



Bild 24: Hier meine Taschen-Technologie (noch mit dem Prototyp-Layout). Funktioniert perfekt.

 



Bild 25: Der Prototyp komplett ohne Display.

 



Bild 26: Ansicht von unten. Zu sehen ist der Resettaster und R24, provisorisch eingelötet.

 



Bild 27: Bestückungsseite der Platine (Prototyp), komplett bearbeitet und gebohrt. Darüber das Display von oben.

 



Bild 28: Die Fassung mit den Lötstellen oben (zu sehen auch, dass ich die Kondensatoren wieder rausnehmen musste, um an die Fassungspins zu gelangen).

 



Bild 29: Die eingesetzten IC-Fassungsteile auf dem Display.

 



Bild 30: Der Steckverbinder (LED-Abschnitte) auf der Platine (noch mit “billigem“ Quarz). Beim Prototypen hatte ich Pin 3 erstmal weggebogen und die Kontrastreglung oben direkt auf dem Display angebracht.

 



Bild 31: In dieser Reihenfolge werden die Teile montiert.

 



Bild 32: Die komplette Montage.

 



Bild 33: Die Montageanleitung von Display, Taster und Akku (aus Original-PDF).

 



Bild 34: Der verwendete SMD-Taster (noch auf Prototyplayout mit überflüssigen Bohrungen und ohne C5).

 



Bild 35: Montage der Tastspitze von oben und die LEDs in ihren Fassungen. Man sieht, dass LED2 direkt vor dem PIC sitzt.

 



Bild 36: Montage der Tastspitze von unten. Auch deutlich zu sehen, dass meine “Taschen-Technologie“ gut funktioniert. Das von oben gebohrte Loch kommt unten exakt mittig heraus; ganz links eine geschlichtete Durchkontaktierung.

 



Bild 37: Am Ziel! Der Prototyp komplett (angezeigt wird der Analyser-Modus).

 



Bild 38: Ich habe fertig!

 


Kreativität war Trumpf – Das ZX81-Treffen 2004

von Henning Räder

Wie in den Jahren zuvor war das ZX81-Treffen in Dietges auch diesmal wieder ein besonderes Ereignis. Wieder hervorragend war die Organisation von unserem Peter – vielen Dank nochmals. Zugleich aber auch Dank an unsere stets für unser leibliches Wohl sorgenden fleißigen Damen und nicht zuletzt für ihr “Klar-Schiff-Machen“ am Ende des Treffens.

Nach meiner Meinung sind unser ZX-Team und sein ZX-TEAM-Magazin eine Oase der Kreativität, wofür alle aktiven Mitglieder ihren Beitrag leisten. Besonders erfreut waren wir über unsere Gäste aus dem In- und Ausland. Ein besonderes Highlight war für mich, dass wir, nachdem ich schon 6 Jahre mit ihm im Briefkontakt stehe, Thomas Rademacher vom KC-Club und seine Frau zum Treffen begrüßen konnten. Faszinierend waren Ulrichs Experimentalvorführung seiner Flugzeugpropeller-Messstation, Kais “Computermuseum“ und sein Vortrag zum ZX2000 sowie das Ringen von Gernot und Jens zum Einstieg in die Mailbox mit C64-Floppy. Das “Happy End“ hat mich so beeindruckt, dass ich dieses auch selbst versuchen werde.

Gefreut habe ich mich auch über ein Messmodul von Ulrich, mit dem es mit dem richtigen Sensor gelingt, Temperaturen und Frequenzen zu messen. Jens führte seine Soundbox vor, Thomas emulierte am PC den KC85/4 und informierte über seine Bildübertragungen und Wolfgang hatte wieder seine leistungsfähige SAM-Ausrüstung in Betrieb. Klaus hatte seinen interessanten ZX81-Aufbau dabei, wobei uns unser gemeinsames Interesse an HRG7 und HRG8 verband, und Dietmar und Georg führten ihre ZX96 vor.

Meine Zeilen erheben nicht den Anspruch auf Vollständigkeit, es gab noch jede Menge andere interessante Dinge zu sehen.

 


Basicode 2 – Ein neuer Anlauf

von Henning Räder

In intensiver Zusammenarbeit mit Thomas Rademacher gab es zum ZX81-Treffen wieder einige Versuche mit Basicode 2. So konnten einige Basicode2-Programme erfolgreich in den ZX81 geladen werden. Nachdem Thomas einen kleinen Fehler erkannt und korrigiert hatte, lief z.B. “Wochentag“ einwandfrei. Bekanntlich gibt es in der Literatur keine Variante, ZX81-Programme in Basicode 2 abzuspeichern. Aber Dr. Raets (Holland) scheint einen Weg hierzu gefunden zu haben. Es gibt von ihm einen Basicode-Saver, der eine normale oder speziell gefertigte PIO anspricht und mit dieser in Basicode 2 am ZX81 Programme sowohl einladen als auch abspeichern kann. Ich habe das Listing und Programmaufnahmen an Peter, Kai, Ulrich, Thomas und Gerhard geschickt und Peter und Ulrich gebeten, das Programm in die Mailbox als Info für alle Mitglieder zu setzen. Vielleicht gibt es wichtige Erkenntnisse, jeder Hinweis ist wichtig.

Ich habe nochmals versucht, Basicode3-Programme, die mir Wolfgang mal am Spektrum auf Kassette gespielt hatte, einzuladen. Diese Programme ließen sich zwar nicht in den ZX81 laden, aber unter BAC854C (Basicode 3, Farbvariante) sind diese einwandfrei in den KC85/4 einzulesen und laufen dort gut.

Zu meinem großen Erstaunen konnte ich ein von Wolfgang als konvertiertes Basicode3-Programm bezeichnetes Programm zu großen Teilen richtig mit Basicode 2 in den ZX81 einladen. Da aber leider einige Zeilennummern “unsauber“ geladen wurden, konnte ich es nicht zum Laufen bekommen. Vielleicht wäre da Dieters Impulsputzer hilfreich.

Zur Zeit versuche ich, nicht zuletzt auch von Spektrum-Usern, weitere Basicode3-Programme als konvertierte Programme zu erhalten, die ich unter Basicode 2 in den ZX81 und unter BAC854C in den KC85/4 einspielen kann.

 



Bild 39: Clubtreffen 2004: Rüdiger Kurth führte nicht nur mehrere funktionstüchtige Varianten des Mansfeld-PC vor, sondern wußte auch von interessanten Details aus dessen Entstehungsgeschichte zu berichten.