Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 PWM Definition Start Stop Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Andreas Rutenberg, Homepage - 13.03.2017 12:15)
Andreas Rutenberg nutzt:  Open-Micro, Open-Mini
Ich bin ein wenig irritiert über die Ergebnisse meines letzten Programmierversuches.
In meinen bisherigen Schaltungen wurde jeweils nur ein PWM benutzt. Seinerzeit habe ich mir eigentlich keine Gedanken darüber gemacht, warum der Assemblerteil hinter dem Programmende einfach unten dran hängt. Auffällig ist, dass der Name der Portzuweisung nichts mit dem Start und Stop des PWM direkt zu tun hat.
define PWM_Port            port[1] ' 1. PWM Ausgan
z.B  funktioniert mit einem PWM einwandfrei.
PWM1_ein und PWM1_aus tun dann das Ihrige.

Was aber, wenn beide PWM arbeiten sollen? Und zwar unabhängig voneinander
define PWM_Port1            port[1] ' 1. PWM Ausgang
define PWM_Port2            port[2] ' 2. PWM Ausgan

in diesem Fall blieben beide PWM Ports ohne Funktion
PWM1_ein und PWM1_aus bzw. PWM2_ein und PWM2_aus

Wenn ich der Demodatei von Rene Stadler folge, dann definierte er keinen Port. Funktionieren die PWMs auch ohne Definition des Ports? Oder ist das ein Fehler im Demoprogramm?

Der Programmstart sieht folgendermaßen aus
' --- Betriebssystem konfigurieren ------------------------------------------
include "om.def"           ' Definitionen fuer Betriebssystem
option openmini
pullupa = 0
pullupb = 0
ClockDis = on
' ---------------------------------------------------------------------------

RunOnErr = on                       ' bei Fehler Programm neu starten
define PWM_Port1           port[1]  ' 1. PWM Ausgang
define PWM_Port2           port[2]  ' 2. PWM Ausgang
define led3                port[11]
define led4                port[12]
define led5                port[4]
define led6                port[13]
define led7                port[14]
define led1                port[9]
define led2                port[10]
define led9                port[16]
define led8                port[15]
define Taster2             port[6]  ' Taste off
define Taster1             port[5]  ' Taste on
define Bit81_88            byte[11] ' byte 11 (statische Bits 81 bis 88)
define Flanke1             Bit[81]  ' Flankenbit Taste on
define Flanke2             Bit[82]  ' Flankenbit Taste off
define tmp1                byte     ' Hilfsvariable für PWM1
define tmp2                byte     ' Hilfsvariable für PWM2
define r                   byte     ' Zählervariable
define s                   byte     ' Zählervariable
define t                   byte     ' Zählervariable
define x                   byte     ' Timervariable
define y                   byte     ' Zählervariable Ende-Timer

#init
tmp1 = 0
tmp2 = 0
a = 1
r = 0
s = 0
t = 0
x = 0                                      ' Variable für Timer
y = 0                                      ' Variable für Ende-Timer

#start
' Beginn mit Prüfung auf Tastaturbetätigung
if Taster1 then goto setz1                 ' Taste1 gedrückt? Ja, dann setze EIN-Flanke
Flanke1 = 0                                ' FlankenBit off setzen
if Taster2 then goto setz2                 ' Taste2 gedrückt? Ja, dann setze EIN-Flanke
Flanke2 = 0                                ' FlankenBit off setzen
goto start                                 ' Reset Ein-Flanke (bei Nichtbetätigung der Taste)
#setz1
if Flanke1 then goto programm              ' Ein-Flanke gesetzt? Ja, dann gehe zu Programm
Flanke1 = on                               ' Setze Ein-Flanke (Sperre für weiteres Setzen)
goto start
#setz2
if Flanke2 then goto stop                  ' Ein-Flanke gesetzt? Ja, dann beende Programm
Flanke2 = on                               ' Setze Ein-Flanke (Sperre für weiteres Setzen)
goto start                                 ' Rücksprung zu start

#programm
' signalisiert durch durchlaufende LEDs über 180 Sekunden
gosub pwm1_ein                          ' PWM-Routine Port1 einschalten
gosub pwm2_ein                          ' PWM-Routine Port2 einschalten
tmp1 = 250                              ' PWM Variable setzen
tmp2 = 250                              ' PWM Variable setzen
pwm1 tmp1                               ' Datenzuweisung für PWM1
pwm2 tmp2                               ' Datenzuweisung für PWM2
for t = 0 to 31                         ' Zähler für 32 komplette LED-Durchläufe, ergibt 180 Sekunden
x = Timer                               ' setzt X auf Timer (am Anfang = 0), Timer zählt automatisch hoch
y = Timer                               ' setzt y auf Timer (am Anfang = 0), Timer zählt automatisch hoch
#schleife
' zwei Schleifenumläufe je Zählerschritt
.....

.....
end                    ' Programmende
' ---------------------------------------------------------------------------
' --- PWM-Routinen für Port1 ------------------------------------------------
' ---------------------------------------------------------------------------
' Hinweis
' Wenn Diese PWM-Routine eingeschaltet wird, dann kann nicht mehr auf die
' Serielle Schnittstelle zugegriffen werden. Nach abschalten dieser
' PWM-Routine steht die Serielle Schnittstelle wieder zur Verfügung.
' ---------------------------------------------------------------------------
TABLE pwm1_ein byte    ' PWM Port1 einschalten
  &h12 &h06
  &h1a &h20 &h18 &h20 &h3f &h26 &h3f &h27 &ha6 &h1a &hb7 &h25 &h1b &h20 &h81
TABEND
' ---------------------------------------------------------------------------
TABLE pwm1 byte        ' PWM Port1 setzten - Uebergabe als Argument
  &h12 &h06
  &had &h13 &ha1 &hfa &h25 &h03 &h10 &h25 &h81 &h5f &h48 &h59 &h48 &h59 &hbf &h26
  &hb7 &h27 &h11 &h25 &h81 &hae &h01 &h83
TABEND
' ---------------------------------------------------------------------------
TABLE pwm1_aus byte    ' PWM Port1 ausschalten
  &h12 &h06
  &h1a &h20 &h18 &h20 &h3f &h25 &h1b &h20 &h81
TABEND
' ---------------------------------------------------------------------------


' ---------------------------------------------------------------------------
' --- PWM-Routinen für Port2 ------------------------------------------------
' ---------------------------------------------------------------------------
TABLE pwm2_ein byte    ' PWM Port2 einschalten
  &h12 &h06
  &h1a &h20 &h18 &h20 &h3f &h29 &h3f &h2a &ha6 &h1a &hb7 &h28 &h1b &h20 &h81
TABEND
' ---------------------------------------------------------------------------
TABLE pwm2 byte        ' PWM Port2 setzten - Uebergabe als Argument
  &h12 &h06
  &had &h13 &ha1 &hfa &h25 &h03 &h10 &h28 &h81 &h5f &h48 &h59 &h48 &h59 &hbf &h29
  &hb7 &h2a &h11 &h28 &h81 &hae &h01 &h83
TABEND
' ---------------------------------------------------------------------------
TABLE pwm2_aus byte     ' PWM Port2 ausschalten
  &h12 &h06
  &h1a &h20 &h18 &h20 &h3f &h28 &h1b &h20 &h81
TABEND
' ---------------------------------------------------------------------------


also nach meinem Dafürhalten sollte das funktionieren. Habe ich was übersehen?

Danke fürs Draufschauen.
Andreas

Meine Homepage: http://sv-ati.de

 Antwort schreiben

Bisherige Antworten:

Re: PWM Definition Start Stop (von Dietmar - 13.03.2017 17:11)
    Re: PWM Definition Start Stop (von Andreas Rutenberg - 14.03.2017 9:54)
        ON ERROR RUN (von Dietmar - 14.03.2017 14:38)