
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
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 |