hi, ich lede gerade das PWM Tutorial durch und an der Stelle bin ihc etwas verwirrt. Das Beispiel zeigt den Modus 14. Dabei wird der Timer-Endstand durch das Register ICR1 festgelegt. Weiters wird die Funktion des OC1A Pins so festgelegt, dass der Pin bei einem Timer Wert von 0 auf 0 gesetzt wird und bei Erreichen des im OCR1A Registers festgelegten Wertes auf 1 gesetzt wird. Der Vorteiler des Timers, bzw. der ICR-Wert wird zunächst so eingestellt, dass eine an PB1 angeschlossene LED noch blinkt, die Auswirkungen unterschiedlicher Register Werte gut beobachtet werden können. Den Vorteiler zu verringern ist kein Problem, hier geht es aber darum, zu demonstrieren wie PWM funktioniert. und das: ; ; der Compare Wert ; Wenn der Zähler diesen Wert erreicht, wird mit ; obiger Konfiguration der OC1A Ausgang abgeschaltet ; Sobald der Zähler wieder bei 0 startet, wird der ; Ausgang wieder auf 1 gesetzt wiedersprechen die sich nicht? Das letztztere scheint zu stimmen. Oder? Wird bei erreichen des Compare Wertes der Port nun auf 0 oder 1 geschaltet? Ichwürde sagen auf 0 oder?
Florentin Schirmer wrote: > wiedersprechen die sich nicht? Du hast recht. Das ist ein Fehler im Tutorial. > > > Das letztztere scheint zu stimmen. Oder? Ja. Im Zweifel gilt: ins Datenblatt schauen. Die im Programm benutzte Konfiguration mit den Angaben dort vergleichen, dann weist du es genau. > > Wird bei erreichen des Compare Wertes der Port nun auf 0 oder 1 > geschaltet? Mit der Konfiguration wird der Port-Ausgang beim Compare Wert auf 0 geschaltet. So wie es im Datenblatt angegeben ist. Der einleitende Text im Tutorial wurde korrigiert.
ok dann ist ja gut ich bin nämlich fast verzweifelz drann...des weiteren finde ich es schade, das im Tut nicht genau erläutert wir was damit genau gemacht wird: ldi temp1, 1<<COM1A1 | 1<<WGM11 out TCCR1A, temp1 ldi temp1, 1<<WGM13 | 1<<WGM12 | 1<<CS12 out TCCR1B, temp1 gut manches kann man den vorherigen Tuts entnehmen aber nicht alles. Es steht zwar im ganzen da was gemacht wird aber nicht welches Bit was bewirkt.
Florentin Schirmer wrote: > ok dann ist ja gut ich bin nämlich fast verzweifelz drann...des weiteren > finde ich es schade, das im Tut nicht genau erläutert wir was damit > genau gemacht wird: > > ldi temp1, 1<<COM1A1 | 1<<WGM11 > out TCCR1A, temp1 > > ldi temp1, 1<<WGM13 | 1<<WGM12 | 1<<CS12 > out TCCR1B, temp1 > > > gut manches kann man den vorherigen Tuts entnehmen aber nicht alles. Es > steht zwar im ganzen da was gemacht wird aber nicht welches Bit was > bewirkt. Ach komm. Ein wesentlicher Bestandteil des Tutorials ist es auch, sich im Datenblatt über die Bedeutung der Bits zu informieren. Niemand hat nämlich Lust, das Datenblatt ins Tutorial zu kopieren. Und wenn es auch nur auszugsweise ist. Aber es steht dir natürlich frei, im Datenblatt die Bedeutung der Bits nachzuschlagen und das Tutorial zu ergänzen. Dann wirst du grade bei den Timern sehr schnell merken, dass da eine Menge übernommen werden müsste.
ok ist ja gut ;-) das verstehe ich auch nicht: ldi temp1, 0x02 out DDRB, temp1 schaltet man den Ausgang nicht mit 0xFF?
Florentin Schirmer wrote: > ok dann ist ja gut ich bin nämlich fast verzweifelz drann... Nunja, das Tutorial enthält aber bedeutend weniger Fehler als mancher Beitrag hier. > des weiteren > finde ich es schade, das im Tut nicht genau erläutert wir was damit > genau gemacht wird: > > ldi temp1, 1<<COM1A1 | 1<<WGM11 > out TCCR1A, temp1 > > ldi temp1, 1<<WGM13 | 1<<WGM12 | 1<<CS12 > out TCCR1B, temp1 > > Dazu gibt es das Datenblatt. Dort kann man die Bitnamen und ihre Bedeutung nachlesen. Ohne Datenblatt geht es nicht, schon alleine deshalb, weil die unterschiedlichen AVR-Typen unterschiedlich mit Features ausgestattet sind. Timer 1 ist auch nicht bei allen Typen gleich. > gut manches kann man den vorherigen Tuts entnehmen aber nicht alles. Es > steht zwar im ganzen da was gemacht wird aber nicht welches Bit was > bewirkt. Das steht aber im Datenblatt. Und etwas Mitarbeit des Lernenden sollte man wohl voraussetzen dürfen, oder? Ich kenne auch nicht alle Features des Timer1 genau, denn meist komme ich mit den Basic-Features aus, die es dann ermöglichen, quasi gleichzeitig mehrere Features des Timers zu nutzen (ICP, CompA, CompB, Ovf). Für Hardware-PWM sind meist die 8-Bit-Timer ausreichend. MfG, Troll Blaubär
Florentin Schirmer wrote: > ok ist ja gut ;-) > > > das verstehe ich auch nicht: > > ldi temp1, 0x02 > out DDRB, temp1 > > > schaltet man den Ausgang nicht mit 0xFF? Du erinnerst mich an jochen. Mit $ff setzt Du alle Bits des Bytes. Mit $02 setzt Du nur Bit 1 (0..7) des Bytes, weil Du vermutlich nur PD1 als Ausgang brauchst und die anderen Pins Eingang bleiben sollen. Du solltest mit der Lektion "Bits & Bytes" beginnen, aber dafür hat vermutlich mangels allgemeinen Bedarfs noch Niemad ein Tutorial geschrieben. MfG, trollig blaues Bärli
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.