Hallo

Das Task-System des RP6 ist auch eines seiner Highlights. Damit kann er mehrere Abläufe parallel steuern ohne sich zu blockieren. Der Preis dafür ist eben die recht komplizierte Programmierung. Grundsätzlich muss man aber selbst dafür sorgen, dass die einzelnen Tasks abgearbeitet werden und keine Funktion (störend) blockierend auf den Rest des Programms wirkt. Hier ein Beispiel für ein 80an-80aus-80an-100aus-Blinken:
Code:
#include "RP6RobotBaseLib.h"

void eigenefunktion(void)
{
   if (getStopwatch3() < 80)
   {
		setLEDs(63);
      //PORTC |= IO_PC7;
      //PORTC |= IO_PC5;
   }
   else if (getStopwatch3() < 80+80)
   {
		setLEDs(0);
      //PORTC &= ~IO_PC7;
      //PORTC &= ~IO_PC5;
   }
   else if (getStopwatch3() < 80+80+80)
   {
		setLEDs(63);
      //PORTC |= IO_PC7;
      //PORTC |= IO_PC5;
   }
   else if (getStopwatch3() < 80+80+80+100)
   {
		setLEDs(0);
      //PORTC &= ~IO_PC7;
      //PORTC &= ~IO_PC5;
   }
   else setStopwatch3(0);
}


int main(void)
{
	initRobotBase();
	setLEDs(0);
	//DDRC |= IO_PC7 | IO_PC6 | IO_PC6 | IO_PC4
   //PORTC &= ~IO_PC7;
   //PORTC &= ~IO_PC6;
   //PORTC &= ~IO_PC5;
   //PORTC &= ~IO_PC4;

	setStopwatch3(0);
	startStopwatch3();

	while(true)
	{
	   eigenefunktion();
	}
	return 0;
}
Nicht sehr elegant, aber es funktioniert und ist anschaulich...

Gruß

mic