PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control<=>I2C<=> RN-KeyLCD Problem



E.G.O.
28.10.2005, 08:11
Hallo,

ich habe ein RN-Control V1.4 über den I2C-Bus mit dem RN-KeyLCD verbunden. Zum Programmieren verwende ich die Bascom Demo Version 1.11.7.7. Die Stromversorgung von beiden Boards wird über ein Netzgerät sicher gestellt welches an das RN-Control-Board angeschlossen ist. Das RN-KeyLCD bezieht seinen Strom über den I2C-Bus vom RN-Control-Board.

Bei erstmaligem erfolreichen Brennvorgang funktioniert das Programm vollständig. Nachdem ich jedoch die Stromversorgung wieder hergestellt habe bleibt die Anzeige statisch und verändert sich nicht mehr. Es kann aber auch vorkommen, dass nach dem Brennen der gleichen *.hex Datei das Programm nicht funktioniert. Kann mir jemand sagen woran das liegen könnte?

Ein weiteres Problem beschäftigt sich auch mit dem LCD-Display. Wenn das Programm läuft erscheinen plötzlich Anzeigensegmente an Stellen an denen eigentlich gar nichts stehen dürfte. So habe ich der vierten Zeile nur einen Text stehen der in der siebten Spalte beginnt. Jedoch schreibt das Display Dinge vorne dran, die da gar nicht hin gehören. Vielleicht hat jemand eine Idee oder eine Lösung wie man das Problem beseitigen kann.


Vielen Dank schon mal

E.G.O.



$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32

$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports für I2c
Config Sda = Portc.1


Declare Sub Rnlcd_curser(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Declare Function Rnlcd_getscan()as Word
Declare Sub Rnlcd_scanmodus(byval Ein As Byte) 'Tastenscanmodus ein/ausschalten

Const Schreiben = &H40
Const Lesen = &H41
'-------------------------------------------------------------------------------
Dim Stemp As String * 100
Dim Taste As Word
Dim I As Word

Wait 1 'warte bis LCD bereit
I2cinit


Rnlcd_clr

I = 120

Wait 1

Do

Rnlcd_curser 1 , 1
Rnlcd " E.G.O.-Ausbildung"

If I >= 100 Then

Rnlcd_curser 12 , 3
Rnlcd "s"

Else

Rnlcd_curser 11 , 3
Rnlcd " s"
End If

Rnlcd_curser 18 , 3
Rnlcd "#=+"
Rnlcd_curser 7 , 4
Stemp = "0 = Start"
Rnlcd Stemp

Taste = Rnlcd_getscan()
If Taste = 512 Then
I = I - 10

Elseif Taste = 2048 Then
I = I + 10
Else
Rnlcd_curser 1 , 3
Stemp = "*=- " + Str(i)
Rnlcd Stemp
End If

Waitms 400

Loop

End



'------------------------------------------------------------------------------

Sub Rnlcd_curser(byval Spalte As Byte , Byval Zeile As Byte) 'Curser setzen
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Schreiben , Befehle , 4
End Sub


Sub Rnlcd_clr() 'LCD löschen
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Schreiben , Befehle , 1
End Sub


Sub Rnlcd(byval Text As String) 'Ausgabebefehl
Local Le As Word
Le = Len(text)
I2csend Schreiben , Text , Le
End Sub


Function Rnlcd_getscan()as Word 'Scancode as Wort abfragen
Local Lscan As Byte
Local Hscan As Byte


I2cstart
I2cwbyte Lesen
I2crbyte Lscan , Ack
I2crbyte Hscan , Nack
I2cstop

If Hscan.7 = 1 Then 'ASCii Modus
Rnlcd_getscan = Lscan
Else
Rnlcd_getscan = Hscan * 256
Rnlcd_getscan = Rnlcd_getscan + Lscan
End If

End Function



Sub Rnlcd_scanmodus(byval Ein As Byte) 'Tastenmodus ein und ausschalten
Local Befehle As String * 3
Befehle = Chr(27) + Chr(119) + Chr(ein)
I2csend Schreiben , Befehle , 3
End Sub

Frank
28.10.2005, 10:42
Es könnte sein das der Spannungsregler von RN-Control etwas überlastet ist wenn kein Kühlkörper vorhanden ist. Oder aber die Spannung fällt am I2C Kabel etwas ab.
Empfehlenswert ist es RN-KeyLCD direkt mit der Batteriespannung zu versorgen und den eigenen Spannungsregler dort zu benutzen. Also entsprechendes Umjumpern nicht vergessen (siehe Doku).

Gruß Frank

Hellmut
28.10.2005, 10:49
Hallo

Bei mir hat die Spannungsversorgung der RN-KeyLCD über I2C auch nicht funktioniert. Als ich die RN-KeyLCD selber mit 12V versorgte funktionierte es.

E.G.O.
28.10.2005, 14:00
Hallo Leute vielen Dank ihr habt mir echt geholfen. Jetzt funktioniert es wunderbar. Kann dieses Forum nur empfehlen.


MfG

E.G.O.