PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem - I2Cbus geht nicht mit LC-Display



Olle_Filzlaus
11.09.2010, 16:53
Hallo Leute,

ich habe mal eine ganz doofe Frage. Ich habe das Polli Board und kann ohne Probleme auf den I2C-EEProm zugreifen sollange ich es per RS232 mache. Wenn ich das LC-Display anklemme geht das Display, aber der I2C Bus streikt.



$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600

'Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6 , E = Porta.0 , Rs = Porta.2
'Config Lcdbus = 4
'Config Lcd = 16 * 4

'Config Porta = Output

Config Sda = Portc.1
Config Sdl = Portc.0

Dim Adress As Byte

Adress = 160

'Locate 1 , 1
' Lcd "I2C Test"

'Lowerline
I2cstart
I2cwbyte Adress

If Err = 1 Then
Print "Error" ; Adress
Else
Print "Verbindung erfolgreich" ; Adress
End_if

I2cstop

end


Wenn ich den Code per Print nutze, geht er pürima. Er findet den EEprom und es kommt Verbindung erfolgreich. Wenn ich das per LCD mache, dann steht da nur "I2C Test" und mehr passiert nicht. Durch probieren habe ich rausbekommen, das es bis dorthin arbeitet, wo die I2C Anweisungen anfangen. Ich muss aber alles vom LCD Auskommentieren. Dann gehts. Sonst nicht.

Liegt das an der Lib vom LCD? Oder ist das ein bekannter FEhler?

Hoffe auf eure Hilfe

thx Arno[/code]

silas
14.09.2010, 00:27
ein ähnliches Problem hatte ich auch. Ich bin aber nur ein Anfänger, bin mir daher nicht sicher ob ich es richtig gelöst habe.
Das Programm wurde unheimlich eingebremst durch LCD-Befehle. Hab dann I2C auf Hardware Twi geändert, also Programm unabhängig. Und siehe da, es lief wieder.
Jetzt hab ich aber das Display auch über I2C angeschlossen, mit der I2C-lcd-lib. Die geht wieder nicht mit Twi. Nun hab ich die Lib etwas umgeschrieben, mal gehts, mal nich. Ich verzweifle auch langsam.

Jaecko
14.09.2010, 10:39
kann ohne Probleme auf den I2C-EEProm zugreifen sollange ich es per RS232 mache

Wie? Du greifst per RS232 auf den I2C-EEPROM zu?

Falls du meinst, dass du die Fehlerausgabe per RS232 oder LCD machst:
Eine I2C-Kommunikation sollte nicht durch irgendwelche Ausgaben (egal ob UART oder LCD) unterbrochen werden.
V.a. die Ausgabe auf einem LCD dauert derart lange, dass Busteilnehmer durchaus einen Timeout erzeugen und die Verbindung abbrechen.

Also die Variable Err zwischenspeichern und erst dann ausgeben, wenn die I2C-Verbindung beendet wurde.

Ansonsten: Sind an dem Pollin-Board Pullups an SCL/SDA?

Olle_Filzlaus
23.09.2010, 18:38
Wie? Du greifst per RS232 auf den I2C-EEPROM zu?

Ohje, was habe ich da den geschrieben. Hast recht. Die Fehler oder Ergebnissausgabe per RS232 geht. Per LCD geht nicht. Ich habe erst den I2C bus ausgelesen und anschließend wollte ich den Wert per LCD ausgeben.

Das Programm funzt halt bei RS232. Wenn ich an die selben Stelle den PRINT Befehl durch einen LCD Befehl ersetzte oder auch nur die Config des LCD Displays einbaue fragt er nicht mal den I2C Bus ab. Also habe ich die ganzen LCD Befehle weggelassen und es ging immer noch nicht. Erst als ich alles was mit dem Display zu tun hat rausnehme geht es.

Und ja, die Widerstände sind drin. Es geht auch alles per I2C. Halt nu icht in Kombo mit LCD :-(

Ist irgendwie merkwürdig. Habt ihr ähnliche Probleme?

thx Arno

peterfido
24.09.2010, 23:39
config lcdbus nutze ich nie..

Ich würde noch eine Hauptschleife einbringen. Ein paar Nops zwischen den I2C-Befehlen können nicht schaden.