Anzeige:

I2C mit BASCOM

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

I2C mit BASCOM

Von Sam am 28.05.2010 23:48

Hallo Community
Kann mir mal jemand - am besten mit Code - genau erklären wie man mit BASCOM eine I2C-Verbindung zwischen zwei AVRs konfiguriert und aufbaut.
Ich hab im Netz nix gutes gefunden und euch vertrau ich einfach.

Vielen Dank

MfG Sam

Von BellaD am 29.05.2010 16:15

moin

zu Bascom kann ich in dem Fall nicht viel sagen ausser das es evtl. was zu dem Thema beim Hersteller auf deren Website was gibt .
http://avrhelp.mcselec.com/using_the_i2c_protocol.htm
oder
I2CSLAVE Library (Download version) für nur 14.95
http://www.mcselec.com/index.php?page=shop.product_details

Bei Atmel gibt es schon mal ganz gute Apps. die zwar für assembler/C ausgelegt sind , dir aber auf jedenfall schonmal das I2C Protokoll erschliessen helfen.

Aber mir stellt sich eher die Frage was machst du wenn es nicht so funktionieren tut wie du dir das vorstellst ?
Wenn du kein Speicher Ozzi. hast tuts auch ein analog Ozzi mit einem FlipFlop zum triggern Wink

trigger a oscilloscope on I2C start ( or buy a Tektronix Smile )
The I2C start condition is SDA low while SCL is high, we need a D-latch.

SCL ------*D Q*------ out


SDA ----o>*C

connect the trigger to out and select Rising edge on the scope !

Von Sam am 29.05.2010 17:55

Ich hab ein Speicheroszi, das ist kein Problem. Aber in BASCOM gibt dafür fertige Befehle. Nur weis ich nicht, wie ich sie verweden muss.

MfG Sam

Von BellaD am 30.05.2010 12:54

moin


Da wird dir nichts anderes übrigbleiben als sich mit dem I2C Protokoll auseinander zusetzen und die Datenblätter der verwendeten chips zu lesen
(EEprom,Echtzeituhr usw).Da du zum verständnis des busprotokolls auch noch die einzelnen Befehle und adressen der Slave brauchst.

In Assembler :

;**** Write data => Adr(00) I2C ****
write_i:

ldi i2cadr,$A0+i2cwr ; Set device address And write
rcall i2c_start ; Send Start condition And address

mov i2cdata,zh ; Write Word address high byie
rcall i2c_do_transfer ; Execute transfer

mov i2cdata,zl ; Write Word address Low byie
rcall i2c_do_transfer ; Execute transfer

mov i2cdata,temp ; Set write data
rcall i2c_do_transfer ; Execute transfer

rcall i2c_stop ; Send Stop condition
ret

in Bascom:
'This section initializes the DS1624

I2cstart 'Sends start condition

I2cwbyte Ds1624wr 'Sends the address



'byte with r/w 0



'Access the CONFIG register (&HAC address byte)

I2cwbyte &HAC

'Set continuous conversion (&H00 command byte)

I2cwbyte &H00

I2cstop 'Sends stop condition

Waitms 25 'We have to wait some time after a stop

Beispiel für Bascom findest du in der online Hilfe
http://avrhelp.mcselec.com/index.html?using_the_i2c_protocol.htm

mfg

Anzeige: