BASIC-Tiger Application Note No. 027 Rev. 1.0. Zusätzliche I/O Ports mit PCF8475P. Gunther Zielosko. 1. Einführung



Ähnliche Dokumente
Professionelle Seminare im Bereich MS-Office

Informationsblatt Induktionsbeweis

Was meinen die Leute eigentlich mit: Grexit?

Technische Informatik Basispraktikum Sommersemester 2001

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Stepperfocuser 2.0 mit Bootloader

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Einfache Computersteuerung für Modellbahnen

Viele Bilder auf der FA-Homepage

Die Post hat eine Umfrage gemacht

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

9 Multiplexer und Code-Umsetzer

Leichte-Sprache-Bilder

Was ist Sozial-Raum-Orientierung?

Das Leitbild vom Verein WIR

! " # $ " % & Nicki Wruck worldwidewruck

1 Vom Problem zum Programm

Statuten in leichter Sprache

Alle gehören dazu. Vorwort

Primzahlen und RSA-Verschlüsselung

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Was ich als Bürgermeister für Lübbecke tun möchte

Fax einrichten auf Windows XP-PC

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Modellbildungssysteme: Pädagogische und didaktische Ziele

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Facharbeit Informatik. Thema:

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Übungen Programmieren 1 Felix Rohrer. Übungen

WLAN Konfiguration. Michael Bukreus Seite 1

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

EasyWk DAS Schwimmwettkampfprogramm

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Eine Logikschaltung zur Addition zweier Zahlen

Leseprobe. Bruno Augustoni. Professionell präsentieren. ISBN (Buch): ISBN (E-Book):

EINFACHES HAUSHALT- KASSABUCH

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Anleitung über den Umgang mit Schildern

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Technical Note Nr. 101

icloud nicht neu, aber doch irgendwie anders

Programmierung Weichenmodul S/D Tafel 1

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Online Newsletter III

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Versetzungsgefahr als ultimative Chance. ein vortrag für versetzungsgefährdete

Herzlich Willkommen beim Webinar: Was verkaufen wir eigentlich?

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Einführung in. Logische Schaltungen

Erstellen einer digitalen Signatur für Adobe-Formulare

Professionelle Seminare im Bereich MS-Office

Die Gesellschaftsformen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Zimmertypen. Zimmertypen anlegen

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Partnerportal Installateure Registrierung

Zahlen auf einen Blick

Windows 10 > Fragen über Fragen

Über den Link erreichen Sie unsere Einstiegsseite:

Local Control Network Technische Dokumentation

Die Invaliden-Versicherung ändert sich

YouTube: Video-Untertitel übersetzen

Elektrische Logigsystem mit Rückführung

Synthax OnlineShop. Inhalt. 1 Einleitung 3. 2 Welche Vorteile bietet der OnlineShop 4

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Anleitung So klappt der Downloadschnitt

Erstellen von x-y-diagrammen in OpenOffice.calc

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Wir gehen aus von euklidischen Anschauungsraum bzw. von der euklidischen Zeichenebene. Parallele Geraden schneiden einander nicht.

Anmeldung und Zugang zum Webinar des Deutschen Bibliotheksverbandes e.v. (dbv)

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Guide DynDNS und Portforwarding

Einrichten eines Exchange-Kontos mit Outlook 2010

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Durchführung der Datenübernahme nach Reisekosten 2011

COMPUTER MULTIMEDIA SERVICE

Anwendungsbeispiele Buchhaltung

OUTLOOK (EXPRESS) KONFIGURATION POP3

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

PHPNuke Quick & Dirty

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Urlaubsregel in David

10.1 Auflösung, Drucken und Scannen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Mediator 9 - Lernprogramm

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Der Kalender im ipad

Eine Anwendung mit InstantRails 1.7

Transkript:

Zusätzliche I/O Ports mit PCF8475P Gunther Zielosko 1. Einführung Jeder BASIC-Tiger-Anwender kennt das Problem obwohl der kleine Steuercomputer eigentlich gut mit frei programmierbaren I/O-Pins bestückt ist, fehlen bei vielen Projekten zum Schluß ein paar logische Ein- oder Ausgänge. Das liegt einmal daran, daß eine Anzahl von I/O-Leitungen des im BASIC-Tiger eingebauten Mikroprozessors bereits für innere Aufgaben (Adress-, Daten- und Steuerbus) gebraucht werden und zum anderen daran, daß das Konzept des BASIC-Tigers je nach Anwendung schon einige Ports oder Einzelpins konfisziert (Datenbus Port 6, Serielle Schnittstellen Port 9, Steuerleitungen Port 4 usw.). So muß man entweder mit den vorhandenen I/O-Pins haushalten oder sich zur Erweiterung etwas einfallen lassen. Wie könnten solche Erweiterungen aussehen? Die erste Möglichkeit bietet die Firma Wilke selbst an, nämlich erweiterte Eingänge oder erweiterte Ausgänge (wie sie z.b. im Plug-and-Play-Lab vorhanden sind). Die Schaltung- und Programmiertechniken werden ausführlich im Handbuch beschrieben. Auf derselben Basis werden sogar fertige Erweiterungsbausteine mit verschiedenen Kombinationen oder Ausführungen zusätzlicher Ein- und Ausgänge angeboten. Nachteil dieser Lösung ist die so gewonnenen Pins sind hard- und softwareseitig in ihrer Funktion festgelegt. Eingänge bleiben für alle Zeiten Eingänge und Ausgänge immer Ausgänge! Außerdem ist der Hardwareaufwand zur Gewinnung weniger zusätzlicher Pins erheblich (mindestens drei IC s!), wenn eine größere Anzahl von Ports gebraucht wird, lohnt sich das schon eher. Eine zweite Möglichkeit wäre, fertige parallele I/O-Schaltkreise (PIO) aus Mikroprozessor- Systemen zu verwenden, wie z.b. den Z80-PIO mit 2 kompletten Ports oder den 8255 mit sogar 3 Ports. Eine solche Lösung erfordert zwar einigen Anpassungsaufwand, hat aber auch Vorteile. Die Pins sind i.a. wirklich frei programmierbar und das Ganze geht sehr schnell. Allerdings sind beide PIO s große 40-polige Bausteine und ihr Einsatz schon deshalb nicht überall möglich. Wir wollen in diesem Applikationsbericht eine dritte Möglichkeit ausprobieren. Mit dem Schaltkreis PCF8574 wird ein programmierbarer 8-Bit-Bus zur Verfügung gestellt, der über nur 2 Leitungen (I 2 C-Schnittstelle) gesteuert wird. Und das Schönste ist, diese beiden Leitungen können problemlos 7 weitere solche Bausteine programmieren, das ergibt die stattliche Anzahl von 64 neuen I/O s. Nimmt man den PCF8574A dazu, einen Bruder des PCF8574, werden es durch andere Adressierung sogar 128. Ein Nachteil soll nicht verschwiegen werden, wegen der seriellen Ansteuerung dauert es natürlich länger, bis der Baustein (oder gar alle 16) in die gewünschte Funktion versetzt werden. Jedesmal muß ihm ja bitweise mitgeteilt werden, ob er Ein- oder Ausgang sein und was er z.b. als Ausgang für ein logisches Datenwort ausgeben soll. Dennoch wird diese Lösung für viele Anwendungen, info@wilke.de http:\\www.wilke.de Seite 1 von 6

bei denen es nicht so sehr auf die Geschwindigkeit dieser zusätzlichen I/O-Pins ankommt, nützlich sein. 2. Der PCF8574 von Philips Den PCF8574 gibt es in verschiedenen Gehäusevarianten und Ausführungen, die sich in der Programmierung unterscheiden. Ein Datenblatt bekommt man über: http://www-us6.semiconductors.com/acrobat/datasheets/pcf8574_2.pdf In unserem Applikationsbericht behandeln wir nur die 16-polige DIP-Bauform PCF8574P, es ist bei der Bestellung sehr genau darauf zu achten, daß nicht der PCF8574AP, der eine andere Adressierung braucht (hier passen die Beispielprogramme im Anhang nicht!) oder die 20- polige SSOP20-Bauform gewählt wird (hier stimmen die Pin-Bezeichnungen unserer Zeichnungen nicht). Allerdings bietet der PCF8574AP durch seine andere Typadresse bei sonst gleicher Funktion die Chance, noch einmal 64 I/O-Pins zusätzlich zu realisieren! Zur Funktion des PCF8574 hier nur soviel: Die Ausgänge sind gelatcht, d.h. sie behalten ihr Signal solange, bis ein neues Kommando erfolgt und sind so konzipiert, daß sie direkt LED s ansteuern können (leider nur im Low- Zustand des Ausganges). Es gibt noch einen Interrupt-Ausgang, den wir aber hier nicht weiter beachten (offenlassen!). Jeder Baustein hat 3 Adressleitungen, seine individuelle Adresse A0...A2, die in der Schaltung fest verdrahtet werden (siehe Bilder 1 und 2). Weitere intern 4 festgelegte Adressbits (Typ-Adresse PCF8574P 0100, PCF8574AP 0111) dienen zur Unterscheidung von anderen I 2 C-Bausteintypen (z.b. EEPROM s), die vielleicht auf demselben I 2 C-Bus arbeiten sollen. Mit den I 2 C-Befehlen wird dieser Baustein zunächst adressiert und dann programmiert. Durch das Schreib- und Lesekommando R/W werden schließlich Aus- oder Eingaben vorbereitet: Schreiben R/W = 0 Lesen R/W = 1 Die Bitfolge der ersten Bits sieht dann so aus (Tabelle 1): Slave-Adresse des PCF8574 Start Typ-Adresse Individuelle Adresse R/W Antwort Daten PCF8574 S 0 1 0 0 A2 A1 A0 0/1 A PCF8574A S 0 1 1 1 A2 A1 A0 0/1 A Tab. 1 Die Slave-Adressierung von PCF8574 und PCF8574 info@wilke.de http:\\www.wilke.de Seite 2 von 6

Verbindet man also alle Adressen A0...A2 eines PCF8574 mit GDN, ergibt sich für diesen Baustein die Adresse 0100000x, also 40h bzw. 41h. (Schreiben bzw. Lesen). Ein zweiter Baustein könnte mit A0 an VCC, mit A1 und A2 an GND beschaltet werden, was die Adresse 42h bzw. 43h ergibt usw. In unseren Softwarebeispielen sind dies die Bausteine PCF8574a und PCF8574b. Die Startkondition, die Adressenbildung, die Schreib- Leseauswahl, die Abfrage der Bausteinantwort sowie die Datenübergabe werden von fertigen BASIC-Tiger- Befehlen organisiert. Wie das im Einzelnen beim Schreiben und Lesen funktioniert, wird später behandelt. Eine Besonderheit gibt es noch beim PCF8574, man kann mit einigen Tricks sowohl Eingaben als auch Ausgaben quasi bidirektional in einem 8-Bit-Port realisieren. Damit kommen die Eigenschaften der neuen I/O s nahe an die Fähigkeiten der echten Tiger-I/O- Pins, die das ja auch können. 3. Die Schaltung Die hardwareseitige Kopplung von BASIC-Tiger und PCF8574 ist wirklich einfach. Bild 1 zeigt die Zusammenschaltung von BASIC-Tiger und bis zu 8 PCF8574. Genauso werden bei Bedarf PCF8574A hinzugefügt. Bild 1 Anschaltung mehrerer PCF8574P an den BASIC-Tiger info@wilke.de http:\\www.wilke.de Seite 3 von 6

Bild 2 Laboraufbau mit 2 PCF8574P und 8 LED s gegen Vcc In dem Laboraufbau nach Bild 2 wurden die individuellen Bausteinadressen 000 und 001 gewählt, die komplette Slave-Adresse ist also für Baustein 1 die 0100000x (40h) und für Baustein 2 die 0100001x (42h). Zusätzlich zu den gezeigten Komponenten sollte man jedem PCF8574 mindestens einen 100 nf Abblock-Kondensator spendieren. Das ist alles, mit einer passenden Software werden wir zunächst Ausgänge, dann Eingänge und zum Schluß kombiniert Ein- und Ausgänge an einem PCF8574 realisieren. 4. Der BASIC-Tiger und seine I 2 C-Befehle Die Befehle des BASIC-Tigers zum Schreiben und Lesen eines I 2 C-Bausteines werden im Handbuch nicht sehr ausführlich behandelt, zudem gibt es einige Widersprüche. Insbesondere mit dem I 2 C-Sonderling PCF8574 treten zusätzliche Probleme auf, die im folgenden etwas näher beleuchtet werden sollen. Fangen wir mit dem Schreibbefehl I2C_WRITE an. Die in Klammern angefügten Parameter (Chip, Adresse, Anzahl, Variable) haben folgende Bedeutung: Chip ist der IC-Typ und seine individuelle Adresse, der angesprochen werden soll (übergeben wird in unserem Fall einfach die komplette Adresse, z.b. 40h) Adresse hier ist nicht der IC-Typ und seine Adresse gemeint, sondern eine innere Adresse, wie sie beispielsweise bei EEPROM s benötigt wird. Eine solche Adresse ist beim PCF8574 nicht vorhanden. Anzahl Anzahl der zu übergebenen Bytes (bis 31) Variable die zu schreibenden Bytes in Stringform Was bei anderen I 2 C-Bausteinen sinnvoll funktioniert, macht beim PCF8574 Probleme. Der I2C_WRITE-Befehl des Tiger-BASIC besteht auf der Übergabe einer inneren Adresse, die info@wilke.de http:\\www.wilke.de Seite 4 von 6

dieser IC gar nicht hat. Wenn man hier beispielsweise eine 0 einträgt, könnte ein Beispielprogramm so aussehen, wie es auch von Marcel Hendrickx in der Tiger-Mailing-Liste vorgestellt wurde: #define PCF8574 40h TASK MAIN STRING A$ END I2C_SETUP ( 7, 0, 7, 1, 2, 0) A$ = "01010101"B I2C_WRITE ( PCF8574, 0, 1, A$) Es funktioniert sogar, hat aber einen Schönheitsfehler. Die scheinbar unwirksame innere Adresse 0 wird vom PCF8574 als Datenbyte erkannt und ausgegeben. Erst dann erfolgt die Ausgabe der richtigen Datenbytes, d.h. vor jeder gewollten Ausgabe wird das Adreßbyte als kurzes Datenbyte ungewollt ausgegeben, eine Katastrophe z.b. für nachgeschaltete Flip- Flops. Danach kann man aber bis zu 31 Bytes als String richtig übertragen. Wilke Technology empfiehlt einen anderen Weg aus dem Dilemma, anstelle mit dem I2C_WRITE-Befehl soll mit dem I2C_READ-Befehl auf den PCF8574 geschrieben werden. Die Bedeutung der in Klammern geschriebenen Parameter (Chip, Adresse, Anzahl, Variable) ist dieselbe wie beim I2C_WRITE-Befehl. Der vorgeschlagene Trick ist nun, mit dem I2C_READ-Befehl so zu tun, als wolle man lesen, die eigentlich wichtige Aktion ist aber das Einbringen der inneren Adresse. Dies bewirkt genau wie beim Schreiben eine Ausgabe dieses Adreßbytes auf die Ausgänge des PCF8574. Das unnötige Adreßbyte ist also das auszugebende Byte, das mit dem I2C_READ-Befehl eingelesene Byte wird ignoriert. Das funktioniert auch, hat aber den Nachteil, daß nicht viele Bytes in einem Zuge wie mit dem I2C_WRITE-Befehl übertragen werden können, sondern immer nur eins. Trotzdem wurde dieser Weg im Beispielprogramm 8574_OUT.TIG gewählt. Auch nicht ganz ohne Klippen ist das eigentliche Lesen mit dem Befehl I2C_READ. Wie wir schon beim Schreiben mit diesem Befehl gesehen haben, erfolgt auch beim Lesen immer eine ungewollte kurze Ausgabe der (inneren) Adresse an die Portpins des PCF8574. Dies bedeutet für angeschlossene Datenlieferanten (z.b. andere IC s) eine unschöne Vergewaltigung, wenn die Pegel entgegengesetzt liegen. Nun gibt es einen Umstand beim PCF8574, den wir ausnutzen können. Der Low-Pegel bei einem als Ausgang geschalteten Pin ist sehr kräftig, er kann sogar, wie schon erwähnt, LED s ohne Treiber direkt ansteuern. Der High-Pegel dagegen ist sehr hochohmig, er kann von jedem äußerem Logikgatter einfach überschrieben werden. Das kommt uns sehr entgegen, wir müssen die Ausgänge des PCF8574 vor jeder Eingabe lediglich auf High schalten, damit die von außen angelegten Pegel unverfälscht bleiben. Damit ist klar, welche (innere) Adresse wir im Befehl I2C_READ beim Einlesen eingeben müssen, nämlich 255. Damit werden bei der kurzen ungewollten Ausgabe dieser Adresse alle Ausgänge auf High und damit relativ hochohmig geschaltet. Das Programm 8574_IN.TIG geht diesen Weg und demonstriert die Funktion von 8 neuen Inputs. info@wilke.de http:\\www.wilke.de Seite 5 von 6

Jetzt sehen wir auch bereits die Lösung unseres letzten Problems, der Realisierung einer bitweisen Wahl von Ein- und Ausgängen am PCF8574. Alle Bits werden mit der (inneren) Adresse des Befehls I2C_READ auf High maskiert, wenn sie Inputs sein sollen. Dann werden die äußerlich angelegten Daten unverfälscht hereingelassen. Die als Output verwendeten Bits werden entweder ebenfalls auf High gesetzt, wenn sie high sein sollen oder auf Low, wenn sie low sein sollen. Das Programm 8574_MIX.TIG gibt an den vier niederwertigen Bits eine Zählvariable aus und liest gleichzeitig an den höherwertigen Bits Daten ein. Die Funktion der Ausgänge kann, wie schon erwähnt, ganz einfach mit Leuchtdioden überprüft werden. Schalten Sie einfach LED s mit ihrer Anode auf VCC, mit ihrer Kathode auf den jeweiligen Ausgang. Sie werden dann bei Low (0) am Ausgang leuchten und bei High (1) verlöschen. Beachten Sie aber bitte, daß mit LED s als Indikator die Low-Spannung am Ausgang nicht nahe 0V liegt, sondern etwa 1,5V beträgt (Brennspannung der LED s) und dadurch beim Lesen ein High vorgespiegelt wird. Beim Programm 8574_MIX.TIG wird dann das Einlesen verfälscht, nach dem Abklemmen der LED s werden echte Werte eingelesen. Sind die Ports Eingänge, können sie mit Brücken zu VCC oder Masse auf High oder Low getestet werden, besser und sicherer sind Widerstände (z.b. 1kΩ). Genauso können natürlich Daten von anderen IC s eingelesen werden, so z.b. vom zweiten Baustein PCF8574b... Eigentlich ist der PCF8574 ein idealer Kandidat für viele Lösungen mit dem BASIC- Tiger, bei denen die I/O-Ports knapp werden. Trotz virtuoser Programmier-Tricks sind die gezeigten Lösungen nicht sehr elegant und passen nur notdürftig zu dem vielseitigen Baustein. Der sauberste Weg ist eine eigene I 2 C-Befehlsgruppe für den PCF8574 ohne die dargestellten Kompromisse, das könnte aber nur von Wilke Technology kommen. Ein Traum wäre es, wenn Wilke Technology 8 oder sogar 16 IC s (PCF8574 und PCF8574A) in ihrer kleinsten Bauform in einen Erweiterungsbaustein stecken würde und mit leicht modifizierten IN-, OUT-, und DIR-Befehlen bis zu 128 echte zusätzliche I/O s zur Verfügung stellen könnte... (bitte in die Wunschliste für die BASIC-Tiger-Fans aufnehmen!) info@wilke.de http:\\www.wilke.de Seite 6 von 6