Mittwoch, 27. November 2013

Low Cost 17 Channel Logic Analyzer

Um die Pollin Tastatur näher zu untersuchen, werde ich früher oder später einen Logic- und Protocol- Analyser brauchen. Leider habe ich keinen und auch nicht das Geld um mir einen zu kaufen. Eine fast kostenlose Lösung ist die Verwendung eines alten PCs mit LPT-Drucker-Port. Hierzu habe ich ein sehr interessantes Projekt gefunden, was fast keine Wünsche mehr offen lässt. Die Signale werden unmittelbar an den EPP/ECP Port angeschlossen.

  • Digital Oscilloscope / Logic Analyzer with up to 17 input lines
  • Uses the parallel (printer) port for input.
  • While Logic Analyzers normally are very expensive, this one is for zero cost
  • Written in speed optimized C++ to get the maximum possible sample rates
  • The program is a stand alone single EXE file which neither needs any additional DLLs nor any framework. It runs out of the box
  • Runs on all Windows platforms (95, 98, ME, NT, 2000, XP, 2003, Vista, 2008, Windows 7, 2008 R2)
  • Runs on 32 Bit Windows and 64 Bit Windows
  • When first run, installs a driver to access hardware IO ports on all NT platforms
  • Plays a sound via PC speaker to prove that the driver works correctly
  • Shows the actual state of the input lines life in the LED's of the GUI
  • Captures up to 500.000 samples / second (depending on your hardware and OS)
  • Captures to memory (rather than disk) for maximum speed
  • Capturing runs always with the maximum frequency that the hardware allows
  • Memory saving capture technology stores only the changes of the input lines rather than storing all lines with each sample that is taken
  • The capture process is independent of data analyzing so you can try various settings to display the captured data in the best way
  • The analyzer generates coloured oscilloscope diagrams with a raster grid
  • The output is written into an HTML file and one or multiple GIF files
  • So the analyzer results can easily be shared with other people who must not install any program to view a proprietary binary format
  • You can write an individual heading into each analyzer output to distinguish them later in a multitude of files
  • When analyzing data, you can choose to delete old analyzer output or keep the old files
  • The time axis shows absolute or relative time with microsecond precision (Performance Counter)
  • Automatic detection of inactive input lines shows only the channels that have activity
  • Automatic detection of idle time cuts out long phases of inactivity
  • Automatic detection of input frequency chooses the adequate raster unit like on a real oscilloscope (10 µs, 20 µs, 25 µs, 50 µs, 100 µs, etc..)
  • Automatic detection of context switches of the operating system
  • Decoded serial data (Start Bit, Parity, Acknowledge, Stop Bit) and the Byte that they represent may be printed into the diagrams and/or printed to HTML where it can be copied to the clipboard.
  • Decoded serial data (Start Bit, Parity, Acknowledge, Stop Bit) and the Byte that they represent is written into the diagram
  • Very cleanly written source code with a proper error handling and plenty of comments 
Der Protokoll Analyser :
  • I2C Bus, SMBus, ModBus
  • PS/2 Bus
  • SPI Bus
  • Asynchronous (RS232, RS422, RS485)
  • Infrared Remote Controls
  • Smartcards

Dienstag, 26. November 2013

Baugleiche Net Box von ZUUM

Die Net Box die Pollin zur Zeit für einen knappen Euro verramscht ist baugleich mit der Net Box von ZUUM. Hier sieht man auch die deutsche Tastenbelegung.
Hardware:
  • Internet-Zugangs-Box zum Anschluß an das TV Gerät über Euro-Scart /AV oder Composite Steckverbinder, mit Infrarot Tastatur.
Internet-Terminal-Einheit
  • Schneller STPC eingebetteter PC Mikrocontroller @ 66MHz
  • Bild im Bild, High End Video Encoder
  • DRAM Arbeitsspeicher 4MB oder 8MB
  • Flash nichtflüchtiger Speicher 8MB
  • ESSAudio Drive Audio Prozessor
  • I/O Signal für SCART Kontrolle
  • V.90 Modem 56.000K/s
  • Paralleler Druckeranschluss mit Micro Ribbon Steckverbinder.
  • ISO 7816 Smart Card Anschluß
  • 1.2Kbps IR schnurlose Tastatur.
  • TV Norm: PAL B/G
  • Mikrofon
Anschlüsse
  • 2 x Euro-Scart AV (Kabel ist im Lieferumfang enthalten). TV und AUX
  • RJ11 analoger Modemanschluß, 1,8 m langes Kabel ist im Lieferumfang enthalten).
  • Steckernetzteil DC3,3 V
  • Smart Card Slot seitlich
  • IR Sensor an der Frontseite
Software:
  • Browser und Betriebssystem
  • Linux Betriebssystem 2.2
  • Deutsch; HTML 3.2 kompatibel
  • Full Frames Unterstützung
  • Favoriten- / Lesezeichenverwaltung
  • Sicherheit: Secure Socket Layer (SSL 3.0) und öffentlicher Schlüssel
  • Client und Server Seite Authorisierungsmöglichkeit
    X.509 Zertifikate
  • JavaScript 1.2;
  • Treiber für Canon Drucker
  • Inline Bilder (GIF, JPEG, XBM und bewegte GIF)
    Audio Player (WAV, AU)
  • Chat Program
E-mail Client und Webmail:
  • Text-Eingabe, Sprachaufnahme zum direkten Versand der Sprachmeldung.
  • Bild Grabber des TV/AUX Bildes.
  • Standard Internet Protokolle (POP3, IMAP4 und SMTP)
  • Offline Editieren und Lesen
  • Multimedia Anhänge:
    Bis zu 4 verschiedene email Anschriften können mit Webmail verwaltet werden.
  • Suchfunktion für Internet Adressen.
  • Ausgabe auf Cannon kompatible Tintenstrahl-Drucker
  • Verzeichnisse
Zusatzfunktionen:
  • Anrufbeantworter
  • TV Programmzeitschrift mit Zusatzinformationen in Bild und Text.
  • SMS Web Service
Netzwerkanschlüsse:
  • ISP voreingestellt;
  • TCP/IP (Protokollpaket zur Datenübertragung im Internet.) PPP Einwahl
  • PAP und CHAP Benutzerindentifikations-Protokolle. HTTP Proxy Server Support. Änderung der Dialupeinstellungen per Serverupdate (Flash);
  • Fernupdate der Software

Montag, 25. November 2013

Net Box Tastatur

Ohne das ich es wusste hatte ich schon vor einiger Zeit eine NETBOX Tastatur bei Pollin gekauft, weil ich mir eine Tastatur für einen ZX81 selber zusammen basteln wollte. Ich hatte die Hoffnung, dass die Tasten dieser Tastatur Drucktaster sind, die man einzeln auslöten kann. Leider ist dies jedoch nicht der Fall.
Die Tastatur SWK-8650 hat zwar mechanische Tasten mit einem angenehmen Druckpunkt. Die Kontakte sind jedoch auf einer Gummi-Noppen-Matte die einen Kontakt auf einem Flexboard schließen.

Das Flexboard wird an einer einseitigen Hart-Papier-Platine kontaktiert auf dem sich der Keyboard-Controller, ein Quarz ein paar Kondensatoren, Widerstände, 2 Transistoren und eine IR-Sende-Diode befinden. Die Tastatur wird über zwei AA-Zellen mit Strom versorgt. Die Batterien waren in der Tastatur die ich von Pollin bekommen hatte noch eingelegt und durch das hohe alter schon ausgelaufen.

Bei dem Keyboard-Controller handelt es sich um einen TEMIC MARC4 TFK041-M44C510D 4Bit Microcontroller in einem SSO44 Gehäuse der mit 4.9152 MHz getaktet wird. Neben 256 x 4Bit RAM, 4KB ROM, 1KB Test-ROM, verfügt dieser Controller über 34 I/O Pins, 10 externe und 4 interne Interrupt-Quellen, 2 8Bit Timer/Counter und einen Watchdog. Er kann mit einer Versorgungsspannung zwischen 1.8V - 6.2V betrieben werden und besitzt einen Sleep-Modus in dem er nur 1uA Strom verbraucht.
Sehr interessant ist, dass er in einer speziellen High-Level Programmiersprache programmiert wird: qFORTH. Hierfür gibt es einen qFORTH Compiler als PC Entwicklungsumgebung. Da der Controller leider kein Flash als ROM besitzt kann man ihn nicht umprogrammieren.

[UPDATE 01.12.2013] Nach dem Durchmessen des Flexboards ergibt sich die folgende Tastatur-Matrix:

Net Box von Pollin

Schon seit längerer Zeit bietet der Elektronik-Verwerter Pollin ein Net-Box-Gehäuse mit "innenleben" in seinem Versandhandel an. Bei diesen Geräte handelt es sich um Net-Boxen der Firma NetGem die zum Betrieb an einen Fernseher vorgesehen waren. Die Netbox wird über ein Scart-Kabel mit dem Fernseher verbunden. Über eine Tastatur oder Fernbedienung können nun eMails und Internet-Seiten aufgerufen werden. Die Verbindung zum Internet wird durch ein Analog oder ISDN Modem hergestellt.

In der Net-Box arbeitet ein Embedded PC auf Basis eines 486er mit 66 MHz. 8 MB RAM und 8 MB Flash-Disk genügen einer speziell an diese Platform angepassten Linux-Version, um eine einfaches, graphisches User-Interface mit Webbrowser abzubilden.
Pollin bietet nicht ohne Grund nur das Gehäuse zum Kauf an, und empfiehlt die Elektronik nur für Bastler. Es wird keine Funktion der Elektronik garantiert. Für einen Preis von 1,95 Euro (bzw. 1,45 ab 2 Stück) kann man hier nicht viel falsch machen.

Die Infra-Rot Tastatur gibt es für 0,75 Euro. Da ich sowieso ein paar PC Bauteile bestellen wollte, habe ich mir ein gleich ein paar Geräte mitbestellt.

Hier eine kurze Aufstellung der verbauten Komponenten:
  • STPCC0166BTC3 - STMicrosystems STPC Prozessor (wird vom Embedded-Linux als Cyrix486DX mit 66 MHz erkannt). Dies ist ein System-On-Chip mit Floating Point Unit, DRAM-Controller, Schnittstellen, RTC, Watchdog, Power-Managment usw.
  • 4 x GM71V18163CT6 - 8 MB RAM
  • MSystems MD2810 DiskOnChip (DOC) mit 8 MB Flash-Speicher
  • ESS1869 Sound-Chip
  • ORCA OR2T04A-4 T144 Field-Programmable-Gate-Array (FPGA)
  • Lucent DPV90DX - V90 Analog Modem
  • Lucent 1034C - Modem Support Chip
  • 2 x Samsung K6E0808V1E-TC15 - 32K x 8 Bit CMOS Static RAM (für Modem)
  • Philips 8002C-JS262 - Programmable High Frequency Oszillator (1 - 125 MHz)
  • Micronas VPX3226E-A1 - Video Pixel Decoder for WebTV
  • MIL6427CS - 75W Quad Video Cable Drivers and Filters
  • MAX662 - DC-DC Converter for 12V Flash-Memory Programming Voltage
  • 74HC4053D - Triple 2-Channel Analog Multiplexer/Demultiplexer
  • LM358M - Low Power Dual Operational Amplifier
  • 1674EUA- DC-DC StepUp Converter
  • 2 Scart Buchsen
  • 3 LEDs (rot, grün, gelb)
  • 4 x Quarz (20.250, 14J31, 14.280, 29.4912)
  • Mini-LPT-Printer-Port
  • AMP 16 Pol Smart-Card Reader
  • TK19-TSOP1136 Infra-Rot Interface (für IR-Tastatur und IR-Fernbedienung)
  • Microphone
  • Klinkenbuchse für ein Netzteil das für 3,3 Volt mit 3 Ampere ausgelegt ist (= 10 Watt)
  • Schwarzes Kunststoff-Gehäuse (235mm x 160mm x 37 mm)
Sollte man in der Lage sein, selbst Programme auf diese Hardware zu entwickeln, hat man einen unvorstellbar günstigen Mini-PC auf Linux-Basis. Mit nur 10 Watt lassen sich damit sehr interessante Projekte in Angriff nehmen, für die man sonst einen Arduino oder Rasberry-Pi verwenden würde. Ob dies überhaupt möglich ist, wird sich in den nächsten Tagen herausstellen. Eine solches System für nur 2,30 Euro (NetBox 1,45 Euro + Keyboard 0,75 Euro) wird man so schnell nirgend wo anders finden.

Ich bin natürlich nicht der erste der auf die Idee gekommen ist, mehr aus der alten Net-Box zu machen. Im Internet findet man eine ganze Reihe interessanter Diskussionsbeträge von anderen Bastlern die schon ihre Erfahrung mit diesem Gerät gesammelt haben:

Freitag, 26. Juni 2009

PIC Microcontroller Teil 2

PIC vs AVR

Die Konkurrenz schläft nicht. Die Firma Atmel hat mit seiner AVR Microcontroller Serie eine Alternative zu den PIC Microcontrollern geschaffen, die in vielen Anwendungsbereichen besser geeignet sind. AVR Controller sind bei ihrem Design direkt auf die Bedürfnisse von C-Compilern optimiert worden. Der Befehlsatz aller AVR Controller ist bis auf wenige Ausnahmen für die ganze AVR-Famile gleich. Bei PIC-Controllern muss man für Low-End, Mid-Range und High-End Controller jeweils Anpassungen vornehmen bzw. sogar die Handhabung komplett ändern. Die AVR Entwicklungstools sind besser und billiger als die die MicroChip für den PIC zu Verfügung stellt.

Als Anfänger, der sich in den Themenbereich Microcontroller einarbeiten will, steht man hier oft vor dem Scheideweg: Soll ich PIC oder AVR nehmen? Meine Antwort ist AVR, weil man hier mit weniger Aufwand zu ersten Erfolgserlebnissen kommt. Wenn man hingegen an einen bestimmten Controller-Hersteller gebunden ist, geht den Weg den man gehen muss.

PIC Entwicklungs-Werkzeuge

Ohne Entwicklungswerkzeuge kommt man auch bei so einem einfach gestrickten Microcontroller wie den PIC nur wenig weiter. Was braucht man also an Werkzeug um mit einem PIC Controller eine Aufgabe zu erfüllen, z.B. zwei LEDs im Sekundentakt blinken zu lassen?
  • Man sollte wissen, wie man einen PIC programmiert. D.h. dass man sich die Programmier-Sprache aneignet in der man auf dem PIC ein Programm schreibt. Die erste Wahl sollte hier Assembler/Maschinensprache sein. An dieser Stelle sollte man sich die Assembler-Literatur zum PIC von Mircochip laden und lesen. Einfaches Leser reicht für den Anfang, man braucht die Befehle nicht auswendig zu können, man sollte sich nur einen groben Überblick verschaffen, was mit dem PIC möglich ist.

  • Um ein Maschinenprogramm für einen PIC schreiben zu können, sollte man sich nun die MPLAB-IDE von Microchip herunterladen und installieren. Diese ist kostenlos und enthält eine Entwicklungsumgebung mit Editor, Assembler und Simulator. Man sollte sich nun mit der Handhabung der IDE vertraut machen und das PIC-Programm schreiben und mit dem Simulator testen.

  • Wenn man sich noch nicht für einen bestimmten PIC-Controller entschieden hat, sollte man dies nun tun. Ich empfehle einen Mid-Range Controller mit Flash-Memory der eine interne Takterzeugung hat. Hierdurch entfällt ein weiteres Bauteil der Testschaltung, der Quarz und somit auch eine weitere mögliche Fehlerquelle im Schaltungsaufbau. An diesem Punkt stellt ich nun auch die Frage: Wie bekomme ich mein PIC-Programm in den PIC-Controller hinein. Zu dieser Frage gibt es mit Sicherheit viele Antworten und Vorschläge. Ich rate von dem Selbstbau eine PIC-Programmiergerätes ab, selbst wenn die Material-Kosten nur gering erscheinen. MicroChip bietet den ICP-2 Programmer/Debugger mit USB-Schnittstelle für etwa 200 Euro an. Mit diesem Gerät kann man fast alle PIC-Controller flashen und sogar Debuggen. Die Investition von 200 Euro mag den meisten als zu hoher Preis für Hobby erscheinen. Wenn man sich etwas im Internet umschaut (eBay) findet man schnell nachbauten dieses Gerätes für weniger als 60 Euro. Dieses Geld sollte man investieren, es lohnt sich.

  • Nachdem man sich ein Programmiergerät beschafft hat und nun in der Lage ist, den PIC Controller zu programmieren (und auch zu debuggen), kann man nun sein erstes Programm in den PIC laden und ausprobieren. Die Testschaltung sollte man an Anfang so einfach wie möglich aufbauen. Evtl. lohnt sich auch der Kauf eines PIC-Entwicklungskits, dann hat man zumindest die Gewissheit, dass man keinen Fehler beim Aufbau der Schaltung gemacht hat.
Hat man diese Hürden erst einmal genommen, sind die nächsten Schritt weniger schwer. Durch das Schreiben von weiteren Programmen lernt man die PIC Controller immer besser kennen, und die Anwendungen und Aufgaben werden anspruchsvoller und interessanter.
Im nächsten Teil beschreibe ich wie und wo man sich die Dokumentation zum PIC Controller besorgt und wie die Maschinenbefehle der Mid-Range PIC-Controller aufgebaut sind.

PIC Microcontroller Teil 1

Da ich nach dem Lesen der PIC-Microcontroller Literatur jetzt etwas schlauer bin möchte ich hier nun meine Erkenntnisse zusammenfassen. Dieser Text soll alle denen, die sich ebenfalls mit PIC-Controllern beschäftigen einen schnellen überblick liefern, was Sie mit diesen Controllern anfangen können.

Ein Mirocontroller enthält einen kleinen Computer in einem IC. Sein Einsatzgebiet ist in elektronischen Schaltungen, wo er eine Aufgabe erledigen soll, die mit herkömmlichen ICs nur sehr Aufwendig und sehr unflexiebel zu realisieren wäre. Ein Beispiel wäre ein Sensorgesteuerte Ampelsteuerung, eine Waschmaschinensteuerung oder ein Schnittstellen-Konverter. Diese Aufgaben kann ein Microcontroller in einem IC erledigen und es besteht die Möglichkeit evtl. Ablaufänderungen nachträglich durch eine Änderung der Software vorzunehmen.

Damit ein Microcontroller funktionieren kann, benötigte er:
  • einen Programmspeicher (ROM) der das Programm enthält,
  • einen Datenspeicher (RAM) in dem er Variablen ablegen kann,
  • eine Verarbeitungseinheit (CPU) die ein Programm ausführen kann und Daten verarbeiten kann,
  • einen Taktgenerator (Timer/Clock) der die CPU antreibt und mit dem man Zählen bzw. die Zeit messen kann,
  • Schnittstellen (I/O) über die man Signale einlesen und ausgeben kann.
Abhängig von gewählten Controller-Typ enthält ein Microcontroller meist noch verschiedenen serielle Schnittstellen, Analog/Digitalwandler, einen Watchdog-Timer und eine Reset-Logik.

PIC Micro-Controller
Diese Controller arbeiten nach dem RISC Prinzip, das heist, dass sie über nur wenige einfache Maschinenbefehle verfügen, diese Befehle aber in einem Maschinen-Zyklus ausführen können. Das Gegenteil wäre das CISC Prinzip, wo wesentlich mehr und vor allem komplexere Maschinen-Befehle gibt, die mehr Maschinen-Zyklen benötigen um ihre Aufgabe zu erfüllen.

Es mag Anwendungen geben, wo es von großem Vorteil sein kann, dass ein Maschinenbefehl nur ein Maschinenzyklus benötigt. Entscheidend für die Wahl des RISC-Prinzips beim PIC war wohl aber, dass die Komplexität des Controllers, und damit die Anzahl der benötigten Transistoren, deutlich reduziert werden konnte, was sich auf den Preis des ICs auswirkt. Kleiner Chip bedeutet mehr Prozessoren pro Wafer und somit geringere Herstellungskosten.

Um eine Verarbeitung von einem Maschinenbefehl pro Maschinenzyklus zu erreichen wurde außerdem beim Design des Controllers auf die Harward-Architektur zurückgegriffen. Im Gegensatz zur Von-Neumann-Architektur sind hierbei der Programm-Speicher und der Datenspeicher physikalisch voneinander getrennt. Durch die Trennung ist ein gleichzeitiger
Zugriff auf beide Speicher möglich, der Aufbau der CPU ist einfacher, benötigt weniger Transistoren und ist schneller.

Dieses Chip-Design hat jedoch auch Nachteile. Dadurch dass ein RISC-Befehlssatz weniger Funktionalität enthält wie ein CISC-Befehlssatz werden die RISC-Programme länger als CISC-Programm um die gleiche Funktion zu erfüllen. Die Harward-Architektur erlaubt es nicht Daten im Programmspeicher (Konstanten) anzusprechen. Darum müssen Konstanten in den Datenspeicher kopiert werden um auf diese zuzugreifen. Beide Nachteile fallen aber beim PIC-Controller meist wenig ins Gewicht, weil die Anwendungsprogramme meist einfach aufgebaut sind und die Größe des ROMs in den wenigsten Fällen ausgeschöpft wird.

Der innere Aufbau des ROMs eines PIC-Controllers ist weder 8- noch 16-Bit breit. Eine Zelle eines Low-End PIC-Controllers ist 12 Bit-Breit, die eines Mid-Range PIC-Controllers 14 Bit-Breit. Diese merkwürdige Anzahl hat drei Gründe:
  • Da in der Harward-Architektur keine Daten im ROM abgelegt werden können, ist es nicht erforderlich den Speicher zu vielfachen von 8 Bit zu organisieren.
  • Jede Zelle enthält genau einen Maschinen-Befehl für den PIC-Controller. Da der Low-End Controller weniger Befehle und einen sehr kleineren Adressierbaren Speicher hat, kommt man mit 12 Bit pro Befehl gut aus. Die Mid-Range Controller haben 2 Bit mehr da Sie mehr Befehle und mehr Speicher haben.
  • Der Programmspeicher ist auf dem Chip integriert und nicht extern erweiterbar. Es werden nur soviel Bits genutzt wie sinnvoll ist, was wieder Transistoren auf dem Chip spart.
Leider habe die Ingenieure es beim Transistor-Sparen etwas übertrieben. Um bei Mid-Range PICs auf alle I/O-Register, den RAM und den Programmspeicher zugreifen zu können, mussten die Speicher in Bank (RAM/Register) und Pages (ROM) zulegt werden. D.h. die Maschinenbefehle können nicht auf den gesamten Speicher zugreifen, weil man an ein paar Bits gespart hat. Dies erschwert und verkompliziert die Programmierung.

Book Review: Programming and customizing the PIC Microcontroller

Ich beschäftige mich momentan sowohl beruflich als auch privat mit den Microchip PIC Microcontrollern und habe mir das Buch "Programming and Customizing the PIC Microcontroller 3rd Edition" von Myke Predko als Lehrmittel herangezogen. Auf über 1000 Seiten wird dem Leser ein guter Überblick über alle Thema gegeben, die er beim Umgang mit diesem Microcontroller benötigt. Das Buch geht auf die Low-End- , Mid-Range- und PIC18- Familie dieser Controller ein, wobei der Haupt-Fokus auf den Mid-Range-Controllern liegt. Nachdem ich nun das Buch durchgearbeitet habe, kann ich zusammenfassend feststellen:

Positiv:
  • Es wird der innere Aufbau und die Funktion der wichtigsten PIC Controller angesprochen und erläutert.
  • Anwendungsbeispiele aus dem praktischen Einsatz von PIC-Controllern werden beschrieben und detailliert erläutert.
  • Die wichtigsten Entwicklungswerkzeuge und Programmiersprachen angesprochen.
  • Das Buch enthält Tabelle und Checklisten die für die tägliche Arbeit von nutzen sind.

Negativ:
  • Der Autor bringt keinen "roten Faden" in dieses Werk, an dem sich ein Anfänger orientieren kann.
  • Eine Flut von Informationen wird über den Leser ausgeschüttet, der (noch) nicht in der Lage ist diese zu filtern. Der Leser droht in der Flut der Information den Überblick zu verlieren.
  • In verschiedenen Kapiteln driftet der Autor in den Erzählstil ab und spricht Themen an, die mit dem unmittelbaren Thema nichts zu tun haben.

Fazit:
Es gibt mit Sicherheit bessere Lehrbücher über PIC-Controller als dieses. Dieses eignet sich mehr als Lesebuch oder Nachschlagewerk. Für ein Lehrbuch fehlt der "Rote Faden" bzw. eine Lehrplan oder Checkliste die den Lehrenden exakt darlegt was er unbedingt wissen muss, und was er im Anwendungstall besser nachschlagen sollte.