Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 OM-I2C-Slave-Master Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von GeKue - 3.10.2011 0:01)
GeKue nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro
Hallo,

es wurde schon mehrmals nach der M├Âglichkeit gefragt, ├╝ber die I2C-Schnittstelle Daten/Befehle zwischen zwei OM's zu ├╝bertragen. Habe Dietmar soeben ein solches Programm zugeschickt..

' Erm├Âglicht eine beliebige OM (Micro, Mini oder Midi) als Slave zu nutzen, welche durch eine
'                beliebige OM (Micro, Mini oder Midi) als Master ausgebeutet wird
'                     (getestet habe ich aber nur zwei OM-Micro's, mit ca 1 m I2C-Telefonkabel)
'               Die im Demo-Programm "Master_Demo.bas" verwendeten Pausen wurden "nach unten" nicht
'                      optimiert - sicherlich geht es noch schneller....


'   ├ťblicherweise schl├Ągt D. Harlos f├╝r die Master-OMs f├╝r SCL und SDA die Ports 5 und 6 vor
'                  Letztendlich lassen sich aber alle I/O-Ports verwenden
'                    !!!! aber beachten - ├änderung dann auch Definition von SDASCL11
'              Neben der Verdrahtung m├╝ssen noch die Definitionen f├╝r SDA/SCL
'                           und I2CDDR/I2CPort ver├Ąndert werden.

'       => Grundidee
'     Der Master ├╝bergibt dem Slave nacheinander folgende Bytes:
'          a)Adresse:   Eine Slave-Adresse "Ich_Adresse"  von 1-255 ist m├Âglich.
'          b)Anweisung: Bit[0] = 1    => die gesendeten Bytes[Anzahl = M_Anzahl] des Masters in den
'                                        Slave ab Byte-Speicher[M_Anfang] einschreiben
'                       Bit[2] = 1    => eine Anzahl von Bytes[Anzahl = M_Anzahl] des Slaves, ab
'                                        Slave-Byte-Speicher[M_Anfang] zum Master senden
'                       Bit[3]-Bit[7] => eine Zahl zwischen 0 und 64 k├Ânnen genutzt werden, um
'                                        Befehle an den Slave zu ├╝bergeben.
'                     sind Bit[0] und Bit[1] nicht gesetzt, liest der Slave nichts mehr ein
'                          sondern f├╝hrt die evt. gegebene Anweisung wie z.B. die Abarbeitung
'                               unterschiedlichster Programme aus...

'          c)M_Anfang:  Speicheranfang des Slave-Byte-Speichers
'          d)M_Anzahl:  Anzahl der Speicher
'                nach dem Einlesen der letzten zwei Bytes liest der Slave entweder
'               AnweisungsBit[0]=1) die vom Master gesendeten Bytes in seinen Speicherbereich ein
'                                      oder
'                      (AnweisungsBit[1]=1) sendet die abgeforderten Slave-Bytes an den Master.
'                      Anschlie├čend geht der Slave in's Basic und arbeitet die gegebene Anweisung
'                        (eine Zahl zwischen 0 und 64 =>64 verschiedene Befehle m├Âglich) ab.

'      Beschaltung:
'            a) Port[5]-SCL(Slave)------1kOhm-------Port[5]-SCL(Master)          {Series Resistor}
'            b) Port[6]-SDA(Slave)------1kOhm-------Port[6]-SDA(Master)          {Series Resistor}
'            d) beide Slave-Leitungen ├╝ber 22kOhm gegen Vcc(5V)  {Pullup Resistor)

Beste Gr├╝├če, GeKue
'

 Antwort schreiben

Bisherige Antworten: