Hallo

Ich habe mich noch nicht richtig in dein Programm eingelesen, aber ein paar Punkte stechen mir sofort ins Auge:

Code:
   PORTA |= (1 << PA0);   // PA0 auf HIGH (LED ausschalten)
      DDRA |= (1 << DDA1);   // PA1 als Ausgang
      PORTA &= ~(1 << PA1);   // PA1 auf LOW
Wenn die Anoden an PA0/1 angeschlossen sind und die Kathoden an PA3, dann schaltet ein High an PA0 die Led ein. Hier passt dein Kommentar nicht? Wo wird denn PA3 auf Ausgang und Low geschaltet? Wie groß ist der berechnete Strom für PA0/1 und der für PA3? Der SFH5110 benötigt eine Trägerfrequenz für das IR-Signal, wo wird diese erzeugt und auf die IR-LEDs geschaltet?

Code:
   for(j=0;j<30;j++) // loop time: 5ms
   {
      if (PINA & (1 << PA3))z++;
      delay(6); // 6*Sleep(6)=1ms
Hoffentlich optimiert der Kompiler die for-Schleife nicht weg, was wird hier an PA3 abgefragt, warum werden aus 1ms plötzlich 6?

Du solltest den Code mal nur auf eine Seite und das Wesentliche reduzieren und besser kommentieren.

Ein kleine Beschreibung der Funktion und der Anschlüse im Programmkopf würde das lästige switchen zwischen Editor und Forumbeitrag überflüssig machen...

Gruß

mic