µP-Technik Labor 6. Labortermin Vorbemerkungen zum 6. Versuchstag: Ziele des sechsten Versuchstages sind: ! Die Verbindung von Mikroprozessoren mit peripheren Geräten weiter praktisch zu üben; ! Den Laborrechner als Bestandteil eines A/D-Umsetzers zur Umsetzung analoger Spannungen in Digitalwerte einzusetzen. ! Eigene Software-Module zu entwerfen und als Funktioneinheiten in ein größeres SoftwareProjekt zu integrieren. Verfahren der Analog-Digital-Umsetzung Für die A/D-Umsetzung haben sich verschiedene Verfahren bewährt, wobei jedes seine Vorund Nachteile bzgl. Umsetzzeit, Auflösung, Genauigkeit und Schaltungsaufwand gegenüber den anderen Verfahren hat. Hauptsächlich kommen die folgenden, im Fach „Digitaltechnik“ bereits vorgestellten Verfahren für die A/D-Umsetzung zur Anwendung: 1. Parallelverfahren 2. Kaskadenverfahren 3. Serienverfahren (Sukzessive Approximation, Wägeverfahren) 4. Zählverfahren (Nachlauf- oder Treppenverfahren, Ein-/Zwei-Rampenverfahren, LadungsKompensationsverfahren) Beschreibung der Versuchshardware Die nachfolgend beschriebene Hardware erlaubt in Verbindung mit einem Laborrechner des µP-Labors sowie der passenden Software die Realisierung eines Analog-/Digitalumsetzers wahlweise mithilfe des Wägeverfahrens oder des Treppenverfahrens. Fotos des Experimentieraufbaus DAU-Board µP-Labor Laborrechner 1 N. Dahmen/G. Habedank Labor µP-Technik 6. Labortermin Blockschaltbild DAU-Bord Meßspannung In der vorliegenden DAU-Einheit wird für die durchzuführenden Experimente die zu messende analoge Eingangsspannung über ein Potentiometer eingestellt und für die Umsetzung bereitge- µP-Labor 2 N. Dahmen/G. Habedank µP-Technik Labor 6. Labortermin stellt. Über einen Umschalter kann festgelegt werden, ob unipolar (Umsetzungsbereich 0V...10V) oder bipolar (Umsetzungsbereich –5V...+5V) gemessen werden soll. Digitalvoltmeter Zur Anzeige der eingestellten Meßspannung befindet sich auf dem DAU-Board zusätzlich ein Digitalvoltmeter mit LC-Display. Dieses muß bei Bedarf über einen separaten Schalter eingeschaltet werden. Komparator Sowohl Wäge- als auch Treppenverfahren beruhen auf dem Vergleich der umzusetzenden Spannung UMeß mit einer einstellbaren Vergleichsspannung URef. Der Vergleich dieser Spannungen wird in der vorliegenden Schaltung mithilfe eines Komparators vorgenommen, der an seinem Ausgang den logischen Pegel „0“ (UMeß > URef) oder „1“ (UMeß < URef) liefert. Der Zustand des Komparatorausgangs und damit das Ergebnis des Vergleichs kann über die Kontrolleitung CA1 des PIA-Port A vom Laborrechner abgefragt werden. D/A-Umsetzer Die einstellbare Vergleichsspannung URef wird mithilfe eines 8-Bit Digital-/Analog-Umsetzers auf dem DAU-Board erzeugt. Über die acht als Ausgänge programmierten Portleitungen von PIA-Port B wird der D/A-Umsetzer angesteuert. Hierzu muß über den unten beschriebenen Multiplexer der Datenpfad von Port B zum D/A-Umsetzer freigeschaltet worden sein. Je nach Schalterstellung des Schalters „uni-/bipolar“ bestehen folgende Zusammenhänge zwischen Daten-Byte am Eingang und analoger Spannung am Ausgang des D/A-Umsetzers: Daten-Byte Daten-Byte 1111 1111 1111 1111 1111 1110 1111 1110 1111 1101 1111 1101 1000 0011 1000 0011 1000 0010 1000 0010 1000 0001 1000 0001 -4.98 -4.94 -4.90 -0.11 -0.07 -0.03 0.03 0.07 0.11 4.90 4.94 4.98 1000 0000 URef/V 0111 1111 0111 1111 0111 1110 0111 1110 0111 1101 0111 1101 0000 0010 0000 0010 0000 0001 0000 0001 0000 0000 0000 0000 a) bipolarer Meßbereich 0,03 0,07 4,90 4,94 4,98 5,02 5,06 5.10 5.14 9,88 9,92 9,96 b) unipolarer Meßbereich Daten/Spannungs-Diagramme für den D/A-Umsetzer Meßdaten-Ausgabe Zur Anzeige der umgewandelten Meßspannung stehen vier 7-Segment-LED-Anzeigen zur Verfügung. Zwei der Anzeigen dienen der Darstellung der Vorkommanstellen, zwei zeigen die Nachkommastellen an. Zur Ansteuerung der Vorkomma- als auch der Nachkommastellen müsµP-Labor 3 N. Dahmen/G. Habedank URef/V µP-Technik Labor 6. Labortermin sen jeweils BCD-codierte 8-Bit Zahlen bereitgestellt werden, wobei sich die niederwertigere Ziffer im Low-Nibble, die höherwertigere im Hi-Nibble des Datenbyte befinden muß. Die BCDZahlen werden in zwei 8-Bit Latches, bestehend aus jeweils 8 taktflankengesteuerten DFlipflops, zwischengespeichert. Über den bereits erwähnten und unten erklärten Multiplexer wird ausgewählt, ob die an PIA-Port B bereitgestellten Daten in das Latch für die NachkommaStellen, in das Latch für die Vorkomma-Stellen oder in den D/A-Umsetzer übernommen werden. Taktgenerator Zur Erzeugung des Übernahmetaktes für die Datenübernahme in die Anzeige-Latches sowie die Synchronisation mit dem D/A-Umsetzer dient ein Rechteck-Taktgenerator. Der Takt liegt zusätzlich auch am Kontrolleingang CB1 von PIA-Port B an und kann somit vom Rechner zur Synchronisation von Hard- und Software abgefragt werden. Selektionseinheit (Multiplexer) Der Multiplexer auf dem DAU-Board sorgt für die Umschaltung der Daten, wie sie von PIAPort B bereitgestellt werden, in ihrer gesamten Breite von 8 Bit. Zur Auswahl des gerade benötigten Multiplexer-Ausgangs dienen zwei digitale Eingänge, welche vom Rechner über die Kontroll-Ausgangsleitungen CA1 und CB2 angesteuert werden. Hierdurch lassen sich die 8-BitDaten wie folgt verteilen: Funktion CA2 CB2 keine 0 0 Nachkomma-Stellen des 7-Segment LED-Display 0 1 Vorkomma-Stellen des 7-Segment LED-Display 1 0 Eingangswert für den D/A-Wandler 1 1 Experiment 1: Vorbereitung: Entwerfen Sie ein Unterprogramm DADISP (⇓ ⇓X), welches den im X-Register übergebenen BCD-Code für gleichzeitig 4 Ziffern an die 7-Segment-Anzeige des DAU-Board übermittelt. Hierzu müssen die 4 BCD-Ziffern im X-Register in Vorkomma- und Nachkommateil (jeweils 2 Ziffern in einem Byte) aufgeteilt und durch Auswahl mittels der Selektionseinheit in die zugehörigen Latches geschrieben werden. Für die synchronisierte Übergabe aller Daten an die Anzeige-Latches ist die folgende Vorgehensweise erforderlich (siehe auch Timing-Diagramm auf der folgenden Seite): " # $ % & ' ( Nachkommastellen auf das Datenregister von Port B schreiben Daten zum Anzeigelatch für die Nachkommastellen durchschalten (CA2=0; CB2=1) Warten auf die nächste fallende Taktflanke an CB1 (Daten werden übernommen) Selektionseinheit zurücksetzen (CA2=0; CB2=0) Warten auf die nächste steigende Taktflanke an CB1 (Einsynchronisieren auf den Takt) Vorkommastellen auf das Datenregister von Port B schreiben Daten zum Anzeigelatch für die Vorkommastellen durchschalten (CA2=1; CB2=0) µP-Labor 4 N. Dahmen/G. Habedank µP-Technik Labor 6. Labortermin ) Warten auf die nächste fallende Taktflanke an CB1 (Daten werden übernommen) * Selektionseinheit zurücksetzen (CA2=0; CB2=0) Timing-Diagramm für die Routine DADISP Initialisieren Sie bei Unterprogrammbeginn zunächst den PIA-Baustein wie folgt: ! Portleitungen PB0...PB7 als Ausgänge; ! CA2 und CB2 als statische Kontrollausgänge, zunächst beide „low“; ! CA1 high-aktiv, IRQ disabled; ! CB1 low-aktiv, IRQ disabled. Der im Laborrechner benutzte PIA-Baustein hat die folgenden Registeradressen: DRA DDRA CRA DRB DDRB CRB EQU EQU EQU EQU EQU EQU $FCF8 $FCF8 $FCF9 $FCFA $FCFA $FCFB * Datenregister Port A * Datenrichtungsregister Port A * Kontrollregister Port A * Datenregister Port B * Datenrichtungsregister Port B * Kontrollregister Port B (CRA2=1) (CRA2=0) (CRB2=1) (CRB2=0) Vergessen Sie bitte nicht, nach der Initialisierung sowie nach jeder Auswertung des gesetzten Flags IRQB1 durch „Dummy-Reads“ auf die betroffenen Ports die Flags zurückzusetzen! Verwenden Sie zur Erzeugung einer Ablesepause unmittelbar vor der Rückkehr in das aufrufende Programm das folgende Unterprogramm ZEIT1: ****************************************************************************** * Unterprogramm: ZEIT1 * Zweck: Verzögerungsschleife (ca. 0,37s) * Veränderte Reg.: X; wird gerettet und restauriert ****************************************************************************** ZEIT1 PSHS X LDX #$A000 PAUSE LEAX -1,X µP-Labor 5 N. Dahmen/G. Habedank µP-Technik Labor BNE PULS RTS 6. Labortermin PAUSE X Die Startadresse von DADISP ist $5780. Diese Adresse muß unbedingt eingehalten werden, um andere Programm-Module, die später hinzugeladen werden, nicht zu überschreiben! Beschreiben Sie Ihren Entwurf mithilfe eines Struktogramms bzw. Programmablaufplanes, und realisieren Sie das Unterprogramm entsprechend den in Vorlesung und Übungen behandelten Programmierkonventionen in 6809-Assembler. Versuchsdurchführung: 1. Geben Sie das von Ihnen entwickelte Programm mithilfe des Editors ein, und assemblieren Sie das Programm. 2. Drucken Sie das fehlerfrei assemblierte Programm aus, laden Sie es anschließend in den Arbeitsspeicher und aktivieren Sie den Monitor. 3. Setzen Sie Breakpoints auf Startadresse ($5780) und Endadresse Ihres Unterprogramms. Starten Sie anschließend Ihr Programm (G 5780). 4. Setzen Sie mithilfe des Monitorbefehls „A“ den Wert für den Eingangsparameter in Register X. 5. Setzen Sie Ihr Programm zunächst im Singe-Step Modus fort und überprüfen Sie es auf korrekte Arbeitsweise. Schauen Sie sich insbesondere auch den jeweils aktuellen Zustand der PIA-Register mithilfe des Monitor-Befehls „M“ an. 6. Testen Sie Ihr Unterprogramm für verschiedene Anzeigewerte. Hinweis: Die obere Vorkommastelle dient ausschließlich der Darstellung des Minuszeichens „-“ für negative BCD-Zahlen und wird sonst ausgeschaltet. Das Minuszeichen wird mithilfe des Wertes $3xxx im Eingangsparameter erzeugt. Zur Darstellung der Überlaufanzeige „1_.__“ ist in X der Wert $0FFF zu übergeben. 7. Nach erfolgter Abnahme steht Ihnen das Modul neben anderen für die Realisierung der Tagesaufgabe zur Verfügung. Experiment 2: Sie erhalten die Programmieraufgabe während des Labortermins. Notizen: ........................................................................................................................................................ ........................................................................................................................................................ ........................................................................................................................................................ ........................................................................................................................................................ ........................................................................................................................................................ µP-Labor 6 N. Dahmen/G. Habedank