Hallo Roto!
Momentan weiß ich nicht, wo dein Problem liegt?
Du hast fix und fertige Ansteuerroutinen für das Display als separate LIB von StevieL !
Zusätzlich hast du eine passende "Declare-Datei" von StevieL, die dir das Deklarieren aller Subroutinen abnimmt!
Obendrein hast du sogar noch ein komplettes Demoprogramm mit diversen Funktionen von StevieL !
Dann hat Dirk dir schon den genauen Ablauf für den Touch ausführlich erklärt.
Ich weiß jetzt gar nicht mehr, was ich da noch schreiben soll?
Aus dem Grunde versuche ich es jetzt mit dem kleinen Testprogramm vom letzen Mal, dass ich um eine kleine Touch-Funktion erweitert habe.
Ich hoffe, der Programmcode funktioniert auch!
Schließlich habe ich ihn jetzt nur mal ebenso zusammen geschrieben, ohne zu testen.
Wenn alles funktioniert, dann sollte zum Test des Touch-Panles das Display oben rot und unten gelb gefüllt sein und das Programm wartet auf eine Berührung.
Jenachdem welches der beiden farbigen Felder du dann mit dem Finger berührst, erscheint eine schriftliche Rückmeldung für "oben" oder "unten".
Ich hoffe, es klappt alles soweit und du hast damit das Prinzip verstanden.
Sollten dir die ganzen Call-Aufrufe mit der LIB zu "aufwendig" sein, dann kannst du auch gerne mal meine Variante ausprobieren.
Letztlich arbeiten aber beide Versionen vom Prinzip her identisch.
Grüße,
Cassio
Hier nun das erweiterte Testprogramm:
Momentan weiß ich nicht, wo dein Problem liegt?
Du hast fix und fertige Ansteuerroutinen für das Display als separate LIB von StevieL !
Zusätzlich hast du eine passende "Declare-Datei" von StevieL, die dir das Deklarieren aller Subroutinen abnimmt!
Obendrein hast du sogar noch ein komplettes Demoprogramm mit diversen Funktionen von StevieL !
Dann hat Dirk dir schon den genauen Ablauf für den Touch ausführlich erklärt.
Ich weiß jetzt gar nicht mehr, was ich da noch schreiben soll?
Aus dem Grunde versuche ich es jetzt mit dem kleinen Testprogramm vom letzen Mal, dass ich um eine kleine Touch-Funktion erweitert habe.
Ich hoffe, der Programmcode funktioniert auch!
Schließlich habe ich ihn jetzt nur mal ebenso zusammen geschrieben, ohne zu testen.
Wenn alles funktioniert, dann sollte zum Test des Touch-Panles das Display oben rot und unten gelb gefüllt sein und das Programm wartet auf eine Berührung.
Jenachdem welches der beiden farbigen Felder du dann mit dem Finger berührst, erscheint eine schriftliche Rückmeldung für "oben" oder "unten".
Ich hoffe, es klappt alles soweit und du hast damit das Prinzip verstanden.
Sollten dir die ganzen Call-Aufrufe mit der LIB zu "aufwendig" sein, dann kannst du auch gerne mal meine Variante ausprobieren.
Letztlich arbeiten aber beide Versionen vom Prinzip her identisch.
Grüße,
Cassio
Hier nun das erweiterte Testprogramm:
Code:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 500 'für Test
$swstack = 500
$framesize = 250
$lib "XV-TFT.lib"
Ddra = &B0010_0000
Porta = &B1101_1111
Ddrc = &B0000_00000
Portc = &B1111_1111
Ddrd = &B0000_0001
Portd = &B1111_1110
Ddre = &B0000_0001
Porte = &B1111_1110
Ddrf = &B0000_0000
Portf = &B1111_1111
'SPI steuert das Display
'PG0=CS\ (Output, Low)
'PB1=SCK (Output, Low)
'PB3=MISO (Input, High)
'PB2=MOSI (Output, Low)
'PG1=BUSY\ (Input, High)
'PG7=TINT\ (Input, High)
Ddrb = &B0000_0110
Portb = &B1111_1001
Ddrg = &B0000_00001
Portg = &B1111_1110
'############################################################################################
'------------------------------------------------------------------------------
' SPI Definition für das Display
'------------------------------------------------------------------------------
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 16 , Noss = 1
Spiinit
$include "init_xv_tft.bas" 'Die Routinen der Library einbinden
'##################################################################################################
' Alias Definitionen
' Pins an eigene Beschaltung anpassen aber bitte nicht umbenennen, da
' die Library diese Aliase (Display_cs, Display_busy und Display_tint) verwendet.
'##################################################################################################
Display_cs Alias Portg.0 'CS_Pin
Display_busy Alias Ping.1 'Busy_Pin
Display_tint Alias Ping.7 'Touchpanel_Interrupt
Set Display_busy
Set Display_cs
'------------------------------------------------------------------------------
' Variablen Definitionen
'------------------------------------------------------------------------------
Dim I As Byte
'Programmbeginn
Wait 1
Bitwait Display_busy , Set 'Auf Initialisierung Display warten
Call Touchpanel_setconfig(&H0000001)
Call Setdisplaymode(displaymode_portrait)
Call Setbacklightintensity(255) 'Max. Backlight Brightness
Call Set_font(1)
Do
Call Setpencolor(0 , 0 , 0)
Call Setbrushcolor(255 , 255 , 255)
Call Fillscreen_brushcolor() 'Clear Screen
Call Displaytext(70 , 120 , "xv-display.de")
Call Displaytext(65 , 140 , "Display Module")
Call Set_font(0)
Call Displaytext(15 , 160 , " Beispielprogramm für Roto ")
Call Set_font(1)
Wait 3
Call Fillscreen_brushcolor()
Call Setpencolor(255 , 255 , 255)
Call Setbrushcolor(80 , 80 , 200)
Call Drawrect_brushcolorfill(2 , 2 , 237 , 16)
Call Displaytext(5 , 5 , "Andere Schriftfarbe")
Wait 3
Call Setbrushcolor(0 , 0 , 0)
Call Fillscreen_brushcolor() 'Clear Screen
Call Setbrushcolor(255 , 0 , 0)
Call Drawrect_brushcolorfill(1 , 1 , 238 , 154)
Call Setbrushcolor(255 , 255 , 0)
Call Drawrect_brushcolorfill(1 , 164 , 238 , 318)
Call Setpencolor(255 , 255 , 255)
Call Displaytext(10 , 10 , "Touch it!")
Call Setbrushcolor(0 , 0 , 0)
While Display_tint = 1
NOP
Wend
Call Touchpanel_readevent()
If T_event.0 = 1 Then
Call Touchpanel_readdown()
If Ywert < 159 Then
Call Setpencolor(255 , 0 , 0)
Call Displaytext(80 , 73 , "Oben")
Else
Call Setpencolor(255 , 255 , 0)
Call Displaytext(70 , 237 , "Unten")
End If
Else
End If
Wait 2
Loop
End