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: