Task/Process?

  • 1
  • 2
  • Seite 1 von 2
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2160
Dabei seit: 03 / 2003
Betreff:

Task/Process?

 · 
Gepostet: 17.03.2018 - 12:34 Uhr  ·  #1
Hallo @ all,

ich habe da etwas, was ich nicht verstehe. Ich habe auch schon eine Lösung dafür, aber ich würde es gerne verstehen.

Wenn ich das in meinem Programm drin hab, hängt es sich nach 2-30 Sekunden komplett auf:
Code
Task Keyboard(iData, 2, suspended);
  Begin
    If not TestDeviceLock(TWI_DevLockC) then
      Schedule;
      EndIf;
    TWIinpC(PCA9554, SwTWI);          
  End Keyboard;

Es wird alle 200ms ein Display auch via TWI PortC refresht.
Wenn ich das ganze aber als Process ausführe, funktioniert es. Wieso?
Hab auch schon den TaskStack und Frame auf $3FF hoch gedreht, jedoch ohne Veränderung.

Gruss
Harry
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1483
Dabei seit: 03 / 2005
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 13:19 Uhr  ·  #2
A task must run entirely within one time slot and restarts at the beginning next time. I don't think schedule is appropriate in a task.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2160
Dabei seit: 03 / 2003
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 14:11 Uhr  ·  #3
Hello Merlin,

this task works without problems in a program with Mega32u4. Now with a XMega256A3 i have problems.

Harry
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 14:47 Uhr  ·  #4
Hello Merlin,

Schedule is allowed in a Task.
It must be working....

@Harry
Try this. It is nearly the same.
Code
Task Keyboard(iData, 2, suspended); 
  Begin 
    If TestDeviceLock(TWI_DevLockC) then 
      TWIinpC(PCA9554, SwTWI);           
    endif;
  End Keyboard;

If this Task is the only part of the system which accesses
the TWI_C then there is no need for a DeviceLock here.
rolf
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1483
Dabei seit: 03 / 2005
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 15:18 Uhr  ·  #5
I stand corrected.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2160
Dabei seit: 03 / 2003
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 17:08 Uhr  ·  #6
Hallo Rolf,

ich habe es schon auf einen Prozess geändert und kann so auch ein Sleep(self,5) gut einfügen, so daß für die Displayausgabe genug Zeit bleibt. Also der Task ist nicht das einzige, was auf den TWI_C zugreift.

Mich würde nur interessieren, wieso sich das in einem Mega32U4 nicht aufhängt (das Programm solltest du kennen: Mirf-Scan ;) ).

Gruss
Harry
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 18:13 Uhr  ·  #7
Hallo Harry,

ich habe keine Idee dazu :angry5:

rolf
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Task/Process?

 · 
Gepostet: 17.03.2018 - 20:00 Uhr  ·  #8
Hallo Harry,

i.A. ist es keine gute Idee von diversen Ecken auf eine Peripherie
zuzugreifen. Ich benutze da öfters mal eine Pipe. Ein zentraler
Zugriff. Verteilen der Daten etc über eine Pipe.

rolf
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   136   150 · Page-Gen-Time: 0.032608s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI