Es funktioniert ja noch nicht, möglicherweise denke ich auch zu kompliziert.
"OC3A zu Masse sind etwa 2,5V" bedeutet 50:50 Tastverhältnis. Also läuft immerhin der Timer. "PD5 zu Masse 5V" ist allerdings schlecht. Wenn der Pin high ist gibt es keinen Strom durch die IR-LEDs und man kann nicht unterscheiden, ob OC3A direkt oder über PullUp gemessen wird. Besser wäre eine Messung des Stroms durch die LEDs an OC3A.
Das Programm wechselt die Seite bei der Abfrage. Zuerst wird rechts gemessen:
Code:
Do While True
Port_WriteBit(IR_left,PORT_OFF)
Port_WriteBit(IR_right,PORT_ON)
AbsDelay(5)
If Port_ReadBit(TSOP) = 0 Then
Text = "Object right"
Kathoden der linken LEDs auf Low, die der Rechten auf High. Prima, jetzt leuchten aber die linken LEDs. Seiten vertauscht?
Bild hier
[Edit]
Wie lange dauert denn das "AbsDelay(5)"? Der TSOP braucht mindestens 6-10 Impulse bis er das Signal erkennt. Das wären 10 * (1/36000) oder 0,000277Sek bzw. 277µs. Und die Leds leuchten auch nicht schlagartig...
Bleiben also für die 3 LEDs und den Widerstand etwa 2,5V
Nein, es bleiben für die drei LEDs und den Widerstand (und den PullUp?) genau 36000 mal 5V und 36000 mal 0V in der Sekunde. ;)
Zu "Besser wäre eine Messung des Stroms durch die LEDs an OC3A."
Mit und ohne "Port_DataDirBit(PWM_IR, PORT_OUT)", jeweils mit "Port_WriteBit(IR_right,PORT_OFF)".
[Edit2]
Vorsichtshalber habe ich mal das Pinout überprüft:
http://www.c-control-pro.de/document...ordnung128.htm
#define IR_right 29: Scheint richtig. PortBit 29 ist PD5.
#define IR_left 27: PortBit 27 ist PD3/TXD1. Auch richtig.
Lesezeichen