Hallo

Ob man die Interrupts bei StopWatch-Abfragen generell sperren sollte hängt wohl in erster Linie von der geforderten Genauigkeit der Anwendung und dem gewählten Zeitintervall ab. Wenn man die Interrupts nicht sperren will, könnte man den Effekt auch mit einer kleinen Plausibilitätsprüfung vermeiden:

Code:
 #include "RP6RobotBaseLib.h"    // The RP6 Robot Base Library.

int main(void)
{
   initRobotBase();
   writeString_P("Do some LED stuff!\n");
   startStopwatch1();

   uint8_t runningLight = 9;
   uint16_t stopVal = 0;

   while(true)
   {
      stopVal = getStopwatch1();
      if(stopVal != getStopwatch1())
      	stopVal = getStopwatch1();
      	
      if (stopVal > 600)
      {
         writeInteger(getStopwatch1(), DEC);
         writeChar('\n');
         writeInteger(stopVal, DEC);
         writeChar('\n');
         writeChar('\n');

         setLEDs(runningLight);
         runningLight <<= 1;
         if(runningLight > 36)
            runningLight = 9;
         setStopwatch1(0);
      }

   }

   return 0;
}
Entweder stört der Interrupt die erste Zuweisung oder die If-Abfrage oder er tritt dazwischen auf. In allen Fällen wird dann die zweite Zuweisung nicht mehr gestört sein. Oder der Interrupt stört gar nicht, dann ist schon die erste Zuweisung erfolgreich gewesen.

Oder allgemein:
Code:
 #include "RP6RobotBaseLib.h"    // The RP6 Robot Base Library.

int main(void)
{
   initRobotBase();
   startStopwatch1();

   while(true)
   {
      if ((getStopwatch1() > 600) && (getStopwatch1() > 600))
      {
         writeInteger(getStopwatch1(), DEC);
         if(getStopwatch1() < 601) writeChar('*');
         writeChar('\n');
         setStopwatch1(0);
      }
   }
   return 0;
}
Gruß

mic