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

Re: PLM-Port als Digitalausgang Kategorie: Programmierung (von André H. - 13.08.2006 10:51)
Als Antwort auf PLM-Port als Digitalausgang von HGS - 8.08.2006 15:21
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo HGS,

> laut Handbuch dachte ich, da� es möglich sein sollte, die PLM-Ports als normale Digitalausgänge
> zu verwenden. Auf den Fehler mit dem HIGH bei Ausgabe>Periodenlänge bin ich schon hier im Forum
> gestoÃ?en, so geht's also nicht.

Ã?ber PLM kan man leider nicht direkt 100% einstellen.
Wenn Du aber die maximale Periodenlänge und die kleinste Zeitbasis einstellst,
kannst Du so die PLM-Ports weitgehens als normale dig. Ausgänge benutzen.
D.h. folgendes:
plm.settimebase(PLMChannel, plm.BASE_400);
plm.setperiod(PLMChannel, -1);//=65535


Um z.B. Relais anzusteuern, ist diese Lösung kein Problem.

> Dann habe ich den Hinweis mit sfr.set_P8 gefunden. Das kriege ich
> aber auch nicht hin. Mein Quelltext sieht so aus:
>
>
>   PLMChannel=0;
>   plm.settimebase(PLMChannel, plm.BASE_400);
>   plm.setmode(PLMChannel, 0);
>   plm.setperiod(PLMChannel, 100);
>   loop
>   {
>     sfr.set_P8(sfr.get_P8() or 0b00000001);    // PLM0 auf konstant high setzen
>     WaitForKey(VK_Enter);
>     sfr.set_P8(sfr.get_P8() and 0b11111110);    // PLM0 auf konstant low setzen
>     WaitForKey(VK_Enter);
>   }
>

>
> Hier sehe ich aber auf dem Oszi nur einen kurzen Puls, dann ist das Signal wieder dauerhaft auf LOW.
> Interessanterweise ist die Länge des zu sehenden Pulses nicht immer gleich.
> Mache ich da noch was falsch mit setmode oder setperiod, oder geht es gar nicht so?

Das geht so natürlich nicht.
Du setzt zwar den Port per Hand auf High, aber Dir funkt die PLM-Zuweisung
von CAPCOM2 dazwischen.
Du mu�t daher die erst die Zuweisung für den betreffenden Port aufheben.
Danach kannst Du diesen als I/O-Port benutzen.
Dazu muÃ? man wissen, daÃ? P8.0 die Bezeichnung CC16IO hat. (Entsprechend der Sonderfunktion)
Ã?ber das Capture-Compar-Mode-Register CCM4 (0xFF22) kann die (Sonder-)Funktion
der Ports P8.0-.3 bestimmt werden. (Siehe Manual zum C164CI)

Mit folgender Funktion kannst Du aus P8.0 einen normalen I/O-Port machen:

inline function P8_0_IO()
{
 inline vmcodes.VM_LOAD_IMMEDIATE_INT;
 inline 0xFFF0;
 inline vmcodes.VM_LOAD_ABSOLUTE_INT;
 inline 0xFF22;
 inline vmcodes.VM_AND;
 inline vmcodes.VM_STORE_ABSOLUTE_INT;
 inline 0xFF22;
}

P8.0 kann jetzt als normaler I/O-Port benutzt werden.
Allerdings sollten die Portansteuerungsroutinen so kurz, wie möglich sein:

inline function setP8_0() // Port setzen
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0x0100;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xFFD4;
 inline vmcodes.VM_OR;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xFFD4;
}

inline function clearP8_0()
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0xFE00;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xFFD4;
 inline vmcodes.VM_AND;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xFFD4;
}

inline function deactP8_0() //P8.0 als Eingang
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0xFE00;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xFFD6;
 inline vmcodes.VM_AND;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xFFD6;
}

inline function actP8_0() //P8.0 als Ausgang
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0x0100;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xFFD6;
 inline vmcodes.VM_OR;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xFFD6;
}

inline function OD_P8_0() //P8.0 als Open-Drain
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0x0100;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xF1D6;
 inline vmcodes.VM_OR;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xF1D6;
}

inline function PP_P8_0() //P8.0 als Push-Pull
{
 inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0xFE00;
 inline vmcodes.VM_LOAD_ABSOLUTE_BYTE;
 inline 0xF1D6;
 inline vmcodes.VM_AND;
 inline vmcodes.VM_STORE_ABSOLUTE_BYTE;
 inline 0xF1D6;
}


Das sind jetzt die wichtigsten Funktionen.
Entsprechend kann man auch die anderen Ports von P8 umkonfigurieren.
Beim Ansprechen über mehrere Threads müssen die Funktionen gecaptured werden !

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: PLM-Port als Digitalausgang (von Michael Rossner - 24.12.2006 13:47)