PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit LCD Display



Tredory
24.02.2009, 21:53
Hi, ich habe nun das Pollin Eval Board und das Addon Board, und da die letzten Tage alles mögliche mit rumprobiert.

Nun Mache ich gerade ein Led Lauflicht, und es sollen Daten auf dem Display ausgegeben werden:


$regfile = "m32def.dat"
'Taktfrequenz 16MHz
$crystal = 16000000
'Baudrate für UART
$baud = 9600
'Setzt den verfügbaren Speicher für den Frame
$framesize = 32
'Setzt den verfügbaren Speicher für den Software Stack
$swstack = 32
'Setzt den verfügbaren Speicher für den Hardware Stack
$hwstack = 32

'**************************************
'********* Variablen **********
'**************************************
Declare Sub Tastenabfrage
Declare Sub Lauflicht1
Declare Sub Lauflicht2
Declare Sub Lauflicht3
Declare Sub Lauflicht4

Dim Modus As Integer
Dim Speed As Integer
Dim I As Integer

'**************************************
'********* Namenszuweisung **********
'**************************************
Lcd_db4 Alias Porta.4
Lcd_db5 Alias Porta.5
Lcd_db6 Alias Porta.6
Lcd_db7 Alias Porta.7
Lcd_e Alias Portb.0
Lcd_rs Alias Portb.1

Led1 Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
Led7 Alias Portc.6
Led8 Alias Portc.7
Led9 Alias Portd.5
Led10 Alias Portd.6

Taste1port Alias Porta.0
Taste1 Alias Pina.0
Taste2port Alias Porta.1
Taste2 Alias Pina.1
Taste3port Alias Porta.2
Taste3 Alias Pina.2
Taste4port Alias Porta.3
Taste4 Alias Pina.3

Audio Alias Portd.7

Schrittmotorschalter1port Alias Portb.3
Schrittmotorschalter1 Alias Pinb.3
Schrittmotorschalter2port Alias Portb.2
Schrittmotorschalter2 Alias Pinb.2
Schrittmotor1 Alias Portb.4
Schrittmotor2 Alias Portd.2
Schrittmotor3 Alias Portd.3
Schrittmotor4 Alias Portd.4


'**************************************
'********* LCD-Konfiguration **********
'**************************************
'LCD-Pins konfigurieren
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
'LCD als 16x2 Zeichen konfigurieren
Config Lcd = 16 * 2
'LCD wird im 4-Bit-Modus betrieben
Config Lcdbus = 4


'**************************************
'********* Port-Konfiguration *********
'**************************************
'LED-Ausgänge
Config Led1 = Output
Config Led2 = Output
Config Led3 = Output
Config Led4 = Output
Config Led5 = Output
Config Led6 = Output
Config Led7 = Output
Config Led8 = Output
Config Led9 = Output
Config Led10 = Output
'Tasteneingang
Config Taste1port = Input
Config Taste2port = Input
Config Taste3port = Input
Config Taste4port = Input
'Audio-Ausgang (Summer und NF Verstärker)
Config Audio = Output
'Schrittmotorplatine Ein/Ausgänge
Config Schrittmotor1 = Output
Config Schrittmotor2 = Output
Config Schrittmotor3 = Output
Config Schrittmotor4 = Output
Config Schrittmotorschalter1port = Input
Config Schrittmotorschalter2port = Input


'**************************************
'******** LCD initialisieren **********
'**************************************
Initlcd
'Display löschen
Cls

'Anfang Eigendliches Programm

Modus = 1
Speed = 50

Locate 1 , 1
Lcd "LED Lauflicht von"
Locate 2 , 1
Lcd "Jens Roeckert"
While Taste1 = 0
Wend
Cls
Locate 1 , 1
Lcd "Mit den Tastern"
Locate 2 , 1
Lcd "1-4 die Art des"
While Taste1 = 0
Wend
Cls
Locate 1 , 1
Lcd "Lauflichtes"
Locate 2 , 1
Lcd "einstellen."
While Taste1 = 0
Wend
Locate 1 , 1
Lcd "LED Lauflicht"

'Endlosschleife
Do

Gosub Tastenabfrage

If Modus = 1 Then
Locate 2 , 2
Lcd "Modus 1"
Gosub Lauflicht1
End If

If Modus = 2 Then
Locate 2 , 2
Lcd "Modus 2"
Gosub Lauflicht2
End If

If Modus = 3 Then
Locate 2 , 2
Lcd "Modus 3"
Gosub Lauflicht3
End If

If Modus = 4 Then
Locate 2 , 2
Lcd "Modus 4"
Gosub Lauflicht4
End If

Loop

'Programmende
End


Sub Tastenabfrage

If Taste1 = 1 Then
Modus = 1
End If

If Taste2 = 1 Then
Modus = 2
End If

If Taste3 = 1 Then
Modus = 3
End If

If Taste4 = 1 Then
Modus = 4
End If

End Sub

Sub Lauflicht1

Led1 = 1
Waitms Speed
Led1 = 0
Led2 = 1
Waitms Speed
Led2 = 0
Led3 = 1
Waitms Speed
Led3 = 0
Led4 = 1
Waitms Speed
Led4 = 0
Led5 = 1
Waitms Speed
Led5 = 0
Led6 = 1
Waitms Speed
Led6 = 0
Led7 = 1
Waitms Speed
Led7 = 0
Led8 = 1
Waitms Speed
Waitms Speed
Led8 = 0
Led7 = 1
Waitms Speed
Led7 = 0
Led6 = 1
Waitms Speed
Led6 = 0
Led5 = 1
Waitms Speed
Led5 = 0
Led4 = 1
Waitms Speed
Led4 = 0
Led3 = 1
Waitms Speed
Led3 = 0
Led2 = 1
Waitms Speed
Led2 = 0
Led1 = 1
Waitms Speed

End Sub

Sub Lauflicht2

Led1 = 1
Waitms Speed
Led2 = 1
Waitms Speed
Led3 = 1
Waitms Speed
Led4 = 1
Waitms Speed
Led5 = 1
Waitms Speed
Led6 = 1
Waitms Speed
Led7 = 1
Waitms Speed
Led8 = 1
Waitms Speed
Led1 = 0
Waitms Speed
Led2 = 0
Waitms Speed
Led3 = 0
Waitms Speed
Led4 = 0
Waitms Speed
Led5 = 0
Waitms Speed
Led6 = 0
Waitms Speed
Led7 = 0
Waitms Speed
Led8 = 0
Waitms Speed

End Sub

Sub Lauflicht3

Led1 = 1
Led8 = 1
Waitms Speed
Led1 = 0
Led8 = 0
Led2 = 1
Led7 = 1
Waitms Speed
Led2 = 0
Led7 = 0
Led3 = 1
Led6 = 1
Waitms Speed
Led3 = 0
Led6 = 0
Led4 = 1
Led5 = 1
Waitms Speed
Led4 = 0
Led5 = 0
Waitms Speed
Led4 = 1
Led5 = 1
Waitms Speed
Led4 = 0
Led5 = 0
Led3 = 1
Led6 = 1
Waitms Speed
Led3 = 0
Led6 = 0
Led2 = 1
Led7 = 1
Waitms Speed
Led2 = 0
Led7 = 0
Led1 = 1
Led8 = 1
Waitms Speed
Led1 = 0
Led8 = 0
Waitms Speed

End Sub

Sub Lauflicht4

For I = 0 To 255
Portc = I
Waitms Speed
Next I

End Sub

Im mitgelieferten Beispielprogramm funktionierte das Display. Der einzigste unterschied zum jetziegen ist da die pinbelegung, vorher waren die leitungen db4-db7 an Pb2-Pb5 und e an pb6 und RS an pb7.

Nun sind sie per jumper auf dem board an die Pinne gelegt, wie es in den Alias zuweisungen im programm ersichtlich ist.
Masse ist natürlich auch an den anderen pinnen.

Das Programm läuft und macht was es soll, nur das auf dem Display nichts angezeigt wird ??? die beleuchtung ist an, der Kontrastregler steht auch passend.

Warum gehts im Beispielproggramm und in dem nu nicht ?

Hier ist nochmal der Code vom Beispielprogramm:


'************************************************* **************************************
'
'ACHTUNG!
'Sie handeln auf eigene Gefahr!
'Bei diesen Daten handelt es sich um Beispielanwendungen die nicht für den produktiven
'Einsatz geeignet sind.
'Pollin Electronic gibt keine Garantien irgendeiner Art, weder ausdrücklich
'noch implizit, einschließlich unbegrenzt aller Garantien der Verwendbarkeit
'dieser Daten für einen bezeichneten oder nicht bezeichneten Zweck.
'Pollin Electronic ist nicht haftbar für jedwede Folgeschäden die aufgrund
'der Benutzung dieser Daten entstehen. Dies gilt auch dann, wenn
'Pollin Electronic von der Möglichkeit eines solchen Schadens unterrichtet worden ist.
'
'Testprogramm fuer ATTiny2313, ATMega8, ATMega16, ATMega32,
'ATMEL Evaluations-Board Best.Nr. 810 038 und
'ATMEL Addon-Board V1.0 Best.Nr. 810 053
'************************************************* **************************************


$regfile = "m32def.dat"
'Taktfrequenz 1MHz
$crystal = 16000000
'Baudrate für UART
$baud = 2400

#if _chip = 0 'Tiny 2313
Lcd_db4 Alias Portb.2
Lcd_db5 Alias Portb.3
Lcd_db6 Alias Portb.4
Lcd_db7 Alias Portb.5
Lcd_e Alias Portb.6
Lcd_rs Alias Portb.7
Led5 Alias Portd.3
Led6 Alias Portd.4
Led7 Alias Portd.5
Led8 Alias Portd.6
Ir Alias Pind.2
Irport Alias Portd.2
#endif

#if _chip = 17 'Mega8
Lcd_db4 Alias Portb.0
Lcd_db5 Alias Portb.1
Lcd_db6 Alias Portb.2
Lcd_db7 Alias Portb.3
Lcd_e Alias Portb.4
Lcd_rs Alias Portb.5
Led1 Alias Portc.2
Led2 Alias Portc.3
Led3 Alias Portc.4
Led4 Alias Portc.5
Led5 Alias Portd.3
Led6 Alias Portd.4
Led7 Alias Portd.5
Led8 Alias Portd.6
Taste1port Alias Portc.1
Taste1 Alias Pinc.1
Summer Alias Portd.7
Ir Alias Pind.2
Irport Alias Portd.2
Nf Alias Portc.0
#endif

#if _chip = 18 'Mega16
Lcd_db4 Alias Portb.2
Lcd_db5 Alias Portb.3
Lcd_db6 Alias Portb.4
Lcd_db7 Alias Portb.5
Lcd_e Alias Portb.6
Lcd_rs Alias Portb.7
Led1 Alias Porta.2
Led2 Alias Porta.3
Led3 Alias Porta.4
Led4 Alias Porta.5
Led5 Alias Portd.3
Led6 Alias Portd.4
Led7 Alias Portd.5
Led8 Alias Portd.6
Taste1port Alias Porta.1
Taste1 Alias Pina.1
Summer Alias Portd.7
Ir Alias Pind.2
Irport Alias Portd.2
Nf Alias Porta.0
#endif

#if _chip = 23 'Mega32
Lcd_db4 Alias Portb.2
Lcd_db5 Alias Portb.3
Lcd_db6 Alias Portb.4
Lcd_db7 Alias Portb.5
Lcd_e Alias Portb.6
Lcd_rs Alias Portb.7
Led1 Alias Porta.2
Led2 Alias Porta.3
Led3 Alias Porta.4
Led4 Alias Porta.5
Led5 Alias Portd.3
Led6 Alias Portd.4
Led7 Alias Portd.5
Led8 Alias Portd.6
Taste1port Alias Porta.1
Taste1 Alias Pina.1
Summer Alias Portd.7
Ir Alias Pind.2
Irport Alias Portd.2
Nf Alias Porta.0
#endif

Dim Username As String * 20
Dim W As Byte
Dim I As Byte
Dim Adresse As Byte
Dim Kommando As Byte

'**************************************
'********* LCD-Konfiguration **********
'**************************************
'LCD als 16x2 Zeichen konfigurieren
Config Lcd = 16 * 2
'LCD-Pins konfigurieren
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
'LCD wird im 4-Bit-Modus betrieben
Config Lcdbus = 4
'**************************************
'********* Port-Konfiguration *********
'**************************************
'LED-Ausgänge
#if _chip <> 0
Config Led1 = Output
Config Led2 = Output
Config Led3 = Output
Config Led4 = Output
#endif
Config Led5 = Output
Config Led6 = Output
Config Led7 = Output
Config Led8 = Output
'Tasteneingang
#if _chip <> 0
Config Taste1port = Input
#endif
'IR-Eingang
Config Rc5 = Ir
Irport = 1
'NF-Ausgang
#if _chip <> 0
Config Nf = Output
#endif
'**************************************
'******** LCD initialisieren **********
'**************************************
Initlcd
'Display löschen
Cls
#if _chip <> 0
'**************************************
'*** 3x Test-Tonausgabe auf Summer ****
'**************************************
'Uart-TextAusgabe
Print "Summertest"

For I = 1 To 3
'Displayposition Zeile 1, Position 1
Locate 1 , 1
'Display-Textausgabe
Lcd "Summertest"
'Displayposition Zeile 2, Position 1
Locate 2 , 1
'Display-Textausgabe
Lcd "Durchgang "
Lcd I

'eigentliche Soundausgabe auf den Summer
For W = 20 To 250
Sound Summer , 2 , W
Next
Next
Cls
'**************************************
'** 3x Test-Tonausgabe NF-Verstärker **
'**************************************
Cls
'Uart-TextAusgabe
Print "NF-Verstaerker-Test"

For I = 1 To 3
'Displayposition Zeile 1, Position 1
Locate 1 , 1
'Display-Textausgabe
Lcd "NV-Verstaerker"
'Displayposition Zeile 2, Position 1
Locate 2 , 1
'Display-Textausgabe
Lcd "Testlauf "
Lcd I

'eigentliche Soundausgabe
For W = 20 To 250
Sound Nf , 2 , W
Next
Next
#endif
'**************************************
'************* LED-Test ***************
'**************************************
Cls
Print "LED-Test"
Print "LEDs an"

Locate 1 , 1
Lcd "LED-Test"
Locate 2 , 1
Lcd "LEDs an"
#if _chip <> 0
Set Led1
Set Led2
Set Led3
Set Led4
#endif
Set Led5
Set Led6
Set Led7
Set Led8
Wait 2
#if _chip <> 0
Reset Led1
Reset Led2
Reset Led3
Reset Led4
#endif
Reset Led5
Reset Led6
Reset Led7
Reset Led8
Locate 2 , 1
Lcd "LEDs aus"
Print "LEDs aus"
Wait 1
#if _chip <> 0
'**************************************
'************* Tasten-Test ************
'**************************************
Cls
Print "Tasten-Test"

Locate 1 , 1
Lcd "Tasten-Test"

For I = 1 To 3
Led8 = 1
Led7 = 0
Locate 2 , 1
Lcd "Taste 1 druecken"
Print "Taste 1 druecken"
While Taste1 = 0
Wend
Led8 = 0
Led7 = 1
Locate 2 , 1
Lcd "Taste1 gedrueckt"
Print "Taste1 gedrueckt"
While Taste1 = 1
Wend
Next
Reset Led1
Reset Led7
#endif
'**************************************
'************ UART-Test ***************
'**************************************
Cls
Locate 1 , 1
Lcd "UART-Test"
Locate 2 , 1
Lcd "Namen eingeben"
'Auf Benutzerdaten über serielle Schnittstelle warten
'Ende wird erkannt durch CR+LF
Input "Wie ist Ihr Name?: " , Username
Print "Hi " ; Username ; " auch die UART-Kommunikation funktioniert"
Cls
Locate 1 , 1
Lcd "Hi "
Lcd Username
Wait 2
'**************************************
'************ IR-Test *****************
'**************************************
Enable Interrupts
Cls
Locate 1 , 1
Lcd "RC5 IR-Test"
Print "RC5 IR-Test"
I = 3
Do
'Auf RC5-Kommando warten
Getrc5(adresse , Kommando)
'test ob Adresse gültig ist
If Adresse < 255 Then
'falls ja, dann anzeigen
Kommando = Kommando And &B01111111 ' Togglebit löschen
Cls
Locate 1 , 1
Lcd "RC5-Kommando "
Lcd Kommando
Print "RC5-Kommando " ; Kommando
I = I - 1
End If
If I = 0 Then Exit Do
Waitms 200
Loop
Disable Interrupts
'**************************************
'***** Displayausgabe Test beendet ****
'**************************************
Print "Testlauf beendet"
Cls
Locate 1 , 1
Lcd "Testlauf beendet"

'Endlosschleife
Do
Loop

'Programmende
End



Hoffe ihr könnt mir da was zu sagen, ich kann da nichts finden. Die Leds tatens erst auch nicht alle, bis ich rausgefunden habe das ich in den fusebits das Jtag ausschalten muss. Ist da evt noch etwas weshalb das display nun nichts ausgibt >?


Danke schonmal

Tredory
25.02.2009, 15:03
Keiner eine Idee, ich bin da immernoch nicht weiter :( wenn ich das Display wieder an die im Beispielprogramm angegebenen pinne lege funktionierts, aber da dort extra ein jumperfeld ist, um es mit dem pinnen von port a und b zu verbinden, möchte ich das natürlich benutzen. Das kann doch nicht sein das das da nicht Funktioniert.

wodka
25.02.2009, 16:52
Sind die dann auch mit zu PortA gewandert?

Lcd_e Alias Portb.0
Lcd_rs Alias Portb.1

Sonst tippe ich auch auf Fusebits!

Tredory
25.02.2009, 17:23
nein die sind auf portb.0 und portb.2

Da is auch der Fehler gewesen, eine etwas irritierende beschriftung auf der Platiene, habe da portb.1 mit portb.2 verwechselt, nun funktionierts.
Also er zeigt was an, leider nicht das was ich will :(
Er fängt immer erst bei der zweiten position an zu schreiben, überschreibt alte sachen nicht richtig, da muss ich mal noch rumprobieren.