closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

Serielle Touchabfrage

XMega256A3 Serieller Empfang

Wartbichler offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 58
Posts: 10
Registered: 12 / 2018
Private message
Subject: Serielle Touchabfrage  -  Posted: 06.01.2019 - 17:02   -  
Grüß Gott an alle,
ich habe wieder mit dem XMega256A3 und dem Touch Display ein für mich unlösbares Problem.
Einerseits muss ich die Antwort vom Display mit einem Interrupt abfangen und auswerten,
und fallweise gleichzeitig im Pollingbetrieb die Koordinaten vom Touch von der gleiche Schnittstelle empfangen.

In Bascom wird das folgend gelöst:
Die Interrupt Routine für Acknowledge:

Rs232_data_int: Rs232_data = Inkey(#2)
If Touch = 0 Then
Select Case Rs232_data
Case &H06 :
Set Lcd_ack
Case &H15 :
End Select
Else
Set Lcd_ack
End If
Return

und die Routine für die Polling Abfrage:

Sub Ilcd_get_touch()
Touch = 1 'Touchdaten
Print #2 , Chr(&H6f) ; Chr(&H04) ; 'Touchstatus
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack
Status_touch = Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack

If Status_touch = 1 Or Status_touch = 3 Then
Print #2 , Chr(&H6f) ; Chr(&H05) ; 'Touch x,y
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = X_touch + Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Y_touch + Rs232_data
Touch = 0
Reset Lcd_ack
Else
Y_touch = 65535 : X_touch = 65535
End If
End Sub
Ich hoffe Ihr könnt einen Hobbyprogrammierer und Neuling helfen. LG
This post has been edited 1-times. Last edit: 22.01.2019 - 13:35 by Wartbichler.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 17:34   -  
Hallo,

kannst du mir/uns verraten, wie und in welcher Form die Touch-Daten rein kommen?

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
Wartbichler offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 58
Posts: 10
Registered: 12 / 2018
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 18:04   -  
Hallo, folgend der Handbuchauszug vom Display. Ich hoffe ihr könnt damit was anfangen.

GetTouch(mode)
cmd 6F(hex) or o(ascii) : Command header Byte
mode
00hex : Wait until any touch activity
01hex : Wait until Touch press
02hex : Wait until Touch release
03hex : Wait until Touch Moving
04hex : Get Touch status
05hex : Get Touch coordinates
Response x_coord(msb:lsb), y_coord(msb:lsb)
x_coord 2 byte value for x-coordinates of the touch screen.
y_coord 2 byte value for y-coordinates of the touch screen.
For mode = 04hex only, returns the following:
0 : No Touch Activity
1 : Touch Press
2 : Touch Release
3 : Touch Moving

Description
This command returns the x and y coordinate of a touch to the screen for 00hex to 03hex and 05hex.
Note that for “mode = 05hex” the coordinates relate to the last touch activity i.e. they will be
same as the coordinates returned to the touch command with mode 00hex - 03hex or coordinates
detected for the touch command with “mode = 04hex” when touch activity occurred.
Serial Example Command Data:
6Fhex, 04hex
PICASO-SGC Response:
02hex
Get Touch Status, Touch release reported.
4DSL Example Refer to the Touch.4DScript sample script file.©
Lg Hans
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 18:10   -  
Aus diesem und dem ersten Post vermute ich, daß die Daten via serieller Schnittstelle rein kommen?
Was hältst du von einem Process?
Code

Process ReadTouch($100,$100:iData);
  Begin
    WaitPipe(RXBufferE0);                        // wait buffer
    Lock(self);
    Read(SerInpE0, Temp);   
    .
    .
    .
    UnLock(self);
  End ReadTouch;


Natürlich Processe importieren und im Define den notwendigen Eintrag machen.

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
Wartbichler offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 58
Posts: 10
Registered: 12 / 2018
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 18:39   -  
Hallo Harry,
zum Verständnis für einen Nichtschwimmer wie ich:
WaitPipe(RXBufferXX) - wartet bis keine Daten mehr von der Ser. Schnittstelle ankommen?
Lock(self) - verhindert das der Process solange nicht verlassen wird bis dieser abgearbeitet ist?
Aufgerufen wird der Process wie eine Procedure?
LG Hans
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 20:02   -  
Hi Hans,

WaitPipe wartet bis Daten da sind.
Lock verhindert, daß der Scheduler den Process abbricht und an einen anderen oder das Hauptprogramm die Rechenzeit abgibt.
Ein Process wird nicht aufgerufen, er läuft im "Hintergrund" zyklisch immer durch. Quasi ein parallel arbeitendes Programm.

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
This post has been edited 1-times. Last edit: 06.01.2019 - 20:04 by Harry.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 1015
Registered: 02 / 2009
Homepage Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 20:04   -  
Quote by Wartbichler

Hallo Harry,
zum Verständnis für einen Nichtschwimmer wie ich:
WaitPipe(RXBufferXX) - wartet bis keine Daten mehr von der Ser. Schnittstelle ankommen?
Lock(self) - verhindert das der Process solange nicht verlassen wird bis dieser abgearbeitet ist?
Aufgerufen wird der Process wie eine Procedure?
LG Hans


Hallo Wartbichler,

nicht ganz. Waitpipe legt den Process schlafen bis Daten im Buffer ankommen.
Damit verschwendest Du keine Rechenzeit mit einen Polling-System.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 20:05   -  
Danke Thorsten, das ist natürlich besser erklärt :)

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
Gunter offline
Administrator
Avatar
Gender: male
Location: GERMANY  Frankfurt Main / Germany
Age:
Posts: 1619
Registered: 02 / 2003
Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 20:20   -  
Hallo @all,

ich hab vor längerer Zeit mal versucht, das Mutitasking vom AVRco zu beschreiben.
Nicht was es da so alles gibt - das ist im Compiler Manual beschrieben, sondern
wie die einzelnen Elemente letztlich zusammen arbeiten.
Leider fehlen am Ende immer noch einige Kapitel.
Vielleicht kann mir auch jemand per PM bei diesen Kapitel helfen - ich weiss nicht so recht, was ich da schreiben soll.
Aus gegebenem Anlass stelle ich den Text doch mal hier ein. Gerne auch zur Diskussion !!!

Gruß
Gunter
You must be logged in or your permissions are to low to see this Attachment(s).
2 Dinge sind unendlich: das Universum und die menschliche Dummheit.
Aber bei dem Universum bin ich mir noch nicht ganz sicher
--
Albert Einstein

---
The concept of global warming was created by and for the Chinese in order to make U.S. manufacturing non-competitive
--
Donald J. Trump on Twitter
This post has been edited 1-times. Last edit: 06.01.2019 - 22:35 by Gunter.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 1015
Registered: 02 / 2009
Homepage Private message
Subject: Re: Themen  -  Posted: 06.01.2019 - 21:08   -  
Quote by Harry

Danke Thorsten, das ist natürlich besser erklärt :)

Harry


Ich glaube wir haben fasst zeitgleich die Anwort verfasst :-)

@Hallo Wartbichler;
Das Prozess- und Tasksystem vom AVRco ist extrem Leistungsfähig.

Die Doku von Gunter hat mir damals sehr geholfen meine Systeme aufzubauen, ich kann sie Dir nur sehr empfehlen. Und bei Fragen einfach hier im Forum schreiben.

Aber wie Harry bereits beschrieben hat, ist das der beste Weg. Durch den Buffer der Schnittstelle gehen Dir auch keine Daten verloren, hier musst Du nichts mit den Int. erstellen oder nutzen, das ist völlig unnötig. Alles was Du brauchst wird durch das Schedular-System in Verbindung mit dem Waitpipe erledigt.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Wartbichler offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 58
Posts: 10
Registered: 12 / 2018
Private message
Subject: Re: Themen  -  Posted: 07.01.2019 - 08:35   -  
Grüß Gott an alle,
ich werde am Abend nach der Arbeit gleich das gelernte probieren.
Nur eine letzte Frage: wenn der Scheduler die Kontrolle an das Main-Programm abgibt, läuft dieses zum Beispiel in einer Endlos Loop-Schleife weiter.
Es wird nicht jedesmal zum Beispiel InitPort aufgerufen.
Danke für alles und einen schönen Tag. LG Hans
go down go up
Gunter offline
Administrator
Avatar
Gender: male
Location: GERMANY  Frankfurt Main / Germany
Age:
Posts: 1619
Registered: 02 / 2003
Private message
Subject: Re: Themen  -  Posted: 07.01.2019 - 10:08   -  
Hallo Hans,

nein. Das Main Programm wird immer da fortgesetzt wo es unterbrochen wurde. Da Main immer eine Endlos-Schleife ist kommt es niemals wieder zur Initialisierung.
Etwas anderes ist es bei "normalen" Prozessen. Die können ein definiertes Ende haben und auch erreichen. In der Regel ist das der Befehl Schedule. Nur dann wird ein Prozess im nächsten Zyklus von Beginn gestartet.

Gruß,
Gunter
2 Dinge sind unendlich: das Universum und die menschliche Dummheit.
Aber bei dem Universum bin ich mir noch nicht ganz sicher
--
Albert Einstein

---
The concept of global warming was created by and for the Chinese in order to make U.S. manufacturing non-competitive
--
Donald J. Trump on Twitter
This post has been edited 1-times. Last edit: 07.01.2019 - 10:16 by Gunter.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 07.01.2019 - 10:38   -  
@Gunter: Deine pdf ist, bis auf ein paar Rechtschreib- und Satzbaufehler :D, hervorragend. Die letzten 2. Punkte fehlen halt noch.
Steht irgendwo noch was von "ein Process oder Task kann und wird niemals manuell aufgerufen"?

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
Gunter offline
Administrator
Avatar
Gender: male
Location: GERMANY  Frankfurt Main / Germany
Age:
Posts: 1619
Registered: 02 / 2003
Private message
Subject: Re: Themen  -  Posted: 07.01.2019 - 10:45   -  
Danke Harry.
Ich hab mittlerweile auch die Rechtschreibeprüfung mal laufen lassen.
Auch zu DeviceLock und Pipes ist mir was sinnvolles eingefallen.
Nur wozu ich bei einem uC Semaphore brauche ist mir schleierhaft.
Dazu hat rh eine PM. Ich will dieses Fragment jetzt mal zu Ende bringen.
Gruß,
Gunter
2 Dinge sind unendlich: das Universum und die menschliche Dummheit.
Aber bei dem Universum bin ich mir noch nicht ganz sicher
--
Albert Einstein

---
The concept of global warming was created by and for the Chinese in order to make U.S. manufacturing non-competitive
--
Donald J. Trump on Twitter
This post has been edited 1-times. Last edit: 07.01.2019 - 10:57 by Gunter.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: Themen  -  Posted: 07.01.2019 - 10:50   -  
Gerne Gunter,

ich stelle mich auch zum querlesen zur Verfügung :)

harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 20.06.2019 - 15:32