Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 


Artikel kategorien
Letztes fugte hinzu
    Ms-access

   Instrumentation + schnittstellen

   Pc tuning - volle kraft voraus für ihr system

   Informatorische grundlagen

   Javascript

   Interne sortieralgorithmen - der kern der sache

   Plotter und sonstige drucker

   Frage 20 (rössl priska)

   Internet - programmierung

   Monitore

   Semesterarbeit und spezialgebiet für informatik

   Erörterungs zum thema

   Inhaltsverzeichnis

   Einführung in die entwicklung ganzheitlicher informationssysteme:

   Titel dokument
alle kategorien

  Erlnov95__enthält weitere informationen

            Christoph Auer, Christian Steinbrecher     Aufgabenstellung   Unser Projekt sollte darin bestehen, einen I²C-Bus Slave-Receiver als XILINX-Schaltung zu realisieren. Hr. Prof. Guggenberg hatte jedoch bald die Idee, daß es praktisch wäre, einen Slave-Receiver als Software-Programm für den Mikroprozessor zu erstellen. So wurde unsere Aufgabe in zwei Teile unterteilt, zuerst die softwaremäßige und anschließend die hardwaremäßige Realisierung des I²C-Bus-Bausteins.     Projektablauf   Anfänglich mußten wir uns in die Grundlagen des I²C-Bus einarbeiten.

Während dieser Zeit wurden auch einige andere Aufgaben, wie die Fertigstellung unseres Vorjahresprojekts oder die Programmierung einiger WSI-Chips für das Heinrich-Clausen-µP-Board, erledigt. Anschließend entstanden erste Programmteile, z.B. die Erkennung der Startbedingung, Adresserkennung, usw. Am Ende des ersten Semesters war ein Programm entstanden, bei dem eine I²C-Bus Übertragung softwaremäßig möglich war (hierfür wurde ein „Software-Master“ programmiert). Dieses Programm war jedoch nicht zu verwenden, da es die I²C-Bus Spezifikationen nicht einhielt.

Der größte Teil des zweiten Semesters wurde dafür verwendet, das Programm so umzuarbeiten, daß ein „Hardware-Master“ damit kommunizieren konnte (Einhaltung der Spezifikationen!). Somit entstand ein komplett überarbeitetes Programm, daß bis jetzt ohne Fehler funktioniert und bereits von anderen Klassen verwendet wird. Christian Steinbrecher kümmerte sich ebenfalls um eine 19“-Konstruktion, auf der ein fix verdrahteter I²C-Bus aufgebaut wurde. Ein Teil besteht aus einem Hardware-Master-Transmitter und einem Software-Salve-Receiver, der andere aus einem Hardware-Master-Receiver und einem Software-Slave-Transmitter, also zwei Specon- und zwei Heinrich-Clausen-Boards. Zusätzlich wurde ein Hardware-Slave-IC montiert. Das zweite Problem, die XILINX-Schaltung, wurde anhand eines Zustandsdiagramms (nach mehrmaligem Drängen von Hrn.

Prof. Guggenberg) gelöst. Dort wurden die Zustände an der SCL- bzw. SDA-Leitung eingetragen und benötigte Signale hinzugefügt. So entstand eine Schaltung die mit VIEWLOGIC gezeichnet wurde und nun nur noch in das Programm XACT übernommen werden muß, sodaß ein XILINX-Baustein der 3000er Serie programmiert werden kann. Dies ist unsere letzte Aufgabe, somit wird unser Projekt wahrscheinlich rechtzeitig und erfolgreich abgeschlossen werden.

Nähere Informationen zu den einzelnen Projekttagen sind dem Projekttagebuch zu entnehmen.   PRINZIPIELLE ÜBERLEGUNGEN (FLUSSDIAGRAMM)     IMPULSDIAGRAMME + SPEZIFIKATIONEN  Timing-Spezifikationen  Parameter Symbol min. Max. Einheit   SCL Taktfrequenz SCL-clockfrequency     fSCL       100   kHz Zeit in der Bus frei bis wieder Übertragung starten kann Bus free time tBUF 4,7 - µs Haltezeit nach Startbedingung (Zeit bis erster Takt generiert wird) Start condition hold time tHD;STA 4,0 - µs LOW-Periode des Taktes SCL-LOW period   tLOW 4,7 - µs HIGH-Periode des Taktes SCL-HIGH period   tHIGH 4,0 - µs Zeitdifferenz zwischen SCL->HIGH u. Startbed. (bei Repeated Start -Bedingung) Start condition set-up time tSU:STA 4,7 - µs Haltezeit der gültigen Daten nach SCL-Impuls (für C-Bus kompatible Master Data hold time tHD:DAT 0 5 - - µs µs) Vorhaltezeit der gütigen Daten vor SCL-Impuls Data set-up time   tSU:DAT 250 - ns Anstiegszeit (SDA und SCL-Flanken) Rise time   tR - 1 µs Abfallszeit (SDA und SCL-Flanken) Fall time   tF - 300 ns Zeitdifferenz zwischen SCL->HIGH u.

Stopbed. Stop condition set-up time   tSU:STO 4,7 - µs       START-Bedingung  Kurze Erklärung   START: Clock – Leitung HIGH à Datenleitung wechselt von HIGH auf LOW START Bedingung wird immer vom Master generiert.   An den Bus angeschlossenen ICs (gewisse Geräte) können die START Bedingung leicht erkennen, weil sie das richtige Interface besitzen. Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.   Spezifikationen   tBUF min 4,7µs ..

......

.. BUS FREE TIME Zeit , die der Bus frei sein muß, bevor wieder eine Übertragung gestartet werden kann   tHD;STA min 4,0µs ....


......

START CONDITION HOLD TIME Haltezeit nach Startbedingung (Zeit bis erster Takt generiert wird)    LOW und HIGH Zustände - Mastertakt  Kurze allgemeine Erklärung   Der Takt beim I²C-Bus hat eine minimale LOW-Periode von 4,7µs und eine minimale HIGH-Periode von 4µs. In diesem Mode kann ein Master einen Takt mit einer Frequenz von bis zu fmax=100kHz erzeugen. Alle an den Bus angeschlossenen Geräte müssen aber in der Lage sein, diese Frequenz zu verarbeiten – gegebenenfalls muß der Takt synchronisiert werden à d.h. der Master wird in einen WAIT STATE gebracht. Dadurch wird die LOW-Periode ausgedehnt.

Daraus ergibt sich natürlich eine Verminderung der Frequenz.   Spezifikationen   tLOW min 4,7µs .....

..... SCL-LOW period LOW-Periode des Taktes tHIGH min 4,0µs .

......

... SCL-HIGH period HIGH-Periode des Taktes   Zeitspezifikationen bei Datentransfer  Allgemein Daten dürfen nur während der LOW-Periode des Taktes geändert werden (ausgenommen START- und STOP-Bedingungen).   Spezifikationen   tLOW min 4,7µs ..

......

.. SCL-LOW period LOW-Periode des Taktes tHIGH min 4,0µs ....

......

SCL-HIGH period HIGH-Periode des Taktes   tHD;DAT 0µs ......

.... DATA HOLD TIME Haltezeit der gültigen Daten nach einer (negativen) SCL-Flanke ( 5µs ..

......

.. DATA HOLD TIME Haltezeit der gültigen Daten nach einer (negativen) SCL-Flanke ß für C kompatible Master ) tSU;DAT min 250ns ....

......

DATA SET-UP TIME Vorhaltezeit der gültigen Daten vor einer (positiven) SCL-Flanke    STOP Bedingung  Kurze Erklärung   STOP: Clock – Leitung HIGH à Datenleitung wechselt von LOW auf HIGH   STOP Bedingung wird immer vom Master generiert.   Auch hier gilt: An den Bus angeschlossenen ICs können die STOP Bedingung leicht erkennen, weil sie das richtige Interface besitzen. Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.   Spezifikationen tSU;STO min 4,7µs ...

......

. STOP CONDITION SET-UP TIME Zeitdifferenz zwischen positiver Flanke SCL und der STOP-BedingungRISE- UND FALL – TIME  Spezifikationen       tR max. 1µs ....

......

RISE TIME Anstiegszeiten für SDA- und SCL-Flanken   tF max. 300ns .....

..... FALL TIME Abfallzeiten für SDA- und SCL-Flanken    Repeated start  Spezifikationen       tSU;STA min.

4,7µs ......

.... SCL HIGH Zeitdifferenz zwischen der (positiven) Flanke des Taktes und der Startbedingung (Repeated Start Bedingung !)       PROGRAMM: ;############################################# ;############### I2C Slave ################### ;############################################# ;### Christoph Auer,Christian Steinbrecher ### ;############### 5HNA 1997/98 ################ ;#############################################   ;############################################# ;############## Zuweisungen ################## ;#############################################   hauptpr code 8100h unter code 8200h charout code 3000h binout code 301eh binbit code 3018h charin code 302ah cursor equ 59h home equ 48h erase equ 4Ah esc equ 1Bh left equ 44h down equ 42h auer equ 10000000b ;Adresse des Slave-Receivers enter equ 3003h dat bit 01b sda bit p1.7 ;Port für die softwaresimulierte SDA-Leitung scl bit p1.

6 ; -"- SCL-Leitung   ;############################################# ;############# Startbedingung ################ ;#############################################   org hauptpr   haupt: jnb scl,haupt ;SCL=HIGH X1: jnb sda,haupt ;SDA=HIGH anf: jnb scl,haupt ;SCL immer noch HIGH jb sda,anf ;SDA HIGH->LOW Übergang mov R1,#00h ;R1 "leeren" mov R2,#00h ;R2 "leeren" mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte)   ;############################################# ;############## Adressabfrage ################ ;#############################################   X2: setb scl ;SCL freigeben   X3: jnb scl,x3 ;positive Clockflanke zur Datenübernahme X4: mov c,sda ;Daten übernehmen nop ;minimale HIGH-Zeit=4µs clr scl ;Clock auf LOW ziehen ("Master bremsen") mov A,R2 ;gesicherten Akku laden rlc A ;Daten (Carry-Bit) bitweise (MSB...LSB) in den ;Akku schreiben (rotieren) mov R2,A ;Akku (Daten) sichern djnz r3, x2 ;8x wiederholen (8bit=1byte)   X5: mov R4,#auer ;lädt eigene Adresse in R4 mov A,R2 ;gesicherten Akku laden subb A,R4 ;vergleicht die angelegten Daten=Adresse mit der ;eigenen Adresse jnz haupt ;bei Übereinstimmung weiter, wenn nicht warten auf neue ;Startbedingung ;############################################# ;############### Acknowledge ################# ;#############################################   ack: clr sda ;Daten auf LOW ziehen setb scl ;Takt freigeben ack11: jnb scl,ack11 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW ;während SCL-HIGH-Phase) ack12: jb scl,ack12 ;halten der Datenleitung auf LOW bis Clockleitung LOW setb sda ;Datenleitung freigeben   ;############################################# ;############### Datenempfang ################ ;#############################################   empfang: mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte) mov R1,#0h ;R1 "leeren" mov R4,#2h ;Stopbedingung 2x abtasten   X6: setb scl ;SCL freigeben   X7: jnb scl,x7 ;postive Taktflanke (SCL LOW->HIGH) zur Datenübernahme   X8: mov c,sda ;Daten übernehmen jb sda,x98 ;wenn sda=HIGH, dann sicher keine Stop-Bed.   x99: jnb scl,x98 ;scl=HIGH jb sda,haupt ;sda:low->high djnz R4,x99 ;2x abtasten   x98: clr scl ;Clock auf LOW ziehen ("Master bremsen") mov A,R1 ;gesicherten Akku laden rlc A ;Daten (Carry-Bit) bitweise (MSB..

.LSB) in den Akku ;schreiben (rotieren) mov R1,A ;Akku (Daten) sichern djnz R3,X6 ;8x wiederholen (1byte) mov A,R1 ;gesicherten Akku laden call charout ;Ausgabe am Bildschirm   ;############################################# ;############### Acknowledge ################# ;#############################################   ack2: clr sda ;Daten auf LOW ziehen setb scl ;Takt freigeben ack21: jnb scl,ack21 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW ;während SCL-HIGH-Phase) ack22: jb scl,ack22 ;halten der Datenleitung auf LOW bis Clockleitung LOW setb sda ;Datenleitung freigeben jmp empfang ;Sprung zur Empfangsroutine=Warten auf neue Daten   ;#############################################   end TIMING-DIAGRAMM:                     Programm         Zeit/Befehl SDA   SCL   ;###########################################     0 1   0 1 ;############# Startbedingung ################           ;###########################################                               org hauptpr                                     haupt: jnb scl,haupt     2µs                             X1: jnb sda,haupt     2µs                             anf: jnb scl,haupt     2µs           jb sda,anf     2µs           mov R1,#00h     1µs           mov R2,#00h     1µs           mov R3,#8h     1µs                             ;###########################################           ;############## Adressabfrage ################           ;###########################################                               X2: setb scl     1µs                             X3: jnb scl,x3     2µs                             X4: mov c,sda     1µs           nop       1µs           clr scl     1µs           mov A,R2     1µs           rlc A     1µs                               mov R2,A     1µs           djnz r3, x2     2µs                             X5: mov R4,#auer     1µs           mov A,R2     1µs           subb A,R4     1µs                               jnz haupt     2µs                             ;###########################################           ;############### Acknowledge ################           ;###########################################                               ack: clr sda     1µs           setb scl     1µs         ack11: jnb scl,ack11     2µs                             ack12: jb scl,ack12     2µs           setb sda     1µs                             ;###########################################           ;############### Datenempfang ###############           ;###########################################                               empfang: mov R3,#8h     1µs           mov R1,#0h     1µs           mov R4,#2h     1µs                             X6: setb scl     1µs                             X7: jnb scl,x7     2µs                             X8: mov c,sda     1µs           jb sda,x98     2µs                             x99: jnb scl,x98     2µs           jb sda,haupt     2µs           djnz R4,x99     2µs                             x98: clr scl     1µs           mov A,R1     1µs           rlc A     1µs                               mov R1,A     1µs           djnz R3,X6     2µs           mov A,R1     1µs           call charout     1,x ms                             ;###########################################           ;############### Acknowledge ################           ;###########################################                               ack2: clr sda     1µs           setb scl     1µs         ack21: jnb scl,ack21     2µs                             ack22: jb scl,ack22     2µs           setb sda     1µs           jmp empfang     2µs                             ;###########################################                               end                     ZUSTANDSDIAGRAMM (F. XILINX-SCHALTUNG)   BLOCKSCHALTBILD         GRAY-CODE-COUNTER (9 NEGATIVE FLANKEN) Dieser Zähler ist kein richtiger Gray-Code-Zähler, weil sich vom 9. Auf den 1.Zustand 2Bits ändern. Dies ist jedoch unerheblich, da bei diesem Übergang nicht der wichtige Zustand 8 erreicht werden kann (hier wird das Schieberegister ausgelesen und das ACK „gesendet“).

      QN+1 QN   D C B A D C B A 1 0 0 0 0 0 1 0 1 2 0 0 0 1 0 0 0 0 3 0 0 1 1 0 0 0 1 4 0 0 1 0 0 0 1 1 5 1 0 1 0 0 0 1 0 6 1 0 0 0 1 0 1 0 7 1 1 0 0 1 0 0 0 8 1 1 0 1 1 1 0 0 9 0 1 0 1 1 1 0 1       A       2 3 4 5       1   D 8 9 7             C   6         B         A       1 1 0 0     X 0   D 1 1 0 X X X X X   C X 0         B   A=/B*/C*/D+C*D               A       0 1 1 1     X 0   D 0 0 0 X X X X X   C X 0         B   B=A*/B*/C+B*/D       A       0 0 0 0     X 0   D 1 1 1 X X X X X   C X 0         B   C=/B*D       A       0 0 0 1     X 0   D 1 0 1 X X X X X   C X 1         B   D=/A*B+/A*/B*D         KOMPLETTE SCHALTUNG (VIEWLOGIC)        

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser

   sachtextanalyse

   interpretation zwist

   Fabel interpretation

   literarische charakteristik

   interpretation bender heimkehr

   felix lateinbuch

   interpretation der taucher von schiller

   textbeschreibung

   charakterisierung eduard selicke
Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)




| impressum | datenschutz

© Copyright Artikelpedia.com