Hallo

Um nun endlich mal zu einem Erfolg zu kommen:
Code:
#include <avr/io.h>			// I/O Port definitions
//#include <avr/interrupt.h>	// Interrupt macros (für cli)

#define servo1_port PORTC
#define servo1_ddr  DDRC
#define servo1_pin  PC0
#define servo2_port PORTC
#define servo2_ddr  DDRC
#define servo2_pin  PC1

#define servo1_on servo1_port |= 1<<servo1_pin
#define servo2_on servo2_port |= 1<<servo2_pin
#define servo1_off servo1_port &= ~(1<<servo1_pin)
#define servo2_off servo2_port &= ~(1<<servo2_pin)

uint16_t i, stellzeit, dummy;

int main(void)
{
	servo1_ddr |= 1<<servo1_pin; // Pins als Ausgang definieren
	servo2_ddr |= 1<<servo2_pin;
	servo1_off;                  // und auf low schalten
	servo2_off;
	//cli();                       // keine Störungen erlauben
	while(1)                     // solange Saft im Akku...
	{
	   stellzeit=100;            // 100 mal den Impuls senden
	   while(stellzeit--)
	   {
	      servo1_on;             // Impuls für erstes Servo erzeugen
	      for(i=0; i<500; i++) dummy^=i;
	      servo1_off;

	      servo2_on;             // Impuls für zweites Servo erzeugen
	      for(i=0; i<500; i++) dummy^=i;
	      servo2_off;

	      for(i=0; i<20000; i++) dummy^=i; // Impulspause
		}

	   stellzeit=100;
	   while(stellzeit--)
	   {
	      servo1_on;
	      for(i=0; i<2500; i++) dummy^=i;
	      servo1_off;

	      servo2_on;
	      for(i=0; i<2500; i++) dummy^=i;
	      servo2_off;

	      for(i=0; i<20000; i++) dummy^=i;
		}
	}
	return(0);
}
Ohne Interrupts und ohne asuro-Lib nur mit Zählschleifen sind nun viele mögliche Störquellen ausgeschaltet. Das läuft auf meinem 8Mhz-Mega32, für 16Mhz sollte es ausreichen die Zählerwerte zu verdoppeln.

Gruß

mic