PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] I2C Master braucht sehr lange um ein Byte zu schreiben



wolf112
29.12.2011, 18:50
Hallo ich lese hier schon lange im Forum und habe mich nun endlich dazu entschieden auch ein Projekt zu starten.
Da ich noch ein Anfänger mit Mikrocontrollern bin, will ich eine einfache kleine Wetterstation bauen, die ich später noch erweitern kann.
Sie soll mir erstmal nur über ein LCD die Luftfeuchtigkeit und die Temperatur ausgeben.
Ich hab die Schaltung aufgebaud, aber der Sensor funktioniert nicht so wie ich es will.
Als Sensor verwende ich den HYT 271 (https://www.roboternetz.de/community/www.reichelt.de/Sensoren/HYT-271/index.html?;ACTION=3;LA=2;ARTICLE=105997;GROUPID=3 190;artnr=HYT+271;SID=10TvtLr38AAAIAAE8C430fdeee68 05abf7281a972f1d747919790).
Das LCD kann ich soweit schon ganz gut ansteuern, aber beim Sensor hapert es.
Deshalb habe ich ein programm geschrieben, das überprüfen soll, ob das Byte an den Slave gesendet wurde.
Es läuft bis I2cstart, aber wenn er das Byte senden soll hängt er sich auf.:(
Er schrieb erst nach ungefähr einer stunde (Hatte länger nicht drauf geguckt) die Zwei auf den Bildschirm.




$regfile = "m32def.dat"
$crystal = 1000000

'LCD initialisieren

Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
Cursor Off
Cls

Locate 1 , 1
Lcd " I2C Ueberpruefung"
Locate 2 , 1
Lcd "Programmstatus: "
Lcd "1"

'I2C starten

I2cinit
I2cstart
I2cwbyte &H28 'Adresse des Slaves
I2cstop
Locate 2 , 17
Lcd "2"

Do
Loop

End


Ich hoffe ihr könnt mir helfen, denn ich hab bei Google und auch hier im Forum nichts gefunden.
Ich bin für jede Hilfe dankbar.
PS: Die Leitungen SCL und SDA hab ich über 10kOhm Pullups mit 5V verbunden.
PPS: Ich weiss, dass "fliegende" Schaltungen nicht gut sind, aber auf der Unterseite ist viel mit Silberdraht verlötet.

20993

peterfido
29.12.2011, 20:28
Ich finde kein config sda und kein config scl. Für Hardware twi vermisse ich die $lib "i2c_twi.lbx"

I2CINIT ist nur nötig, wenn die PINs zwischenzeitlich anders verwendet wurden. Diese werden dadurch wieder auf 0 gesetzt (PORT und DDR)

PS: Bei der Problemsuche ist Soft-TWI wesentlich toleranter. Ich ziehe dieses dem Hardware TWI vor.

wolf112
29.12.2011, 22:28
Wie konte ich das nur übersehen?
Tausend Dank an dich, jetzt kann ich mich endlich weiter in die Materie einarbeiten.