hi,
ich arbeite mich momentan zwar auch erst in PWM ein; Deine Aussage sollte aber richtig sein.
Bei Interesse:
https://www.roboternetz.de/phpBB2/ze...478&highlight=
liebe Grüße,
Klingon77
Hallo,
bin gerade dabei mich mal mit PWM zu versuchen. Als kleines Testprogramm habe ich mal folgendes zusammengeschrieben.
Ist das richtig, wenn ich nur 1 Ausgang als PWM benötige, daß ich dann den zweiten als Output definierten Pin weglassen kann und in der Timer Config Anweisung auch das Compare B PWM weglassen kann?Code:$regfile = "m8def.dat" 'ATmega8 Prozessor $crystal = 8000000 '16MHz Intern $sim 'Nach Test entfernen Config Portb.1 = Output Config Portb.2 = Output Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , _ Compare B Pwm = Clear Up , Prescale = 1 Do Pwm1a = 205 Pwm1b = 51 Loop End
hi,
ich arbeite mich momentan zwar auch erst in PWM ein; Deine Aussage sollte aber richtig sein.
Bei Interesse:
https://www.roboternetz.de/phpBB2/ze...478&highlight=
liebe Grüße,
Klingon77
Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de
Absolut richtig.Ist das richtig, wenn ich nur 1 Ausgang als PWM benötige, daß ich dann den zweiten als Output definierten Pin weglassen kann und in der Timer Config Anweisung auch das Compare B PWM weglassen kann?
Allerdings ist PWM unter Bascom so ein Thema für sich (zumindest meiner Erfahrung nach). So richtig im Griff hatte ich es erst, als ich dem Controller auf Register-Ebene gesagt habe, was er tun soll. Das erfordert zwar ein wenig Eindenken, aber es macht sich bezahlt. So sehr ich Bascom schätze - beim Thema PWM kommt es m.E. schnell an seine Grenzen (und der Anwender irgendwann auch...).
Hallo,
selbst wenn man ein vernünftiges PWM zusammenbekommt, ist der Prozessor schwer beschäftigt und es können fast keine weiteren timingkritischen Aufgaben erfüllt werden. Das hat aber nur sekundär mit Bascom was zu tun. Sehr gerne setze ich für LED-PWM den PCA9635 ein. Der hat 16 einzelne PWM Ausgange mit 96 kHz! und zusätzlich eine Summen PWM. Ein Spezialist eben. Wer schon mal mit I²C gearbeitet hat, wird die Ansteuerung schnell beisammen haben.
Günter
hi guenter1604,
das verstehe ich nun nicht ganz.
Ich dachte die Timer laufen bei einer "Hardware-PWM" autonom und ohne Rechenzeit vom Prozessor "abzuzwacken"?
liebe Grüße,
Klingon77
Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de
Hallo Klingon77!Zitat von Klingon77
Das ist auch so. Lass dich nicht verwirren. ;-)
mfg
Gerold
:-)
hi,
mal Dank für die rasche Aufklärung \/
Momentan bin ich, ob der vielen Info´s, welche durch meinen AVR-Einstieg auf mich einprasseln, mitunter "leicht confused" und nicht immer "trittfest auf zwei Beinen"
liebe Grüße,
Klingon77
Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de
Hallo,
sorry für das Durcheinanderbringen. Ich habe Sauerbruchs Antwort als Software-PWM interprätiert (mein Fehler).
Wenn er jedoch Hardware-PWM gemeint hat, ist doch Bascom kein Performance-Problem? Der Hardware-PWM wird doch durch Bascom exakt gleich konfiguriert wie wenn ich die Register direkt setze ?
jetzt bin ich auch durcheinander
so hab ich ne 10 Kanal Software-PWM zusammengebastelt:
Code:Ontimer2: Tick = Tick + 1 Timer2 = 200 If Tick >= Range Then Tick = 0 If Tick < V_hell(1) Then K1 = Channels.1 Else K1 = 0 End If If Tick < V_hell(2) Then K2 = Channels.2 Else K2 = 0 End If If Tick < V_hell(3) Then K3 = Channels.3 Else K3 = 0 End If If Tick < V_hell(4) Then K4 = Channels.4 Else K4 = 0 End If If Tick < V_hell(5) Then K5 = Channels.5 Else K5 = 0 End If If Tick < V_hell(6) Then K6 = Channels.6 Else K6 = 0 End If If Tick < V_hell(7) Then K7 = Channels.7 Else K7 = 0 End If If Tick < V_hell(8) Then K8 = Channels.8 Else K8 = 0 End If If Tick < V_hell(9) Then K9 = Channels.9 Else K9 = 0 End If If Tick < V_hell(10) Then K10 = Channels.10 Else K10 = 0 End If Return
Hallo guenter1604!Zitat von guenter1604
In Bascom kann man die Einstellungen für PWM direkt in die Register schreiben. Wenn man stattdessen den Highlevel-Befehl ``CONFIG TIMERx = PWM`` verwendet, um damit Hardware-PWM einzurichten, dann stellt Bascom auf "Phase Correct PWM Mode". Den PWM-Modus kann man mit dem Highlevel-Befehl nicht beeinflussen.
Genaue Informationen über die möglichen PWM-Modi findet man z.B. im Datenblatt des ATmega8 im Kapitel "16-bit Timer/Counter1 -- Modes of Operation".
mfg
Gerold
:-)
Lesezeichen