S100 - Frontpanel Status Control
- Details
- Erstellt am Dienstag, 07. Oktober 2008 02:59
Tutorial: S100 Frontpanel Status Control
Dieses Tutorial beschreibt die Hardware und ihre Funktionsweise, des Frontpanels der T-Online Vision S100. Des Weiteren wird eine AVR-Mikrocontroller Schaltung inklusive Firmware vorgestellt, mit der man den Status des Frontpanels über die serielle Schnittstelle beeinflussen kann, um es z.B. an einem anderen Mainboard zu betreiben oder einen PS/2 Anschluss der S100, parallel zur Fernbedienungsfunktion, für weitere Peripherie zur Verfügung zu stellen.
- (c) Oktober'2008 Loetaffe
- http://www.loetaffe.de
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2
- or any later version published by the Free Software Foundation;
- with Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- A copy of the license is included in the section entitled
- "GNU Free Documentation License".
Inhaltsverzeichnis
1 - Frontpanel
1.1 - Hardware
1.2 - Schnittstellen (Frontpanel-Stecker / J21
1.3 - Mikrocontroller
1.4 - Funktionsweise
PS/2 Maus- und Tastatur-Schnittstelle
1.5 - Programmablauf
2.1 - Beschreibung
2.2 - Versionen
2.3 - Überblick der Features
2.4 - Programmablauf
2.5 - Hardware
2.6 - Schaltpläne
Frontpanel Status Control-Light (S100)
Frontpanel Status Control-Full (S100)
Frontpanel Status Control-Light (PC)
Frontpanel Status Control-Full (PC)
2.7 – Anschließen
Frontpanel Status Control (S100)
Frontpanel Status Control (PC)
2.8 - Software
2.9 - Erweiterungen
4 - Anmerkung
5 - GNU Free Documentation License
6 - Downloads
6.1 - Artikel
6.2 - Schaltpläne und Bauteillisten
6.3 - Software
6.4 - Alles Komplettin einem Archiv
1 - Frontpanel
1.1 - Hardware

Die Hardware des Frontpanels besteht im wesentlichen aus einer Platine, die über einen 14-poligen Stecker (2) mit dem J21-Anschluss des Mainboards verbunden wird.
Auf den ersten Blick fällt direkt das IC (3) als zentrales Element der Frontpanel-Platine auf, dabei handelt es sich um einen 8-Bit Mikrocontroller, der auf der Platine entweder gesockelt, oder, wie auf dem Bild zu sehen, fest verlötet ist. Er ist über die Pins 1-11,14 des Frontpanel-Steckers (2) mit dem Mainboard verbunden.
Der Ein-/Aus-Taster (1), die Infrarot-Diode (4) und die 2-Farben LEDs (5) sind direkt am Mikrocontroller angeschlossen, lediglich die beiden nicht bestückten LEDs (6) & (7), sind ebenfalls, wie der Mikrocontroller, mit dem Frontpanel-Stecker (Pins 12 & 13) verbunden.
1.2 - Schnittstellen (Frontpanel-Stecker / J21)

Die Pins des 14-poligen Steckers, mit dem das Frontpanel über J21 (Bild) an die Mainboard-Schnittstellen angeschlossen wird, können in 6 Gruppen zusammengefasst werden und sind wie folgt belegt:
1. Versorgungsspannung:
- Pin 1 ist mit Masse (GND) verbunden (Er ist am J21 durch einen Pfeil markiert und am Frontpanel-Stecker durch das blaue Kabel)
- Pin 14 ist, wie Pin 1, ebenfalls mit Masse (GND) verbunden
- an Pin 2 liegt die Standby-Spannung (+5VS) an
2. Serielle Schnittstelle COM2:
- Pins 3 & 4 sind mit RxD und TxD der seriellen Schnittstelle COM2 des Mainboards verbunden (Wobei auf Pin 3 das Mainboard Daten empfängt (RxD) und das Frontpanel Daten sendet (TxD), während an Pin 4 das Mainboard sendet (TxD) und das Frontpanel empfängt (RxD))
3. ATX-Power und -Reset:
- Pin 5 ist mit ATX-Reset (SW2) verbunden (Bei anderen PC-Mainboards, der plus-Pol des Anschlusses für den Reset-Taster)
- Pin 6 ist mit ATX-Power (SW1) verbunden (Bei anderen PC-Mainboards, der plus-Pol des Anschlusses für den Power-Taster)
Pin 7 ist ohne Funktion (N/C - not connected)
4. PS/2 - Maus-Schnittstelle:
- Pin 8 ist die CLOCK Leitung für den PS/2 Maus-Anschluss (Pin 5 an PS/2 Buchsen und Steckern)
- Pin 9 ist die DATA Leitung für den PS/2 Maus-Anschluss (Pin 1 an PS/2 Buchsen und Steckern)
5. PS/2 - Tastatur-Schnittstelle:
- Pin 10 ist die DATA Leitung für den PS/2 Tastatur-Anschluss (Pin 1 an PS/2 Buchsen und Steckern)
- Pin 11 ist die CLOCK Leitung für den PS/2 Tastatur-Anschluss (Pin 5 an PS/2 Buchsen und Steckern)
6. LEDs:
- Pin 12 ist mit dem Festplatten-LED Anschluss verbunden (Bei anderen PC-Mainboards, ebenfalls der HDD-LED Anschluss)
- Pin 13 ist mit dem Netzwerk-LED Anschluss verbunden (Bei anderen PC-Mainboards i.d.R. nicht verfügbar oder herausgeführt)
Die Belegung der Pins lässt sich auf der Frontpanel-Platine weiter verfolgen und mittels eines Durchgangsprüfers nachvollziehen, woraus sich ergibt, dass auch die beiden PS/2 Ports, die serielle Schnittstelle (COM2) und die ATX-Anschlüssen für Power & Reset mit dem Mikrocontroller verbunden sind, der seine Versorgungsspannung über die +5V Standby-Leitung (+5VS) des Netzteils erhält.
1.3 - Mikrocontroller
Betrachtet man die beschriebene Hardwareumgebung des Frontpanels, erfährt man, dass der Ein-/Aus-Taster, die Infrarot-Diode, die 2-Farben LEDs und sämtliche, am Frontpanel-Stecker anliegenden, Mainboard-Schnittstellen direkt mit den I/O-Pins des Mikrocontrollers verbunden sind. Daher lässt sich annehmen, dass er für alle Funktionen des Frontpanels, bis auf die beiden LEDs (an Pin 12 & 13), zuständig ist (z.B. Ein-/Ausschalt-Befehle des Tasters und Befehle der Fernbedienung entgegen zu nehmen, zu verarbeiten, an die Mainboard-Schnittstellen (J21) weiter zu leiten und, je nach System Status, die 2-Farben LEDs zum Leuchten zu bringen).
Bei diesem Mikrocontroller handelt es sich im Detail um einen 8-Bit Mikrocontroller IC89C52A (Datenblatt) des taiwanesischen Halbleiter-Herstellers "Integrated Circuit Solution Inc." ISSI/ICSI (ICSI-Homepage).
Features laut Datenblatt:
• 80C52(51) based architecture
• 8(4)-Kbytes Flash memory with fast-pulse programming algorithm and software protection
• 256 x 8 RAM (128x8 RAM)
• Three (Two)16-bit Timer/Counters
• Full duplex serial channel
• Boolean processor
• Four 8-bit I/O ports, 32 I/O lines
• Memory addressing capability
– 64K ROM and 64K RAM
• Program memory lock
– Lock bits (3)
• Power save modes:
– Idle and power-down
• Eight interrupt sources
• Most instructions execute in 0.3 μs
• CMOS and TTL compatible
• Maximum speed: 40 MHz @ Vcc = 5V
• Packages available:
– 40-pin DIP
– 44-pin PLCC
– 44-pin PQFP
1.4 - Funktionsweise
Um zu verdeutlichen, welche Funktionen des Frontpanels (Ein-/ausschalten, Fernbedienungssignale weiterleiten) von welchen Mainboard-Schnittstellen abhängig sind und welche Rolle der Mikrocontroller dabei spielt, kann man einen einfachen Test durchführen, der zeigt, was alles nicht mehr funktioniert, wenn das Frontpanel mit bestimmten Schnittstellen nicht verbunden ist.
Hierfür durchtrennt man die einzelnen Leitungen des Frontpanel-Steckers schnittstellenweise und beobachtet die Auswirkungen auf die Funktionen des Frontpanels während des Betriebs (Selbstverständlich durchtrennt man immer nur höchstens eine Schnittstelle zur selben Zeit und stellt dessen Verbindungen wieder her, bevor man die nächste überprüft).
Relevant für diesen Test sind nur die Verbindungen der ATX-Power/-Reset-, der seriellen-, der PS/2-Maus- und der PS/2-Tastatur-Schnittstellen, die Versorgungsspannung/GND (Pins1,2,14) und die LEDs (Pins 12,13) können dafür logischerweise außer Acht gelassen werde.
Serielle Schnittstelle (UART):
Nach dem Durchtrennen der Leitungen zur seriellen Schnittstellen wird man feststellen, dass das Frontpanel scheinbar einwandfrei funktioniert, bis auf die Tatsache, dass die 2-Farben LEDs nach dem Booten nicht mehr von grün-blinkend nach grün-dauerleuchtend, und nach dem Herunterfahren (durch das Betriebssystem initiiert !!!), nicht mehr in rotes Blinken bzw. rotes Dauerleuchten wechseln.
Dieses Verhalten kann man auch bemerken, wenn man an Stelle des ursprünglich auf dem DOM vorinstallierten Betriebssystems, ein anderes (z.B. ein Linux Derivat wie Knoppix) startet.
Es lässt sich damit erklären, dass der Mikrocontroller über die serielle Schnittstelle Daten mit dem Betriebssystem austauscht, welches ihm in Form von Byte-Folgen mitteilt, in welchem Status sich das System befindet, z.B. "Betriebssystem fertig gebootet" wechsle von grün-blinken (Einschalt-/Bootphase) nach grün-dauerleuchten (Betrieb). Dies ist in dem auf dem DOM vorinstallierten Windows CE implementiert, jedoch verständlicherweise nicht Teil einer Standardkonfiguration eines x-beliebigen Betriebssystems.
Will man erfahren, welche Daten zwischen Betriebssystem und Mikrocontroller des Frontpanels ausgetauscht werden, bzw. welche Bytes an das Frontpanel gesendet werden müssen, um es z.B. dazu zu bringen in den Status grünes Dauerleuchten (System gebootet/Betrieb) zu wechseln, geht das am besten mit einem sogenannten "man-in-the-middle Angriff". Dazu klinkt man sich physikalisch, mit Hilfe eines anderen Rechners, zwischen die RxD- und TxD-Verbindungen des Frontpanel-Mikrocontrollers und der seriellen Schnittstelle des S100 Mainboards, und ist dadurch in der Lage, den Datenverkehr zu belauschen (sniffen) und zu manipulieren.
Für die Durchführung dieser Methode benötigt man ein Terminalprogramm und einen zweiten Rechner mit einer seriellen Schnittstelle, an der ein RS-232-TTL-Pegelwandler angeschlossen ist. Dieser Pegelwandler ist bei "normalen" PCs notwendig, da die Kommunikation über TTL-Pegel abläuft und nicht auf RS-232 Niveau. Man kann ihn entweder als günstigen Komplett-Bausatz kaufen (z.B. von Pollin.de ) oder man baut ihn sich aus Einzelteilen als MAX232 Schaltung selbst zusammen.
Als Software verwendet man ein Terminalprogramm - ein sehr übersichtliches, frei erhältliches und sowohl für Windows, als auch für Linux verfügbares Programm ist hterm.
Die korrekten Einstellungen, zum herstellen der Verbindung, lauten: 38400 Baud, 8 Datenbits, 1 Stopbit, keine Parität.
Um heraus zu finden, welche Bytes vom Frontpanel an das Mainboard gesendet werden, durchtrennt man die Leitung an Pin 3 des Frontpanel Steckers und verbindet die Seite, die zum Frontpanel führt, mit dem RxD-Eingang des Pegelwandlers und die andere Seite, die mit dem Stecker verbunden ist (zum Mainboard), mit dem TxD-Ausgang. (Die Verbindung an Pin4 muss weiterhin ganz normal bestehen!)
Nun schneidet man mit dem Terminalprogramm die ausgetauschten Bytes mit, während die S100 einige Boot-/Herunterfahren-Vorgänge, in das auf dem DOM vorinstallierte Betriebssystem, absolviert.
Möchte man danach erfahren, wie der Datenaustausch in die andere Richtung, vom Mainboard an das Frontpanel aussieht, muss man die zuvor durchtrennte Leitung an Pin 3 wieder verbinden und die Leitung an Pin 4 durchtrennen. Diesmal verbindet man die Seite, die zum Mainboard führt, mit dem RxD-Eingang des Pegelwandlers und die andere Seite, die mit dem Frontpanel verbunden ist, mit dem TxD Ausgang.
Wenn man die Byte-Folgen mit geschnitten hat, die vom Mainboard zum Frontpanel gesendet werden, hat man nun die Byte-Sequenzen um den Status des Frontpanels über die serielle Schnittstelle entsprechend zu setzen.
Um dies auszuprobieren, verwendet man den angeschlossenen zweiten Rechner, um die erhaltenen Byte-Folgen an das Frontpanel zu senden. Als Beispiel sendet man kurz nach dem Einschalten die Bytes für ein fertig gebootetes System (grünes Dauerleuchten) und stellt fest, dass das Frontpanel tatsächlich aufhört zu blinken und im grünen Dauerleuchten verharrt, bis man die Bytes für den Ausschalt-Befehl sendet (erst rot-blinken, dann rotes Dauerleuchten).
Diese Tests haben gezeigt, dass sich die Kommunikation mit der seriellen Schnittstelle auf folgende Byte-Folgen beschränkt (als Hex-, Dezimal- und Binär-Zahlen ausgedrückt):
- Vom Mainboard zum Frontpanel (nach dem Booten, aktiviert das grüne Dauerleuchten):
- Hex: A2 B2 A2 B2 A2 B2
Decimal: 162 178 162 178 162 178
Binary: 10100010 10110010 10100010 10110010 10100010 10110010 - - Vom Mainboard zum Frontpanel (zum Ausschalten, aktiviert das rote Blinken):
- Hex: A2 B1
Decimal: 162 177
Binary: 10100010 10110001 - - Vom Frontpanel zum Mainboard (Bestätigung nach dem betätigen einer der Ausschaltknöpfe):
- Hex: A2 B1
Decimal: 162 177
Binary: 10100010 10110001
PS/2 Maus- und Tastatur-Schnittstelle:
Durchtrennt man die Pins 8, 9 (PS/2-Maus), 10 oder 11 (PS/2-Tastatur), stößt man auf eine Fehlfunktion des Frontpanels, das bekannte "Blink-Phänomen", bei dem sich das Frontpanel in einer Endlosschleife aus Einschalt- und Reset-Vorgängen mit entsprechenden grün- und rot-blink-Phasen befindet.
Daraus lässt sich ableiten, dass der Mikrocontroller des Frontpanels, nach dem Einschalten, eine bestimmte Zeit lang auf ein Signal von der PS/2-Schnittstelle des Mainboards wartet, dass ihm bestätigt, dass das angeschlossene System auch wirklich dabei ist hoch zu fahren und er mit seinem Programm fortfahren kann. Falls er dieses Signal nicht erhält, führt er einen Reset durch, indem er den an ihm angeschlossenen Pin 5 (ATX-Reset plus-Pol) intern für einen Moment auf Masse (GND) zieht und dadurch auch sein Programm wieder von Anfang an durchläuft.
Wenn man betrachtet, was das Mainboard in der Zeit macht, kurz bevor das Frontpanel von grün-blinkend nach rot-blinkend wechselt und einen erneuten Reset ausführt, stellt man fest, dass das BIOS noch damit beschäftigt ist, die angeschlossene Hardware zu initialisieren.
Von anderen ATX-PC-Systemen weiß man, dass kurz nach dem Einschalten, signalisiert durch das aufleuchten der 3 Tastatur-LEDs, eine am PS/2-Port angeschlossene Tastatur initialisiert wird. Daher lässt sich annehmen, dass der Mikrocontroller des Frontpanels genau diesen Initialisierungsvorgang als Anhaltspunkt nimmt, um von der Einschaltphase in die Bootphase zu wechseln und keinen erneuten Reset durchführt.
So lassen sich nun auch mehrfache Resetvorgänge, oder gar ein anhaltendes "Blink-Phänomen", erklären, wenn die Reihenfolge oder Kombination der angeschlossenen USB-Geräte geändert wird. Dies veranlasst wahrscheinlich, dass das BIOS länger als normal braucht, um von der Initialisierung der USB-Geräte zur Initialisierung der PS/2-Geräte zu kommen, und dadurch die Einschaltphase des Mikrocontroller bereits verstrichen ist, bevor er den Initialisierungsvorgang registrieren kann.
Um die Frage zu beantworten, ob die PS/2 Schnittstelle nur zur Initialisierung des Mikrocontrollers oder auch noch für andere Funktionen zuständig ist (z.B. das senden der Tastatur-Scancodes), gibt es nur eine Möglichkeit, man muss ihn in einen "stabilen" Status versetzen bevor die Resetschleife in kraft tritt.
Am einfachsten geht das wahrscheinlich, indem man, z.B. erst nach dem Booten des Betriebssystems, die entsprechenden Leitungen, die es zu überprüfen gilt, durchtrennt (was allerdings nicht ohne Gefahren für die Schnittstelle ist!). Eine bessere Möglichkeit ist sicher der man-in-the-middle Angriff über die serielle Schnittstelle, mit Hilfe dessen man dem Mikrocontroller, kurz nach dem Einschalten, die Byte-Folge für den Wechsel in den Status zum grünen-Dauerleuchten (System gebootet) übermittelt.
Hat man schließlich die Auswirkungen des Durchtrennen von PS/2-Maus und -Tastatur-Schnittstelle getestet, erfährt man, dass der PS/2-Tastatur Anschluss nach dem Initialisierungsvorgang nicht mehr verwendet wird, und der Mikrocontroller, die von der Fernbedienung über die IR-Diode empfangenen Signale in Tastatur-Scancodes umwandelt und über die PS/2-Maus-Schnittstelle ausgibt. Außerdem wird man feststellen, dass es nun auch möglich ist, eine PS/2-Tastatur parallel zum angeschlossenen Frontpanel (samt Fernbedienungsfunktion) an J20 zu betreiben.
ATX-Power/Reset Verbindung:
Die zuvor erkannten Abläufen, verdeutlichen, dass der Mikrocontroller des Frontpanels die ATX-Power und -Reset Anschlüsse dazu verwendet, je nach Status, dass System ein-/aus zu schalten oder zu resetten, in dem er den relevanten Pin für eine bestimmte Zeit mit Masse (GND) verbindet.
Durchtrennt man dennoch Testweise den ATX-Power Anschluss (Pin 6), wird man zusätzlich feststellen, dass er dadurch ebenfalls in die Resetschleife gerät. Dies lässt sich nur so erklären, dass der Mikrocontroller in der Einschalt-Phase ebenfalls überprüft, ob an diesem Pin eine Spannung anliegt, und falls dies nicht der Fall ist, einen Reset auslöst.
1.5 - Programmablauf
Nach dem man erfahren hat, wie das Zusammenspiel der Hardware mit dem Mikrocontroller auf dem Frontpanel aussieht, gilt es noch den genauen Programmablauf des Mikrocontrollers zu erörtern.
Hierfür nicht ganz uninteressant, erfährt man aus dem T-Online Vision S100 "Handbuch", dass er 4 Status kennt, die durch die 2-Farben LEDs angezeigt werden:
|
Anzeige: |
Zweifarbiges T-Online Vision – Logo |
|
|
ROT (Standby) |
|
|
ROT blinkend (Herunterfahren) |
|
|
GRÜN (Betrieb) |
|
|
GRÜN blinkend (Start) |
Fasst man schließlich alles zusammen, lässt sich der Programmablauf des Mikrocontrollers in 5 Phasen einteilen und folgendermaßen beschreiben:
0. Standby (Ausgangszustand - Netzschalter eingeschaltet)
- warten auf den Einschalt-Befehl des Tasters auf der Frontpanel Platine
- warten auf den Einschalt-Befehl der Fernbedienung
- lasse 2-Farben LEDS rot-dauerleuchten
1. Einschalt-Phase (Einschalt-Befehl erhalten):
- lasse 2-Farben LEDs grün-blinken
- ziehe ATX-Power kurz auf Masse (GND)
- schalte Timer auf eine definierte Zeit
- warte auf den Empfang von Daten an der seriellen Schnittstelle
- warte auf Tastatur-Initialisierung des BIOS an der PS/2-Schnittstelle
- überprüfe Spannung an Pin 6
1a1. Bis timeout keine BIOS Tastatur-Initialisierung über PS/2 Schnittstelle registriert:
- lasse 2-Farben LEDs rot-blinken
- ziehe ATX-Reset Verbindung kurz auf Masse (GND)
- kehre zurück zu Phase 1
1a2. Bis timeout keine Daten zur Statusänderung über die serielle Schnittstelle erhalten:
- lasse 2-Farben LEDs rot-blinken
- ziehe ATX-Reset Verbindung kurz auf Masse (GND)
- kehre zurück zu Phase 1
1a3. Bis timeout keine Spannung an Pin 6 (ATX-Power):
- lasse 2-Farben LEDs rot-blinken
- ziehe ATX-Reset Verbindung kurz auf Masse (GND)
- kehre zurück zu Phase 1
1b. Bis timeout BIOS Tastatur-Initialisierung an PS/2 Schnittstelle registriert:
- stoppe Timer
- gehe über zu Phase 2
1c. Bis timeout Daten zur Statusänderung an der seriellen Schnittstelle erhalten:
- stoppe Timer
- wechsle in den befohlenen Status
2. Boot-Phase (System bootet):
- lasse 2-Farben LEDs grün-blinken
- warte auf den Ausschalt-Befehl des Tasters auf der Frontpanel Platine
- warte auf den Ausschalt-Befehl der Fernbedienung
- warte auf den Empfang von Daten zur Statusänderung an der seriellen Schnittstelle
- warte auf den Empfang von Daten an der Infrarot Schnittstelle und leite sie ggf. an die PS/2 Schnittstelle weiter
2a. Ausschalt-Befehl des Tasters auf der Frontpanel Platine erhalten:
- gehe über zu Phase 4
2b. Ausschalt-Befehl der Fernbedienung erhalten:
- gehe über zu Phase 4
2c. Daten zur Statusänderung an der seriellen Schnitstelle erhalten:
- wechsle in den befohlenen Status
3. Betrieb-Phase (System gebootet):
- lasse 2-Farben LEDs grün-dauerleuchten
- warte auf den Ausschalt-Befehl des Tasters auf der Frontpanel Platine
- warte auf den Ausschalt-Befehl der Fernbedienung
- warte auf den Empfang von Daten zur Statusänderung an der seriellen Schnittstelle
- warte auf den Empfang von Daten an der Infrarot Schnittstelle und leite sie ggf. an die PS/2 Schnittstelle weiter
3a. Ausschalt-Befehl des Tasters auf der Frontpanel Platine erhalten:
- gehe über zu Phase 4
3b. Ausschalt-Befehl der Fernbedienung erhalten:
- gehe über zu Phase 4
3c. Daten zur Statusänderung an der seriellen Schnitstelle erhalten:
- wechsle in den befohlenen Status
4. Ausschalt-Phase (Ausschalt Befehl erhalten):
- sende als Bestätigung Ausschalt-Bytes über die serielle Schnittstelle
- lasse 2-Farben LEDs rot-blinken
- ziehe ATX-Power Verbindung für ca. 8 Sekunden auf Masse (GND)
- kehre zurück nach Phase 0
2 - Frontpanel Status Control
2.1 - Beschreibung
Das Frontpanel Status Control-Modul ist eine AVR-Mikrocontroller-Schaltung, die an die serielle Schnittstelle (z.B. COM2 der T-Online Vision S100) angeschlossen wird, um den Status des Frontpanels zu beeinflussen.
Ihre primäre Aufgabe ist es, den Mikrocontroller des Frontpanels unmittelbar nach dem Einschalten (über den Ein-/Aus-Taster des Frontpanels oder der Fernbedienung) in den Status "System gebootet/Betrieb" zu versetzen - signalisiert durch das grüne Dauerleuchten der 2-Farben LEDs des Frontpanels.
Durch das setzen dieses Status wird unter anderem die Resetschleife (das "Blinkphänomen") wirksam unterdrückt, die z.B. auftaucht, sobald die Verbindungen des Frontpanels zum PS/2- oder ATX-Power-Anschluss unterbrochen sind.
Dies ermöglicht u. a. den Betrieb einer PS/2 Tastatur, parallel zur Frontpanel Fernbedienungsfunktion, an der T-Online Vision S100 oder den Anschluss des Frontpanels an ein anderes PC-Mainboard.
2.2 - Versionen
Die Frontpanel Status Control - Platine gibt es in zwei verschiedenen Versionen, eine "Light" und eine "Full" Version. Der Unterschied zwischen diesen beiden Versionen besteht im wesentlich durch eine zusätzliche Beschaltung der I/O-Pins:
Die Light-Version erfüllt lediglich die Aufgabe nach dem Einschalten die Bytes zur Initialisierung des Frontpanel-Controllers zu senden und danach den Daten-Verkehr vom Mainboard zum Frontpanel durch zu schleifen, was für die meisten Anwendungen ausreichend sein sollte. Sie wird lediglich an den RxD-Pin des Frontpanels, den TxD Pin der seriellen Schnittstelle des Mainboards, an Masse (GND) und +5VD des Netzteils angeschlossen.
Die Full-Version bietet darüber hinaus eine grüne und eine rote LED, die den aktuellen Status des AVR-Mikrocontrollers anzeigen, und zwei Taster, einen, der mit der Rest-Schaltung des AVR-Mikrocontrollers verbunden ist und einen, der durch seine doppelte Belegung (kurzes oder langes Drücken) das manuelle senden der Bytes für den aktuellen Status oder einen Statuswechsel (z.B. von "System gebootet" nach "Herunterfahren") ermöglicht. Des Weiteren ist die ISP-Schnittstelle des AVR-Mikrocontrollers als 6-polige Stiftleiste (belegt nach Atmel-Spezifikation) verfügbar.
Diese Version eignet sich durch ihre zusätzlichen Features vor allem für Entwicklungszwecke, z.B. um eigene Erweiterungen an die freien I/O-Pins des AVR-Mikrocontrollers anzuschließen und zu testen.
Für den Anschluss an ein "normales" PC-Mainboard steht jeweils ein weiteres Layout für die beiden Versionen zur Verfügung, dass bereits den Kondensator-Mod enthält, zusätzliche Stiftleisten für den Frontpanel Stecker, die PS/2-Schnittstellen, die Standby-Spannungen besitzt und onboard den AVR-Mikrocontroller mit der seriellen Schnittstelle des Frontpanels verbindet.
2.3 - Überblick der Features
Frontpanel Status Control - Light:
- Nach dem einschalten, zeit verzögert, zweimal Byte-Folge an das Frontpanel senden
- Interrupt gesteuertes weiterleiten von ankommenden Daten der seriellen Schnittstelle an das Frontpanel (z.B. die vom Ausschalt-Script gesendeten Bytes)
- Brown-Out detection für sauberes Wiedereinschalten
- Gesockelter Mikrocontroller für Updates
- 13 freie I/O-Pins für weitere Anwendungen
Frontpanel Status Control - Full:
- Nach dem einschalten, zeit verzögert, zweimal Byte-Folge an das Frontpanel senden
- Interrupt gesteuertes weiterleiten von ankommenden Daten der seriellen Schnittstelle an das Frontpanel (z.B. die vom Ausschalt-Script gesendeten Bytes)
- grüne und rote LEDs zur Anzeige des Modul-Status
- Taster mit doppelter Belegung (kurzes, langes Drücken) um Byte-Folgen manuell zu senden
- Taster softwaremäßig wirksam entprellt
- Taster für einen Hard-Reset des Mikrocontrollers
- Brown-Out detection für sauberes Wiedereinschalten
- 6-polige Stiftleiste der ISP-Schnittstelle für Updates
- 10 freie I/O-Pins für weitere Anwendungen
2.4 - Programmablauf
Frontpanel Status Control-Light:
Nachdem man über das Frontpanel einen der Einschalt-Taster (Platine oder Fernbedienung) bedient hat, weist der Frontpanel Mikrocontroller das ATX-Netzteil der S100 an, die +5VD Spannung, und somit ebenfalls das FrontpanelStatusControl-Light Modul, einzuschalten.
Die Bytes für den Status "System gebootet/Betrieb" werden zweimal, zeit verzögert, an das Frontpanel gesendet.
Anschließend werden die Interrupts freigeschaltet und somit u. a. die am RxD-Eingang des Moduls ankommenden Bytes (vom Mainboard) an den TxD-Ausgang des Moduls (zum Frontpanel) weitergeleitet.
Registriert der Mikrocontroller einen Brown-Out, indem seine Versorgungsspannung auf unter 2,7 Volt sinkt, führt er automatisch einen Reset aus und der Programmablauf beginnt von vorne.
Wird das System Heruntergefahren, wird auch die Spannungsversorgung an +5VD abgestellt (bzw. abgesenkt) und somit das Frontpanel Status Control Modul ausgeschaltet, bei einem erneuten Einschaltvorgang wird das Programm ebenfalls wieder von Anfang an durchlaufen.
Frontpanel Status Control-Full:
Nachdem man über das Frontpanel einen der Einschalt-Taster (Platine oder Fernbedienung) bedient hat, weist der Frontpanel Mikrocontroller das ATX-Netzteil der S100 an, die +5VD Spannung, und somit ebenfalls das FrontpanelStatusControl-Full Modul, einzuschalten.
Die grüne LED des Moduls blinkt sechs mal und geht in grünes Dauerleuchten über, während die Bytes für den Status "System gebootet/Betrieb" zweimal, zeit verzögert, an das Frontpanel gesendet werden. Anschließend werden die Interrupts freigeschaltet und somit u. a. die am RxD-Eingang des Moduls ankommenden Bytes (vom Mainboard) an den TxD-Ausgang des Moduls (zum Frontpanel) weitergeleitet.
Wird der Status-Taster des Moduls kurz gedrückt, werden die Bytes für den aktuellen Status an das Frontpanel gesendet und die jeweilige LED blinkt dreimal.
Drückt man den Taster etwas länger (ca. 1 Sekunde), wird ein Statuswechsel eingeleitet, die LED des aktuellen Status blinkt dreimal, die Byte-Folge für den nächsten Status werden an das Frontpanel gesendet, die LED des nächsten Status blinken dreimal und verharren dann im Dauerleuchten.
Betätigt man den Reset-Taster wird das ganze Modul neu gestartet und sein Programmablauf beginnt von vorne.
Registriert der Mikrocontroller einen Brown-Out, indem seine Versorgungsspannung auf unter 2,7 Volt sinkt, führt er automatisch einen Reset aus und der Programmablauf beginnt ebenfalls von vorne.
Wird das System Heruntergefahren, wird auch die Spannungsversorgung an +5VD abgestellt (bzw. abgesenkt) und somit das Frontpanel Status Control Modul ausgeschaltet, bei einem erneuten Einschaltvorgang wird das Programm auch wieder von Anfang an durchlaufen.
2.5 - Hardware
Mikrocontroller:
Zum Einsatz kommt ein ATTiny2313 (Datenblatt), da er der zur Zeit günstigste AVR-Mikrocontroller mit einer seriellen Schnittstelle (UART bzw. USART) ist (Theoretisch kann zwar auch die UART per Software nachgebildet werden (z.B. Link oder Atmel Application Note 305 ), der Mehraufwand steht dabei allerdings in keinem realistischen Verhältnis zum Nutzen, zumindest im Zusammenhang mit dem Frontpanel der S100).
Es sollten sämtliche AVRs der ATmega oder ATTiny-Reihe funktionieren, die eine UART (bzw. USART) Schnittstelle besitzen, mit kleinen Änderungen im Programm (Pin-Belegung, Stack-Initialisierung) und Schaltplan (bezogen auf die Pinbelegung).
Aus Gewohnheit ist der Mikrocontroller gesockelt (ein entsprechender Sockel kostet etwa 5 Cent und fällt in der Gesamtkostenrechnung somit kaum ins Gewicht). Der Mikrocontroller lässt sich natürlich auch direkt verlöten, sofern man ihn vorher Programmiert oder die ISP-Schnittstelle ansprechen kann (hierfür ist auch in der Light-Version eine entsprechende Reset-Schaltung vorhanden).
Fuse-Bits:
Bei den Fusebits sind abweichend vom Auslieferungszustand folgende Einstellungen vor zu nehmen:
- CKDIV8 deaktivieren
- Den verwendeten Oszillator Typ mit dem entsprechenden Frequenzbereich, hier:
Ext. crystal/osc. 3.0-8.0 MHz, 14 CK + 0ms [CKSEL=1100, SUT=10]
- Brown-out Erkennung für den Bereich ab 2,7V einschalten:
Brown-out detection level at VCC=2.7V [BODLEVEL=101]
Oszillator:
Um die Kosten möglichst gering zu halten wird ein 3,686000 MHz Quarz-Oszillator (crystal) verwendet.
Durch entsprechende Änderungen im Schaltplan, dem Programm und der Fusebit-Einstellungen, lassen sich natürlich auch andere Oszillator-Typen oder andere Frequenzen verwenden.
Wichtig bei der Verwendung eines anderen Oszillators ist in jedem Fall die Frequenz, diese muss mit der angestrebten UART-Übertragungsrate von 38400 Baud harmonieren (eine Anweisung für den Compiler ist bereits im Quellcode enthalten, die überprüft ob die eingestellte Oszillator-Frequenz mit der Baudrate zu vereinbaren ist).
Oszillator-Frequenzen die funktionieren sollten:
2,457600 MHz [Änderungen in der Software und den Fusebits nötig]
3,686000 MHz [keine Änderungen nötig]
(3,686400 MHz [keine Änderungen nötig])
(3,686411 MHz [keine Änderungen nötig])
4,915200 MHz [Änderungen in der Software nötig]
6,144000 MHz [Änderungen in der Software nötig]
7,372800 MHz [Änderungen in der Software nötig]
8,000000 MHz [Änderungen in der Software nötig]
9,216000 MHz [Änderungen in der Software und den Fusebits nötig]
9,830400 MHz [Änderungen in der Software und den Fusebits nötig]
11,059200 MHz [Änderungen in der Software und den Fusebits nötig]
12,288000 MHz [Änderungen in der Software und den Fusebits nötig]
14,000000 MHz [Änderungen in der Software und den Fusebits nötig]
14,745600 MHz [Änderungen in der Software und den Fusebits nötig]
16,000000 MHz [Änderungen in der Software und den Fusebits nötig]
18,000000 MHz [Änderungen in der Software und den Fusebits nötig]
18,432000 MHz [Änderungen in der Software und den Fusebits nötig]
Platine:
Am einfachsten und schnellsten ist es sicherlich eine Lochraster-Platine zu verwenden, falls man jedoch die Möglichkeit besitzt Platinen zu ätzen, ist der Schaltplan als Eagle-schematic verfügbar, so das man sich nach eigenen Wünschen ein entsprechendes Board-Layout erstellen kann (Eventuell sogar mit integrierter MAX232 Schaltung und/oder mit SMD-Bauteilen).
2.6 - Schaltpläne
Frontpanel Status Control-Light (S100):
| Name |
Wert |
Bezeichnung (Reichelt) | Artikel-Nr. (Reichelt) | Preis € |
| C1 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C2 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C3 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C4 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| R1 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| Q1 | 3,686400 MHz | Standardquarz, Grundton, 3,686411 MHz | 3,6864-HC49U-S | 0,24 |
| JP1 | 1x2 | 40pol. Stiftleiste, gerade, RM 2,54 | SL 1X40G 2,54 | 0,18 |
| JP2 | 2-polig | Anschlussklemme 2-polig, RM 5,08 | AKL 101-02 | 0,13 |
| IC1 | 20-polig | IC-Sockel, 20-polig, doppelter Federkontakt | GS 20 | 0,051 |
| IC1 | ATTiny 2313 | Atmel AVR-RISC-Controller | ATTINY 2313 DIP | 1,05 |
Gesamtkosten (Reichelt) ca.: 1,97 € (+ Leiterkarte u. Litze)
Frontpanel Status Control-Full (S100):
| Name |
Wert |
Bezeichnung (Reichelt) | Artikel-Nr.(Reichelt) | Preis € |
| C1 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C2 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C3 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C4 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| R1 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| R2 | 1k | Metallschichtwiderstand 1,00 K-Ohm | METALL 1,00K | 0,082 |
| R3 | 1k | Metallschichtwiderstand 1,00 K-Ohm | METALL 1,00K | 0,082 |
| R4 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| Q1 | 3,686400 MHz | Standardquarz, Grundton, 3,686411 MHz | 3,6864-HC49U-S | 0,24 |
| GREEN_LED | 5mm, grün | LED, 5mm, Low Cost, grün | LED 5MM GN | 0,051 |
| RED_LED | 5mm, red | LED, 5mm, Low Cost, rot | LED 5MM RT | 0,051 |
| S1 | Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal | TASTER 9302 | 0,12 | |
| S2 | Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal | TASTER 9302 | 0,12 | |
| JP1 | 1x2 | 40pol. Stiftleiste, gerade, RM 2,54 | SL 1X40G 2,54 | 0,18 |
| JP2 | 2-polig | Anschlussklemme 2-polig, RM 5,08 | AKL 101-02 | 0,13 |
| ISP | 2x3 | 2x10pol.-Stiftleiste, gerade, RM 2,54 | SL 2X10G 2,54 | 0,13 |
| IC1 | 20-polig | IC-Sockel, 20-polig, doppelter Federkontakt | GS 20 | 0,051 |
| IC1 | ATTiny 2313 | Atmel AVR-RISC-Controller | ATTINY 2313 DIP | 1,05 |
Gesamtkosten (Reichelt) ca.: 2,70 € (+ Leiterkarte u. Litze)
Frontpanel Status Control-Light (PC):
| Name |
Wert |
Bezeichnung (Reichelt) | Artikel-Nr. (Reichelt) | Preis € |
| C1 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C2 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C3 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C4 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C5 | 47uF | Elektrolytkondensator, 105°C, RM 2,0mm | RAD 105 47/35 | 0,041 |
| R1 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| Q1 | 3,686400 MHz | Standardquarz, Grundton, 3,686411 MHz | 3,6864-HC49U-S | 0,24 |
| JP1 | 1x2 | 40pol. Stiftleiste, gerade, RM 2,54 | SL 1X40G 2,54 | 0,18 |
| JP2 | 1x2 | ------ | ------ | ------ |
| JP3 | 2x5 | 2x10pol.-Stiftleiste, gerade, RM 2,54 | SL 2X10G 2,54 | 0,13 |
| JP4 | 2-polig | Anschlussklemme 2-polig, RM 5,08 | AKL 101-02 | 0,13 |
| JP5 | 1x4 | ------ | ------ | ------ |
| JP6 | 1x4 | ------ | ------ | ------ |
| JP7 | 1x14 | ------ | ------ | ------ |
| IC1 | 20-polig | IC-Sockel, 20-polig, doppelter Federkontakt | GS 20 | 0,051 |
| IC1 | Attiny 2313 | Atmel AVR-RISC-Controller | ATTINY 2313 DIP | 1,05 |
Gesamtkosten (Reichelt) ca.: 2,14 € (+ Leiterkarte u. Litze)
Frontpanel Status Control-Full (PC):
| Name |
Wert |
Bezeichnung (Reichelt) | Artikel-Nr. (Reichelt) | Preis € |
| C1 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C2 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C3 | 22 pF | Keramik-Kondensator 22P | KERKO 22P | 0,040 |
| C4 | 100 nF | Keramik-Kondensator 100N | KERKO 100N | 0,072 |
| C5 | 47uF | Elektrolytkondensator, 105°C, RM 2,0mm | RAD 105 47/35 | 0,041 |
| R1 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| R2 | 1k | Metallschichtwiderstand 1,00 K-Ohm | METALL 1,00K | 0,082 |
| R3 | 1k | Metallschichtwiderstand 1,00 K-Ohm | METALL 1,00K | 0,082 |
| R4 | 10k | Metalloxidschicht-Widerstand 2W, 5% 10 K-Ohm | 2W METALL 10K | 0,092 |
| Q1 | 3,686400 MHz | Standardquarz, Grundton, 3,686411 MHz | 3,6864-HC49U-S | 0,24 |
| GREEN_LED | 5mm, grün | LED, 5mm, Low Cost, grün | LED 5MM GN | 0,051 |
| RED_LED | 5mm, rot | LED, 5mm, Low Cost, rot | LED 5MM RT | 0,051 |
| S1 | Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal | TASTER 9302 | 0,12 | |
| S2 | Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal | TASTER 9302 | 0,12 | |
| JP1 | 1x2 | 40pol. Stiftleiste, gerade, RM 2,54 | SL 1X40G 2,54 | 0,18 |
| JP2 | 1x2 | ------ | ------ | ------ |
| JP3 | 2x5 | 2x10pol.-Stiftleiste, gerade, RM 2,54 | SL 2X10G 2,54 | 0,13 |
| JP4 | 2-polig | Anschlussklemme 2-polig, RM 5,08 | AKL 101-02 | 0,13 |
| JP5 | 1x4 | ------ | ------ | ------ |
| JP6 | 1x4 | ------ | ------ | ------ |
| JP7 | 1x14 | ------ | ------ | ------ |
| ISP | 2x3 | ------ | ------ | --- |
| IC1 | 20-polig | IC-Sockel, 20-polig, doppelter Federkontakt | GS 20 | 0,051 |
| IC1 | Attiny 2313 | Atmel AVR-RISC-Controller | ATTINY 2313 DIP | 1,05 |
Gesamtkosten (Reichelt) ca.: 2,74 € (+ Leiterkarte u. Litze)
2.7 - Anschließen
Frontpanel Status Control (S100)
JP1 - Versorgungsspannung (+5VD):
Für die Versorgungsspannung des Moduls muss eine Verbindung zum +5VD Stromkreis (nicht +5VS - Standby-Spannung) und zu Masse (GND) des Netzteils hergestellt werden, dafür gibt es mehrere Möglichkeiten, z.B. kann man sich die Spannung mit Hilfe von Stromdieben am ATX-Stecker abgreifen oder man lötet ein Kabel direkt ans Netzteil.
(In jedem Fall muss man absolute Vorsicht walten lassen, eine Manipulation des Netzteils kann u.U. strafbar sein!)
JP2 - serielle Schnittstelle:
Um das Modul mit der seriellen Schnittstelle zu verbinden, durchtrennt man die Leitung von Pin 4 des Frontpanel-Steckers und verbindet die Seite, die zum Frontpanel führt, mit der im Schaltplan als TxD bezeichneten Anschlussklemme, und die Seite die zum Stecker führt, mit der als RxD bezeichneten Anschlussklemme.
Für den Anschluss an die serielle Schnittstelle sind Anschlussklemmen vorgesehen, möchte man diese einsparen, kann man die entsprechenden Verbindungen natürlich auch direkt anlöten.
ISP - In System Programmer:
Möchte man den Mikrocontroller des Moduls in der Schaltung programmieren, sollte man das Modul von der Versorgungsspannung trennen und sicherheitshalber den Netzstecker gezogen lassen. Die Pin-Belegung entspricht der offiziellen Atmel Spezifikation und ist u.a. mit dem STK500 kompatibel.
PS/2 Tastatur parallel zum Frontpanel betreiben:
Im Falle, dass man eine PS/2-Tastatur (z.B. mit einem Adapter für den J20) an der S100 parallel zur Frontpanel Fernbedienungsfunktion benutzen möchte, müssen noch die Leitungen von Pins 10 und 11 des Frontpanel-Steckers getrennt werden, am besten macht man dies mit einem Seitenschneider oder einer Schere und isoliert die Enden anschließend mit Schrumpfschlauch oder Isolierband. (Ich möchte nochmal darauf hinweisen, dass die Vermutung im Raume steht, dass Infrarot Tastaturen mit Trackingpoint (z.B. vom Digitainer o.ä.) unter Umständen nicht mehr vollständig nutzbar sind, sobald dem Frontpanel nur noch höchstens ein PS/2-Port zur Verfügung steht, da diese vermutlich ihre Signale über beide PS/2 Ports senden.)
Bild eines Adapters für den J20 (HowTo: PS/2-Adapter für den J20):
Frontpanel Status Control (PC)
JP1 - Versorgungsspannung (+5VD):
Für die Versorgungsspannung des Moduls muss eine Verbindung zum +5VD Stromkreis (nicht +5VS - Standby-Spannung !!!) und zu Masse (GND) des Netzteils hergestellt werden, dafür gibt es mehrere Möglichkeiten, z.B. kann man sich die Spannung mit Hilfe von Stromdieben am ATX-Stecker abgreifen oder man lötet ein Kabel direkt ans Netzteil.
(In jedem Fall muss man absolute Vorsicht walten lassen, eine Manipulation des Netzteils kann u.U. strafbar sein!)
JP2 - Standby-Spannung (+5VS):
Für die Standby-Spannung des Frontpanels, muss eine Verbindung zum +5VS (nicht +5VD !!!) Stromkreis und zu Masse (GND) des Netzteils hergestellt werden, dafür gibt es mehrere Möglichkeiten, z.B. kann man sich die Spannung mit Hilfe von Stromdieben am ATX-Stecker abgreifen oder man lötet ein Kabel direkt ans Netzteil.
(In jedem Fall muss man absolute Vorsicht walten lassen, eine Manipulation des Netzteils kann u.U. strafbar sein!)
JP3 - Mainboard:
Für den Anschluss an ein PC-Mainboard ist eine 2x5-polige Stiftleiste an JP3 vorgesehen. Je nach Pin-Belegung des Ziel-Mainboards, sollte man die Belegung der eigenen Schaltung verändern, im Schaltplan ist die Belegung zum Anschluss an ein Intel Essentials Series D945GCLF2 (HowTo: Intel Atom @ S100 ) angepasst, so dass man das Modul mit einer 1:1 Pfostenbuchsen-Verbindung benutzen kann:
JP4 - serielle Schnittstelle:
Das Modul ist in der Version zum Anschluss an ein anderes, als das S100 Mainboard, automatisch mit dem Frontpanel verbunden und kann auch ohne Verbindung zum Mainboard genutzt werden. Möchte man trotzdem Daten an das Frontpanel senden, zum Beispiel, um beim Herunterfahren ein Skript zu benutzen, dass das Frontpanel in den entsprechenden Zustand versetzt falls man nicht den Ausschaltknopf der Fernbedienung oder des Frontpanels betätigt hat, muss man den JP4 über einen RS-232/TTL-Pegelwandler mit der seriellen-Schnittstelle des Mainboards verbinden.(TxD des JP4 mit RxD (TTL-Eingang) des Pegelwandlers und RxD des JP4 mit TxD (TTL Ausgang) des Pegelwandlers).
JP5 - PS/2-Tastatur:
Dieser Anschluss muss eigentlich nicht mit einem der PS/2 Anschlüsse des Mainboards verbunden werden, es besteht allerdings die Vermutung, dass Infrarot Tastaturen mit Trackingpoint Funktion (z.B. die des Digitainers o. ä.) diesen Anschluss ebenfalls benötigen, in diesem Fall verbindet man ihn auf die gleiche Weise wie JP6 mit einem der PS/2-Ports des Mainboard.
JP6 - PS/2-Maus:
Um die Fernbedienungsfunktion des Frontpanels nutzen zu können, muss dieser Anschluss mit der PS/2-Schnittstelle des Mainboards verbunden werden, wobei es unerheblich ist, ob er mit dem PS/2-Maus- oder -Tastatur-Port des Mainboards verbunden ist.
Als Beispiel ein Kabel aus einer alten Tastatur, um das Frontpanel an einem der externen PS/2 Anschlüsse des Mainboards anzuschliessen:
(Da die meisten PC-Mainboards einen internen Pinheader für die PS/2 Anschlüsse besitzen, ist es sicherlich ratsamer, diesen unter Beachtung der richtigen Polung zu verwenden.)
JP7 - Frontpanel:
Der Frontpanelstecker kann einfach auf die 14-polige Stiftleiste gesteckt werden, eventuell ist ein wenig Kraftaufwand nötig, grundsätzlich sollte er allerdings passen. Auch hierbei ist auf die richtige Polung zu achten, Pin 1 ist am Frontpanel-Stecker durch die blaue Leitung markiert.
ISP - In System Programmer:
Möchte man den Mikrocontroller des Moduls in der Schaltung programmieren, sollte man das Modul von der Versorgungsspannung trennen und sicherheitshalber den Netzstecker gezogen lassen. Die Pin-Belegung entspricht der offiziellen Atmel Spezifikation und ist u.a. mit dem STK500 kompatibel.
2.8 - Software
Die Firmware kann als Intel .hex-File und als Quelltext auf dieser Homepage http://www.loetaffe.de/ heruntergeladen werden.
Firmware:
Die Firmware (als Intel .hex-File) ist für die in diesem Artikel beschriebene Umgebung kompiliert worden, bei abweichender Hardware (z.B. bei der Verwendung eines Oszillators mit einer anderen Frequenz als 3,686xxxMHz oder einer veränderten Pin-Belegung) muss der Quelltext entsprechend geändert und neu übersetzt werden.
Quelltext:
Die Firmware wurde in Assembler unter AVR-Studio 4 geschrieben. Der Quelltext ist ausreichend kommentiert, so dass der Programmablauf mit rudimentären Assembler-Kenntnissen gut nachvollziehbar sein sollte. Die Quelltext-Kommentare sind in englischer Sprache gehalten und leicht verständlich.
Im ersten Programmabschnitt werden die Variablen und die Umgebung definiert, dort können ebenfalls alle für den Benutzer relevanten Einstellungen vorgenommen werden, z.B. die Pin-Belegung der angeschlossenen LEDs und des Tasters oder die Verwendung eines Oszillators mit einer anderen Frequenz als 3,686xxxMHz - für letzteres gibt ist sogar eine Anweisung an den Compiler im Quelltext, die ihn auffordert, zu überprüfen, ob die eingestellte Oszillatorfrequenz mit der angestrebten Baudrate (in diesem Fall 38400) harmoniert.
(Falls ein anderer AVR-Mikrocontroller verwendet werden soll, z.B. ein ATmega8, muss zusätzlich noch mindestens die entsprechende Definitionsdatei übergeben und die Stack-Pointer Initialisierung angepasst werden!!!)
Für Erweiterungen ist bereits die Funktion des 16-Bit Timers kommentiert im Quelltext enthalten, um diesen zu aktivieren reicht ein auskommentieren der Anweisungen, denen ein Doppeltes Semikolon vorangestellt ist.
In der Main-Schleife befindet sich ein Bereich, der für die Ausführung von Programmcode ohne Störung von Interrupt-events vorgesehen ist, dieser ist ebenfalls mit einem vorangestellten doppelten Semikolon kommentiert und brauch nicht für die Verwendung des 16-Bit Timers auskommentiert werden.
(Fall es bei der Anzeige der .asm-Dateien zu verschobenen Zeichen kommt, hilft die Änderung der Tabulator-Breite auf 4 Zeichen, in den Umgebungseinstellungen des verwendeten Betrachters.)
2.9 - Erweiterungen
Dadurch, dass an dem AVR-Mikrocontroller noch mindestens 10 I/O-Pins ungenutzt sind, ist noch ausreichend Spielraum für jede Menge Erweiterungsmöglichkeiten vorhanden, z.B. die Ansteuerung eines LCD-Displays oder eines Funkmoduls (z.B. ZigBee o. ä.).
3 - Weitere Lösungsansätze
Man wird sich vielleicht die Frage stellen, warum man einen zusätzlichen Mikrocontroller benutzen soll, wenn doch bereits einer auf dem Frontpanel verbaut ist. Die Antwort ist recht simpel und banal zu gleich, zum einen sind die Anschaffungskosten eines geeigneten Programmiergeräts, das diesen Mikrocontroller unterstützt, für den Privatgebrauch viel zu hoch, des Weiteren wird die darauf enthaltene Software einen Ausleseschutz verwenden, den zu umgehen höchst illegal wäre.
Eine andere Möglichkeit ist den Mikrocontroller des Frontpanels, durch einen Pin-kompatiblen, zu ersetzen, um somit eigene Software zu nutzen und das Zusammenspiel der Frontpanel-Komponenten individuell zu regeln.
Schließlich ist noch die Emulation des Tastatur-Initialisierungssignals zu nennen, dies könnte wahrscheinlich auf einem der kleinsten AVRs realisiert werden und ebenfalls die Nutzung einer PS/2 Tastatur parallel zur Fernbedienung und den Anschluss des Frontpanels an ein anderes Mainboard ermöglichen.
4 - Anmerkung
Dieser Artikel wurde mit größter Sorgfalt erstellt, falls sich dennoch Fehler eingeschlichen haben sollten oder inhaltliche Ungereimtheiten bestehen, bitte ich um Benachrichtigung an die angegebene Kontaktadresse.
Bei Fragen zur Verantwortlichkeit und Weiterverwendung der Inhalte, bitte ich um vorherige Kenntnisnahme des Impressums meiner Homepage.
5 - GNU Free Documentation License
Dieses Dokument steht unter der GNU Lizenz für freie Dokumentation, der entsprechende Lizenztext ist im Impressum dieser Homepage oder unter http://www.gnu.org/copyleft/fdl.html abrufbar.
6 - Downloads
6.1 - Artikel:
PDF-Datei: Link
6.2 - Schaltpläne + Bauteillisten:
Für die EAGLE Dateien benötigt man noch eine Bibliothek von www.embedit.de, die den verwendeten Controller enthält (ursprünglich war es ein AT90S2313 der umbenannt wurde)
EAGLE-Bibliothek für viele AVR-Mikrocontroller: Link
Frontpanel Status Control-Light (S100):
Schaltplan als Eagle-Schema: Link
Schaltplan als JPEG: Link
Bauteilliste als Textdatei (utf8): Link
Frontpanel Status Control-Full (S100):
Schaltplan als Eagle-Schema: Link
Schaltplan als JPEG: Link
Bauteilliste als Textdatei (utf8): Link
Frontpanel Status Control-Light (PC):
Schaltplan als Eagle-Schema: Link
Schaltplan als JPEG: Link
Bauteilliste als Textdatei (utf8): Link
Frontpanel Status Control-Full (PC):
Schaltplan als Eagle-Schema: Link
Schaltplan als JPEG: Link
Bauteilliste als Textdatei (utf8): Link
6.3 - Software:
Frontpanel Status Control-Light (V1-081001):
Intel-Hex File: Link
assembler Quelltext: Link
Frontpanel Status Control-Full (V1-081001):
Intel-Hex File: Link
assembler Quelltext: Link
6.4 - Alles Komplett in einem Archiv:
(Artikel, Schaltpläne, Bauteillisten, Hex-Files, Quelltexte):
Zip-Archiv (2,7 MB): Link
Bzip2-Archiv (2,7 MB): Link
7z/LZMA-Archiv (2,6 MB): Link















