
| Re: 2 schnelle zeitversetzte plm ausgeben Kategorie: Programmierung (von Cris, http://www.crisullmann.de - 7.02.2005 7:41) | ||
| Als Antwort auf 2 schnelle zeitversetzte plm ausgeben von segelohrenbob - 3.02.2005 23:23 | ||
| ||
|
Hallo Bob, mit sleep kann das nicht funktionieren da die PLM-Ausgänge vom Prozessor direkt angesteuert werden. Du musst die entsprechenden Register beschreiben danach laufen die PLM's immer durch bis zur nächsten Ã?nderung. Zum genaueren Verständnis empfehle ich das Manual des C164, Teil 2. Hier noch ein unkommentierter Auszug aus einem Programm welches ein um 120 Grad versetzten Rechteck an den 3 PLM's erzeugt. Ich habe damit eine Drehstrommotor gesteuert. sfr.set_P8(0b00000010); sfr.set_T7REL(0x4000); sfr.set_T7IC(0B0000000000000000); sfr.set_T8IC(0B0000000000000000); sfr.set_CC16IC(0B0000000000000000); sfr.set_CC24IC(0B0000000000000000); sfr.set_CC17IC(0B0000000000000000); sfr.set_CC25IC(0B0000000000000000); sfr.set_CC18IC(0B0000000000000000); sfr.set_CC26IC(0B0000000000000000); sfr.set_CCM4(0B0101010101010101); sfr.set_CCM6(0B0100010001000100); sfr.set_CC16(0x4000); sfr.set_CC24(0xA000); sfr.set_CC17(0x8000); sfr.set_CC25(0xE000); sfr.set_CC18(0x6000); sfr.set_CC26(0xC000); sfr.set_T78CON(0B0000000001000011); sfr.set_P8(0B00000010); Viel SpaÃ? beim Testen und verändern. Beste GrüÃ?e Cris > wie kann man die plm ausgänge schalten/programmieren damit sie je eine periode als durchlauf haben > und mit ende der periode der andere plm ausgang eingeschalten wird während der esrte für diese > periode ausgeschalten werden soll, und das in einer endlosschleife. > die timebase sollte aber TIME_BASE 400 sein, also das kürzeste was es angeblich gibt > > > > plm 0 aktiviert deaktiviert aktiviert > |____ ____ > | | | | > | |_________,________________,| |_________, > plm1 > | deaktiviert ____ aktiviert deaktiviert > | | | > |_____________,| |____________,_____________; > periodendauer > 20microsec 20microsec 20 microsec > > so soll im endeffekt das bild auf dem oszi aussehen, realisieren konnte ich das programm nur mit > einem sleep von 1ms nach jedem zyklus, so soll aber nicht das gewünschte ergebnis aussehen > habe folgendes programm geschrieben: > > thread main > { > station_io.init (); > station_lcd.init (); > plm.setperiod 0,500); > plm.settimebase (0,0); > plm.setmode (0,0); > plm.setperiod 1,500); > plm.settimebase (1,0); > plm.setmode (1,0); > > { > loop > plm.out (0,100); > ports.deact (plm.out (1,0)); > sleep 1; > plm.out (1,100); > ports.deact (plm.out (0,0)); > sleep 1; > }}} > > > > so, das ist mein meisterwerk ;) > was ist daran falsch und wieso geht das nicht ohne die sleep funktion????? > wär schön wenn mir dabei jemand helfen könnte, > danke schon im voraus > mfg segelohrenbob Meine Seite: http://www.crisullmann.de | ||
Antwort schreiben Antworten: | ||