PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : massive I2C probleme



Zentauro
27.06.2007, 19:25
hallo,

ich probier schon 4 stunden um meine i2c kommunikation zu einem display herzustellen, aber es geht einfach nicht. hab das rnbfra 1.22 board und die i2c hardware onboard funktioniert.

ich hab schon alle befehle für i2c probiert. weiters habe ich schleifen laufen lassen, die alle adressen beschreiben und alle möglichen daten von 0-255 scheiben, aber ich bekomm einfach nix auf das display. hab mit einem picaxe auf das display geschrieben und das geht, was mache ich falsch??? gibts da noch irgendwo sondereinstellungen, auf welche ich vergessen haben könnte???



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000
$baud = 19200 'Quarzfrequenz

Const Powerport_adr = &H74 'I2C Adr PCF 2
Const Display_adr = &HC6

Dim I2cdaten As Byte
Dim Bytes As Byte 'Datenbyte aus PCF8574

Config Portc = Output
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1

'Print "Write Powerport"
I2cinit
I2cstart
I2cwbyte Powerport_adr 'Schreibbefehl an PCF schicken
I2cwbyte &B00000010 'Datenbyte an PCF
I2cstop


I2cdaten = &H0C
Bytes = 1


Do

'Print "Versuch 1"
I2csend 255
I2csend Display_adr
I2csend "B"
I2csend &HC6 , &H0C


I2cinit
I2cstart
I2cwbyte Display_adr 'Schreibbefehl an PCF schicken
I2cwbyte 12 'Datenbyte an PCF
I2cstop

Loop

End

danke, lg philipp

PicNick
27.06.2007, 19:44
Mach doch mal das Display-senden so, wie das PCF schicken.
also
start
cwbyte adresse
cwbyte "B"
etc., etc.

Zentauro
27.06.2007, 20:46
erstmal danke, aber so hab ichs schon probiert --> das zweite beispiel im code...

hast du oder wer anderer noch einen rat für mich???

danke, lg

linux_80
27.06.2007, 22:25
Hallo,

ein LCD will ja auch noch Initialisiert werden, deshalb wird da auch nix rauskommen wenn man nur irgendwelche Bytes an das LCD sendet.

Lass' mal den Absatz nach 'Versuch 1' weg, da ist kein Start und kein Stop, da kommt der I2C-Bus nur durcheinander !

Zentauro
28.06.2007, 15:02
hallo,

hab das jetzt mal probiert, aber da kommt auch nix raus...

im displaydatenblatt steht, es schluckt sofort nach dem hochlauf alles was ihm gesendet wird und visulisiert es (natürlich keine steuerzeichen)

dieses teil ist es:
http://www.roboter-teile.de/Shop/themes/kategorie/detail.php?artikelid=40&source=2

danke, lg

Michael
28.06.2007, 16:35
Hallo Zentauro,

dieses teil ist es:
dieses Display hat einen Controller onboard, der das Display beim Anlegen der Betriebsspannung initialisiert und dann auf I2C Daten wartet.
Man sollte ihm also zuerst etwas Zeit lassen (das Display selbst braucht ja auch noch eine Weile)

Zum Löschen des Displays wird das Kommando 12 gesendet.
Dazu braucht es zuerst die Schreibadresse des Displays, dann die Auswahl des (Kommando-)Registers 0 und dann den eigentlichen Befehl.
Das sieht dann so aus:

Waitms 1000
I2cstart
I2cwbyte Lcd_schreibadresse
I2cwbyte 0 'Auswahl Register
I2cwbyte 12 'Kommando clear
I2cstop
Der nächste Schritt wäre, den Cursor blinken zu lassen. Mit dem Datenblatt (bei deinem Link) schaffst du das bestimmt ab jetzt alleine ;)

Gruß, Michael

P.S.: Pullup-Widerstände sind vorhanden?

Zentauro
29.06.2007, 07:31
es klappt!!!!

herzlichen dank euch allen!!!!!

lg, philipp