![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo OMICRO Anwender, Hier die Lösung, welche ich nun gefunden habe. Bei den von mir verwendeten Programmen mit rel. geringer Komplexität und einem Umfang unter 516Bytes hat es nun einwandfrei funktioniert. Folgenden Hinweise von Rene Stadler möchte ich hier noch anführen: Natürlich könnte man die Frequenz höher setzen, aber dann bleibt bei der OM schnell keine Rechenleistung mehr für andere Sachen übrig (und man müste vor allem die Interrupts ausschalten, um auch einen technischen Hintergrund zu geben). Freundliche Grüße Joe Fenk #### Beispielprogramm ####################### ' ---MY_PWMD2.BAS vom So. 11.10.2009 ' Testversion um die PWM2 Wiederholrate von 50Hz, 100, 200, 400, 800. 1600 u. 3200 Hz zu testen ' Diese Version ist von Josef Fenk und basiert auf der Orginialversion von Rene Stadler ' Original Ausgangsbasis ' --- PWM-Demoprogramm 1 fuer OCBASIC --------------------------------------- ' --- (c) 2005 Rene Stadler, rene@stadlerhome.de ---------------------------- ' --- von mir JF am 07.10.2009 geaendert auf Port 2/Pin6 Ausgang ' Hardware: ' Kontroll-LED an Port[2] ' Software: ' In dem Demo wird nur Port 2/Pin6 eingeschaltet und langsam ' von 0 bis 255 erhoeht. Danach wird von 255 bis auf 0 ' abgesenkt. Dieser Vorgang wird immer wieder wiederholt bis das Programm ' beendet wird. ' Die Wiederholrate betraegt ca. 50Hz (bei der CC1 knapp 2kHz). Es sind nur ' 250 veschiedene Stufen möglich - Werte ueber 250 werden wie 255 behandelt. ' Bei Verwendung von "pwm_aus" kann es zu einem (Phasen-)Fehler auf dem anderen ' Kanal kommen. Bei entsprechend empfindlicher Hardware sollte darauf verzichtet ' werden, oder zumindest darauf geachtet werden, da der andere Kanal "0" oder ' "255" ist, da der Phasenfehler dann nur zu einer Verlaengerung der Impulse ' fuehrt. Nach dem Einschalten ist der Port immer auf "0" initialisiert. ' --------------------------------------------------------------------------- ' --- Betriebssystem konfigurieren ------------------------------------------ include "OM.DEF" ' versuchsweise von mir JF eingefgt, funktioniert nun mit Compiler-Version 1.05 pullupa = &b00111101 ' Schaltet die internen Pull-Up-Widerstaende von ' Port1 und Port2 aus ' --------------------------------------------------------------------------- ' --- Definition der Variablen ---------------------------------------------- 'define TSC IVAR [161] ' TIM Status und Control Register define tmp byte ' Hilfsvariable ' --------------------------------------------------------------------------- ' --------------------------------------------------------------------------- ' --- Hauptprogramm --------------------------------------------------------- ' --------------------------------------------------------------------------- pwm2_ein ' PWM-Routine Port2 einschalten #endlos '*** Einfügung, um das TIM Status und Control Register auf verschidene Prescalerfaktoren zu setzen 'TSC=&b01000110 ' ./.64;==> 50Hz PWM Takt;muss nicht gesetzt werden da dies die Grundeinstellung der Prescaler select bits ist im Speicherplatz $0020 bei der OMICRO 'TSC=&b01000101 ' ./.32;==> 100Hz PWM Takt; Prescaler select bits im Speicherplatz $0020 'TSC=&b01000100 ' ./.16;==> 200Hz PWM Takt; Einstellung der Prescaler select bits im Speicherplatz $0020 'TSC=&b01000011 ' ./.8; ==> 400Hz PWM Takt; Einstellung der Prescaler select bits im Speicherplatz $0020 'TSC=&b01000010 ' ./.4; ==> 800Hz PWM Takt; Einstellung der Prescaler select bits im Speicherplatz $0020 'TSC=&b01000001 ' ./.2; ==> 1600Hz PWM Takt; Einstellung der Prescaler select bits im Speicherplatz $0020 TSC=&b01000000 ' ./.1; ==> 3200Hz PWM Takt; Einstellung der Prescaler select bits im Speicherplatz $0020 for tmp=0 to 255 ' PWM-Port 2 hochzaehlen Print "PWM2=";tmp pwm2 tmp ' Datenzuweisung PWM-Port2 pause 10 ' 0,1 Sekunden warten next for tmp=255 to 0 step -1 ' PWM-Port 2 runterzaehlen Print "PWM2=";tmp pwm2 tmp ' Datenzuweisung PWM-Port2 pause 10 ' 0,1 Sekunden warten next goto endlos ' --------------------------------------------------------------------------- end ' --------------------------------------------------------------------------- ' --- 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 ' --------------------------------------------------------------------------- |
Antwort schreiben |