Hallo,
die Slaveadressen passen so nicht, weil das erst Bit für Read/Write benutzt wird.
Eine Adresse in dem Bereich würde dann eine dieser sein:
&HC0, &HC2 o. &HC4
Hallo zusammen,
die die mich schon kenne, wissen dass ich hauptsächlich mit dem Bau
eines Hexapods beschäftigt bin. Dieser ist im Moment im mechanischen
Teil fertig und nun folgt die Programmierung. (Hexapod unter dem
Thema "Erster Hexapod").
So mein Problem im Moment liegt bei I2C.
Als erster Meilenstein soll der Master einen Status an 3 Slaves senden,
welche darauf hin eine LED einschalten.
Es handelt sich bei allen 4 Controllern um Atmega88. Für I2C nehme ich
die hardwareseitig vorhanden Pins.
Jetzt mal der Code für den Master. Wäre klasse wenn sich jemand den Code
durchsehen könnte und mir sagen könnte, was ich anderes schreiben muss.
Code:$regfile = "m88def.dat" $crystal = 16000000 $baud = 9600 $lib "I2c_twi.lbx" Config Twi = 400000 Const Slave1 = &HC1 'I2C Adresse slave1 Const Slave2 = &HC2 'I2C Adresse slave2 Const Slave3 = &HC3 'I2C Adresse slave3 Dim Status As Byte Wait 2 'Warte 2 Sekunden I2cinit 'Bus initialisieren Do Status = 1 I2cstart I2cwbyte Slave1 'Slave1 ansprechen I2cwbyte Status 'Status I2cstop Waitms 1000 I2cstart I2cwbyte Slave2 'Slave2 ansprechen I2cwbyte Status 'Status I2cstop Waitms 1000 I2cstart I2cwbyte Slave3 'Slave3 ansprechen I2cwbyte Status 'Status I2cstop Waitms 1000 Loop End
MfG High Light
Hallo,
die Slaveadressen passen so nicht, weil das erst Bit für Read/Write benutzt wird.
Eine Adresse in dem Bereich würde dann eine dieser sein:
&HC0, &HC2 o. &HC4
Ich steh auf dem Schlauch!!!
Welches erste Bit steht für Read/Write?
un dwarum gehen alle Adressen bis auf &HC1???
Welche Adressen könnte ich den noch verwendenden?
Des weiteren unterscheidet man Read- und Write- Adressen?
Gruß High Light
Wenn du dich über I2C informierst steht z.B. im Wissensbereich
http://www.rn-wissen.de/index.php/I2C
Die Adresse besteht aus 7bit + 1bit für R/W. Die ersten 7bit sind für die Adresse, das 8te Bit ist das R/W Bit.
Wenn du jetzt z.B. den PCF8583 verwendest ist die Adresse für schreiben
1010 00A0R/W => 1010 ist die Basisadresse, A0 ist die Adresse, die man Ändern kann (mittels Anschluss vom PCF8583) und das R/W Bit.
Wenn man A0 auf GND legt lautet die Adresse für lesen: 1010 0000 = hexA0
Für schreiben: 1010 0001 = hexA1
Am Besten ist es, wenn du in einem DB nachsiehst. Dort ist immer ein Diagramm mit der Datenübertragung.
Ich könnte dir einen Quellcode (in C) posten, den ich heute geschrieben habe um die I2C Adressen auszulesen.
MfG Hannes
Ok, danke jetzt wird das mal klarer.
Das Programm hilft mir nicht weiter,
da ich ja im Moment nur Atmegas88 verwende.
Da kann ich ja dann die Adressen selber festlegen oder?
Dass heißt ich gebe zum Beispiel dem Slave1 die Adresse:
Const Slave1 = &HC1
Mit der kann ich dann schreiben oder?
Möchte ich aber lesen heißte es dann:
Const Slave1 = &HC0
Habe ich dass so richtig verstanden?
Gruß High Light
Nicht ganz. Im Link, den ich gepostet habe ( http://www.rn-wissen.de/index.php/I2C ) steht unter http://www.rn-wissen.de/index.php/I2..._7-Bit-AdresseDas würde bedeuten die Schreibadresse wäre 0xC0 (&HC0) und die Leseadresse 0xC1 (&HC1).Dieses letzte Bit wird als R/W Bit bezeichnet (0 steht für "schreiben", 1 für "lesen").
MfG Hannes
Oh ich glaube da habe ich etwas verdreht^^.
So hatte ich es eich au gemeint.
Danke für die Hilfe.
Dann werde ich mich mal am Sonntag an den
Code für den Slave machen.
Wäre klasse, wenn ihr den dann auch mal durchsehen könntet.
Gruß High Light
Ok ich bin am ausprobieren und suchen und muss sagen,
Ich checks gar net, wie ich den Code für den Slave schreiben
muss.
Weil ich versteh gerad gar nix, und finde tue ich au nix fürs Slaves.
Kann mir jemand weiter helfen?
Das hier ist das einzige was ich gefunden hab:
https://www.roboternetz.de/phpBB2/ze...&highlight=i2c
Kann ich dies überhaupt in meinem Fall verwenden???
Wenn nein? Wie dann?
Noch eine zweite Frage, muss ich beim Master auch angeben welche Pins verwendet werden sollen?
Gruß High Light
Kann mir den keiner weiterhelfen?
Gruß High Light
Hier habe ich mal einen TWI Slave Transmitter gebaut
http://www.gerold-online.de/cms/whee...rsensoren.html
Lesezeichen