Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, eigenes Board, OSOPT_V2
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: