
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
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 |