Das "Port=1" soll nur einen Pseudocode darstellen und steht für die Steuerung eines Ausgangsbit.

Soweit ich weis (bin noch ATMega und asuro-Neuling) hat der ATMega8 vier Ports(a-d) mit jeweils 8 Bits(=32Beinchen+Spannungsversorgung? *grübel*). Jedes Bit kann als Eingang oder Ausgang verwendet werden. Wenn man etwas ausgeben möchte, muss man das Datenrichtungsregister des entsprechenden Portbits auf Ausgabe setzen und kann dann anschliesend dieses Bit Setzen oder Löschen und damit das entsprechende Beinchen, an dem das Servo hängt, steuern. Gibt man eine 1 aus, stehen an dem Beinchen 5V(=VCC) an, bei einer 0 sind es dann 0V. Durch geschicktes Timing beim Ein-und Ausschalten erzeugt man dann das PWM-Signal für das Servo.

Weil ich (aus Zeitmangel) noch nicht in die Untiefen der direkten Port-Programmierung vorgedrungen bin, beschränke ich mich zur Zeit noch auf die Verwendung der asuro.h. Hier sind alle wichtigen asuro-Ports schon programmiert und initialisiert (Init()) und man kann sofort loslegen. Das ist auch der Grund für den Umweg über den Optokoppler. So kann ich die schon vorhandenen LEDs des asuros mit Standartbefehlen (....LED(ON/OFF)) steuern ohne genau zu wissen, wie das porttechnisch funktioniert.

Wenn du z.B. das ATMega-Beinchen anzapfst mit dem die Front-LED angesteuert wird, kannst du das PWM-Singal mit den FrontLED(ON/OFF)-Befehlen aus asuro.h erzeugen.

Alternativ kann man auch die hwdefines.h von asuro-henk verwenden. Das ist eine Sammlung von Defines die den Zugriff auf die Ports und Datenrichtungsregister vereinfachen. Allerdings wird diese Technik hier im Forum kaum besprochen, obwohl sich damit sehr schlanke und prozessornahe Codes erzeugen lassen.

mic