Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Riesen Probem mit CCII Kategorie: Verschiedenes (von wema - 21.01.2008 0:09)
Als Antwort auf Riesen Probem mit CCII von Gregor - 20.01.2008 18:11

>
>
>
> [code]
> thread beep
> {
>  int d;
>  plm.settimebase(0,plm.BASE_800);
>  plm.setmode(0,0);
>  plm.setperiod(0,25000);
>  ports.set(8,-1);
>  loop
>  {
>  for d=1000...2750 step 20
>  {
>      plm.out(0,d);
>      sleep 10;
>  }
>  for d=0...1750 step 20
>  {
>      plm.out(0,2750-d);
>      sleep 10;
>  }
>  }
> }
>
>
> thread main
> {
> ports.set(8,-1);
> hwcom.init();
> hwcom.setspeed(hwcom.SPEED_9600);
> hwcom.print("HWCOM");
> ports.set(8,0);
> ports.set(8,-1);
> ports.set(8,0);
> ports.set(8,-1);
> ports.set(8,0);
> run beep;
> }
> [/code]


Hallo,

wenn ich mir Deinen Code so ansehe, frage ich mich, ob er wirklich so geplant ist:
Du wei�t, das ein MAIN-Thread immer wieder in einer schleife ausgeführt wird, wenn Du ihn nicht vorher
mit dem HALT-Befehl anhälst !? Bei Deinem Code hei�t dies, das sämtliche Befehle innerhalb der
geschweiften Klammern erneut aufgerufen werden. Die HWCOM-Befehle ebenso wie die sehr schnelle
Folge von PORTS.SET. Ist dies wirklich so gedacht?
Au�erdem wird mit jedem erneuten durchlaufen auch der Task "Beep" unnötigerweise mit RUN
"gestartet" (ich wei�, nicht wirklich gestartet, sondern nur die Priorität gesetzt), aber eben auch
unnötigerweise, den innerhalb des PEEP-Threads ist eine LOOP-Schleife, welche eben niemals
endet!

Mein Programm-Vorschlag:

function beep()
  {
   int d;
   ports.set(8,-1);
   loop
   {
      for d=1000...2750 step 20
      {
       plm.out(0,d);
       sleep 10;
      }
      for d=0...1750 step 20
      {
       plm.out(0,2750-d);
       sleep 10;
       }
     }
   }
 
   thread main
   {
   plm.settimebase(0,plm.BASE_800);
   plm.setmode(0,0);
   plm.setperiod(0,25000);

   ports.set(8,-1);
   hwcom.init();
   hwcom.setspeed(hwcom.SPEED_9600);
   hwcom.print("HWCOM");
   ports.set(8,0);
   sleep (500);
   ports.set(8,-1);
   sleep (500);
   ports.set(8,0);
   sleep (500);
   ports.set(8,-1);
   sleep (500);
   ports.set(8,0);
   beep();
   halt;
  }



Ich hoffe, ich haben keinen Programmierfehler gemacht, da der Code nicht getestet wurde, sondern nur
hier so abgetippt. Aber als Anleitung sollte er Dir helfen.

Viel Erfolg,
wema


    Antwort schreiben


Antworten: