Programmieranweisung für die MegaTEK-Kamera © FF 22.11.2000 >>> Printerport <<< Programmierung Printerport (nur für PC-Softwareentwickler): Port Adressen (werden manchmal von DOS umnummeriert!) LPT0: $3bc (dez: 956+0, +1, +2) IRQ 5,7 LPT1: $378 (dez: 888+0, +1, +2) IRQ 7 LPT2: $278 (dez: 632+0, +1, +2) IRQ 5 Port: Bit: Pin Flachb. Typ: log. Polarität Name 25p. Kabel (Input (event. (Benutzung Stecker: Ader: Output Hardware durch invertiert): Drucker): +2 01 01 01 IO - /STROBE +0 01 02 03 (I)O + D0 +0 02 03 05 (I)O + D1 +0 04 04 07 (I)O + D2 +0 08 05 09 (I)O + D3 +0 10 06 11 (I)O + D4 +0 20 07 13 (I)O + D5 +0 40 08 15 (I)O + D6 +0 80 09 17 (I)O + D7 +1 40 10 19 I + /ACK +1 80 11 21 I - BUSY +1 20 12 23 I + PE +1 10 13 25 I + SELECT +2 02 14 02 IO - /AUTOFEED +1 08 15 04 I + /ERROR +2 04 16 06 IO + /INT +2 08 17 08 IO - /SELINPUT . . 18 10 - . GND . . 19 12 - . GND . . 20 14 - . GND . . 21 16 - . GND . . 22 18 - . GND . . 23 20 - . GND . . 24 22 - . GND . . 25 24 - . GND Bei der Programmierung ist zu beachten, daß Leitungen mit - Polarität beim Beschreiben mit 1 ein Low am Ausgang erzeugen, bzw. umgekehrt. Bei Verwendung von IO-Leitungen ist zum Einlesen der entsprechende Augang auf High zu setzen, da sonst der Port-Ausgangstreiber das entsprechende Printerportpin selbst auf Low hält. Die Ein- und Ausgänge sind normalerweise Hochohmig bzw. Open-Kollektor und nur mittels 1kOhm Widerstand auf High gehalten. Zur Begrenzung der Signalgeschwindigkeit (eigentlich meist ungewollt) sind typ. 1nF..10nF Kondensatoren an die Leitungen geschaltet (können bei manchen Printerportkarten für schnellere Datenübertragung entfernt werden). Die 8 Datenleitungen sind leider nicht bei manchen Printerports bidirektional. (Nur bei orginal IBM-kompatiblen ist Input möglich!). Bei neueren Modellen muß oft per Jumper oder Bios-Eintrag auf bidirektional umgeschalten werden. >>> MegaTEK-Port <<< Für die MegaTEK-Kamera wird der Printerport anders eingesetzt als für Drucker. Die Grundbelegung des Steckers ist wie folgt (Masse siehe oben): +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + x +0 02 03 05 (I)O + x +0 04 04 07 (I)O + x +0 08 05 09 (I)O + x +0 10 06 11 (I)O + x +0 20 07 13 (I)O + x +0 40 08 15 (I)O + x +0 80 09 17 (I)O + x +1 40 10 19 I + x +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + x +1 10 13 25 I + x +2 02 14 02 IO - /RESET +1 08 15 04 I + x +2 04 16 06 IO + x +2 08 17 08 IO - x Die mit x gekennzeichneten Leitungen werden unterschiedlich eingesetzt, je nachdem welche Komponente der Kamera angesprochen werden soll. >>> Initialisierung <<< Die Initialisierung (Reset-Prozedur) aller Kamerakomponenten erfolgt mit /RESET -> low (Pegel high (Pegel >ca. 2.5V wird künftig nicht mehr erwähnt) /RESET -> high § 5ms warten >>> Adresswahl <<< Jetzt sollte die Kamera /SWITCH_ACKN auf high gesetzt haben. In der Kamera ist die Komponente mit Aresse=0 selektiert. Adressen: 0: SYSTIM: Systemcontollprozessor und Timingkontrolle 1: TEK : Hauptsensor-Controller 2: HP1 : erster HewlettPackard CMOS-Leitsensor 3: HP1 : zweiter HewlettPackard CMOS-Leitsensor 4: SHUREL: Shutter und Relais-Controller 5: PELT : Peltierregel-Controller 6: NV1 : Noch nicht verwendet 7: NV2 : Noch nicht verwendet Dannach kann mittels /SWITCH -> low warten bis /SWITCH_ACKN -> low /SWITCH -> high warten bis /SWITCH_ACKN -> high die Adresse incrementiert werden um mit der entsprechenden Komponente der MegaTEK-Kamera zu reden. Nach Adresse 7 folgt wieder 0 usw. Wenn von einer auf die nächst höhere Adresse umgeschalten wird bleiben für die zur Zeit nicht selektierten Komponenten die Leitungszustände erhalten. >>> SYSTIM <<< Für den SYSTIM (Adresse 0) haben die oben mit x markierten Leitungen folgende Bedeutung: +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + NC +0 02 03 05 (I)O + NC +0 04 04 07 (I)O + NC +0 08 05 09 (I)O + NC +0 10 06 11 (I)O + NC +0 20 07 13 (I)O + NC +0 40 08 15 (I)O + NC +0 80 09 17 (I)O + NC +1 40 10 19 I + NC +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + NC +1 10 13 25 I + NC +2 02 14 02 IO - /RESET +1 08 15 04 I + DKAMPC +2 04 16 06 IO + DPCKAM +2 08 17 08 IO - DCLK NC bedeutet dabei NotConnected, d.h. die Leitungen werden nicht verwendet. DKAMPC serielle Datenleitung von Kamera zum PC. DPCKAM serielle Datenleitung von PC zur Kamera. DCLK Takt zum seriellen Transport der Daten. Ein Datenbit kann vom PC zur Kamera übertragen werden durch nachstehende Sequenz. Gleichzeitig kann der PC auch ein Bit von der Kamera empfangen. § DPCKAM -> setzen 5us warten § DCLK -> low 5us warten DKAMPC einlesen DCLK -> high Der SYSTIM erwartet vom PC 32 bit und sendet ebenfalls 32bit zurück. Die bits die der PC mit der 1 zuerst senden muß sind: 1xxx xxxx xxxx xxxx xxxx xxxx xaaa xbbb Dabei ist x egal, mit aaa wird ein Taktteiler für die TEK, mit bbb für die HP1 bzw. HP2 programmiert. Gültige Werte für aaa sind aaa = 000 schnellster Betriebstakt (§ 20MHz) 001 1/2 Betriebstakt 010 1/4 Betriebstakt . 111 1/128 Betriebstakt für bbb gilt ebenfalls: bbb = 000 schnellster Betriebstakt (§ 2.5MHz) 001 1/2 Betriebstakt 010 1/4 Betriebstakt . 111 1/128 Betriebstakt Diese Taktteilung kann nötig sein, falls der Printerport zu langsam ist und die anderen Kamera-Komponenten mit Ihrer Datenrate den PC (Printerport) überfordern, dh. eventuell Daten verloren gehen. Zurückgeliefert bekommt der PC die Zeit seit der letzten Reset-Prozedur (s.h. Oben). Dabei läuft die Zeit in § 6.5536 ms - Einheiten. Beim Transfer wird zuerst das MSB asl erstes Bit, dann als 32tes Bit das LSB übertragen. Mehr kann der SYSTIM zur Zeit nicht. >>> TEK <<< Für den TEK (Adresse 1) haben die Port-Leitungen folgende Bedeutung: +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + D0 (D8) +0 02 03 05 (I)O + D1 (D9) +0 04 04 07 (I)O + D2 (D10) +0 08 05 09 (I)O + D3 (D11) +0 10 06 11 (I)O + D4 (D12) +0 20 07 13 (I)O + D5 (D13) +0 40 08 15 (I)O + D6 (D14) +0 80 09 17 (I)O + D7 (D15) +1 40 10 19 I + TRANSFER +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + NEW_LINE +1 10 13 25 I + NC +2 02 14 02 IO - /RESET +1 08 15 04 I + DKAMPC +2 04 16 06 IO + DPCKAM +2 08 17 08 IO - DCLK Wie beim SYSTIM lassen sich Kontrolldaten mit DKAMPC, DPCKAM und DCLK zum TEK senden bzw. Statusdaten vom TEK lesen. Dazu werden hier allerdings nur § 32 bit in jede Richtung versand. Als Contollwort erwartet der TEK §§ 1xxxxxxxa xxxxxxxx bbbbbbbb cccccccc Dabei setzt bbbbbbbb das horizontale Binning bbbbbbbb = 00000000 kein X-Binning = 00000001 X-Binning = 2 = 00000010 X-Binning = 4 bis = 00100000 X-Binning = 64 cccccccc das vertikale Binning cccccccc = 00000000 kein Y-Binning = 00000001 Y-Binning = 2 = 00000010 Y-Binning = 4 bis = 00100000 Y-Binning = 64 a hat die Bedeutung des READOUT/INTEGRATE bits. Wenn dieses =1, dann schaltet der TEK den CCD-Sensor auf Integration, d.h. es werden keine Zeile(n) von der Sensorfläche ins Ausleseregister vertikal herausgeschoben. Bei =0 erfolgt ein Vertikaltransfer von cc Zeilen. Der TEK kommuniziert nur am Ende einer ausgelesenen Zeile mit dem PC, § wenn NEW_LINE=high. Ob die nächste Zeile sinnvolle Daten enthält entscheidet nur das READOUT/INTEGRATE bit. Es werden also "immer" auch während der Integrationszeit Daten ausgegeben. Die Daten gelangen parallel über D0..D7 (D8..D15) vom TEK zum PC. Die Datenübertragung nach wird mit TRANSFER wie folgt synchronisiert Warten bis TRANSFER = 1 Highbyte kann vom Printerport (D8)..(D15) gelesen werden Warten bis TRANSFER = 0 Lowbyte kann vom Printerport D0..D7 gelesen werden Das bei der Übertragung des Controllbytes zum TEK von dort zurückgesendete Statusbyte ist leer. Mehr kann der TEK zur Zeit nicht. >>> HP1 <<< Für den HP1 (Adresse 2) haben die Port-Leitungen folgende Bedeutung: +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + D0 +0 02 03 05 (I)O + D1 +0 04 04 07 (I)O + D2 +0 08 05 09 (I)O + D3 +0 10 06 11 (I)O + D4 +0 20 07 13 (I)O + D5 +0 40 08 15 (I)O + D6 +0 80 09 17 (I)O + D7 +1 40 10 19 I + DRDY +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + /FRAME +1 10 13 25 I + /ROW +2 02 14 02 IO - /RESET +1 08 15 04 I + TxD +2 04 16 06 IO + RxD +2 08 17 08 IO - TClk Dei Bedeutung der Leitungen D0..D7, DRDY, TxD, RxD und TClk entsprechen denen des HDCS-1100 Manuals. >>> HP2 <<< Für den HP2 (Adresse 3) haben die Port-Leitungen dieselbe Bedeutung wie für den HP1 (Adresse 2). >>> SHUREL <<< Für den Shutter und Relais-Controller SHUREL (Adresse 4) haben die Port-Leitungen folgende Bedeutung: +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + NC +0 02 03 05 (I)O + NC +0 04 04 07 (I)O + NC +0 08 05 09 (I)O + NC +0 10 06 11 (I)O + NC +0 20 07 13 (I)O + NC +0 40 08 15 (I)O + NC +0 80 09 17 (I)O + NC +1 40 10 19 I + NC +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + NC +1 10 13 25 I + NC +2 02 14 02 IO - /RESET +1 08 15 04 I + DKAMPC +2 04 16 06 IO + DPCKAM +2 08 17 08 IO - DCLK Wie beim SYSTIM lassen sich Kontrolldaten mit DKAMPC, DPCKAM und DCLK zum SHUREL senden bzw. Statusdaten vom SHUREL lesen. Dazu werden hier auch §§ 32bit in jede Richtung versand. Als Contollwort erwartet der SHUREL 1xxxxxxa bcdefghi xxxxxjkl xxxxxxxx Das Shutterbit a öffnet für a=1 den Shutter, andernfalls wird dieser geschlossen. Für gesetzte Bits in b-e schließt ein entsprechendes Relais. Die letzten 4 Relaiskontakte sind am 15 poligen Stecker verfügbar. Die Zuordnung ist: b Focus-, c Focus+, d Rot right, e Rot left, f Rekt -, g Rekt +, h Dekl- und i Dekl +. Nur für die 4 letzten Signal sind Re4lais eingebaut. Die anderen Signale liegen nur auf einer Pfostenleiste. Weitere Funktionen kennt der SHUREL nicht. Als Statuswort wird 00000000 bbbbbbbb 00000000 0000000a zurückgeliefert. a signalisiert mit Inhalt 1, daß der Shutter bzw. die Spannungsmessung (bereits, noch) arbeitet. A kann solange gelesen werden bis es sich ändert oder Timeout (einige s). bbbbbbbb entspricht der 12V Spannung auf der Leiterplatte (muß noch kalibriert werden) und kann z.B. abgefragt werden um zu piepsen wenn die Batterie leer ist. >>> PELT <<< Für den Peltier-Controller PELT (Adresse 5) haben die Port-Leitungen folgende Bedeutung: +2 01 01 01 IO - /SWITCH +0 01 02 03 (I)O + NC +0 02 03 05 (I)O + NC +0 04 04 07 (I)O + NC +0 08 05 09 (I)O + NC +0 10 06 11 (I)O + NC +0 20 07 13 (I)O + NC +0 40 08 15 (I)O + NC +0 80 09 17 (I)O + NC +1 40 10 19 I + NC +1 80 11 21 I - /SWITCH_ACKN +1 20 12 23 I + NC +1 10 13 25 I + NC +2 02 14 02 IO - /RESET +1 08 15 04 I + DKAMPC +2 04 16 06 IO + DPCKAM +2 08 17 08 IO - DCLK Wie beim SYSTIM lassen sich Kontrolldaten mit DKAMPC, DPCKAM und DCLK zum PELT senden bzw. Statusdaten vom PELT lesen. Dazu werden wir dort 32 bit in jede Richtung versand. Als Contollwort erwartet der PELT §§ aaaaaaaa bbbbbbbb xxxxxxxx xxxxxxxx Die ersten 8Bit setzen die Kühlleistung der oberen beiden Peltiers, die Bits bbbbbbbb die Leistung des unteren Peltiers (0=0% bis 255=100%). Als Statuswort wird 100bbbbb bbbbbbbb 000aaaaa aaaaaaaa zurückgeliefert. Das 13bit Wort aaaaa aaaaaaaa entspricht der aktuellen Ist-Temperatur des Peltiermoduls (etwas mehr als Chiptemperatur). Der Wert bbbbb bbbbbbbb der Warmseitentemperatur des Peltiermoduls (etwas mehr als Wassertemperatur; bei mehr als 32Grad wird automatisch die Strom abgeschalten). Ein Wert von 0 1100 1001 0000 entspricht -55GradC, ein Wert von 1 1001 0110 0000 entspricht +150GradC. Alle Werte dazwischen teilen diesen Bereich linear mit 0.0625GradC pro digitaler Stufe. Der PELT versucht, wenn die Soll-Temperatur abseits der Ist-Temperatur liegt, diese durch Kühlen/Wärmen auf die Soll-Temperatur anzugleichen und zu halten. Die Kühl-/Heizrate liegt bei max. 5 Grad/min. Ein Heizen über die Wassertemperatur wird nicht durchgeführt. Bei einer Wassertemperatur über +32Grad (z.B. Pumpenausfall) wird die Kühlung abgeschalten um eine Beschädigung der Peltiermodule, und des CCD zu verhindern!