PLM-Ports Kategorie: Programmierung (von Thomas H. - 4.09.2001 11:14) | |
| |
thread main { plm.settimebase(0,0); plm.settimebase(1,0); plm.setmode(0,0); plm.setmode(1,0); plm.setperiod(0,25000); //entspricht 10ms, also halbe Netzperiodendauer plm.setperiod(1,25000); //entspricht 10ms, also halbe Netzperiodendauer loop{ wait ports.get(12); plm.out(0,10000); plm.out(1,10250); } } Das Programm soll nach einem durch die Netzfrequenz ausgelösten Pulse (High-Low, ca. 0,5ms) an Port 12 an den PLM-Ports die eingestellten Rechtecksignale erzeugen mit unterschiedlicher Dauer, so dass durch eine XOR-Verknüpfung der PLM-Ports ein kurzer Puls (250x400ns) entsteht. Leider wandert dieser Impuls über die gesamte Periode langsam hin und her, bleibt also nicht an der durch die Rechteckdauern festgelegten Stelle. Evtl. ist dies auf die schwankende Netzfrequenz zurückzuführen. Dies soll jedoch gerade durch die Synchronisation bei jedem Nulldurchgang (oben beschriebener Puls) kompensiert werden. Wahrscheinlich liegt es daran, dass der PLM-Port, wenn einmal angesto�en, immer mit den eingestellten Parametern ausgibt, also nicht bei Pulse an Port 12 zurückgesetzt und neu gestartet wird. Eine Lösung über setzten und Rücksetzen von Digital-Ausgabeports erwies sich aufgrund eines "Zitterns" des Ausgabepulses als nicht praktikabel, zumal das Zittern schlimmer wurde, je mehr nebenläufige Threads ich hatte (logisch). Da half auch kein Anhalten der anderen Threads, weil der Pulse-Thread alleine schon leicht zappelte und die mögliche Auflösung zur Verschiebung des Pulses innerhalb der halben Netzperiode zu grob war (ich benötige ca. 0,2ms Auflösung). Das ganze soll übrigens zur Dimmung eines Halogenspots dienen (Phasenanschnittsteuerung). Hat jemand eine Idee, wie ich das n den Griff bekommen könnte?!! Für Anregungen, Hilfen oder gar Lösungen des Problems wäre ich sehr dankbar. Thomas | |
Antwort schreiben Antworten: Re: PLM-Ports (von KlaRa - 4.09.2001 14:10) Re: PLM-Ports (von Thomas H. - 4.09.2001 15:21) |