Task/Process?

  • 1
  • 2
  • Page 1 of 2
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Task/Process?

 · 
Posted: 17.03.2018 - 12:34  ·  #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
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 13:19  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 14:11  ·  #3
Hello Merlin,

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

Harry
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 14:47  ·  #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
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 15:18  ·  #5
I stand corrected.
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 17:08  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 18:13  ·  #7
Hallo Harry,

ich habe keine Idee dazu :angry5:

rolf
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Task/Process?

 · 
Posted: 17.03.2018 - 20:00  ·  #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
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   136   150 · Page-Gen-Time: 0.022068s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI