Ich habe hier einen Quelltext in "C" beim Wickel, den ich gerne nach Bascom umstellen will. Er enthält 2 Zeilen, die ich nicht deuten kann: 'TCCR1A |= 2 << 6; // enable PWM on port B1 in non-inverted compare mode 2 'TCCR1A |= 2 << 4; // enable PWM on port B2 in non-inverted compare mode 2 Frage: Welche Bits im Register TCCR1A sind nach dieser Aktion gesetzt und welche nicht? Von der Sache her müßte es die oberen 4 Bit sein, d.h. 7,6,5,4 Ich bin mir aber nicht sicher und will keine Fehler einbauen, wo vorher keine waren. MfG Paul
Die erste Zeile setzt die Bits 7 und 6 und lässt alle anderen unverändert. Die zweite Zeile setzt die Bits 5 und 4 und lässt alle anderen unverändert.
Liest sich für mich nach Bit 7 (2 entspricht Bit 1 und wird 6 mal nach links geschoben) und Bit 5.
>Die erste Zeile setzt die Bits 7 und 6 und lässt alle anderen >unverändert. Nein, es wird nur Bit 7 gesetzt. Wenn Bit 6 gesetzt war bleibt es auch gesetzt. Vermutlich wurde etwas anderes erwartet und schlicht falsch programmiert.
Hm... 2 Mann, 2 Meinungen. Ja, da hilft wohl doch nur probieren und mit dem Oszi gucken, ob das Erwartete passiert. Danke für Eure Antworten. MfG Paul
Yalu X. schrieb: > Die erste Zeile setzt die Bits 7 und 6 und lässt alle anderen > unverändert. > Die zweite Zeile setzt die Bits 5 und 4 und lässt alle anderen > unverändert. Fast richtig. Bei "2" wird aber nur 1 Bit gesetzt. Also werden Bit 7 und Bit 5 gesetzt - wie Michael schrieb.
Mist, ich wollte es gerade noch korrigieren, da waren schon nächsten vier Beiträge da. Alle meine Nachfolger haben recht, ich nicht :)
Gut. Das hat mir geholfen, weil ich in Bascom einzelne Bits im Regsiter auf diese Weise setzen kann: TCCR1A.COM1A1=1 oder (was das Gleiche macht) TCCR1A.7= 1 und dann noch Diesen hier: TCCR1A.COM1B1=1 und fertig ist dei Laube. Da brauche ich nicht das ganze Gelumpe von rechts her hineinzuschieben. ;-) Ich bedanke mich noch einmal für Eure schnelle Hilfe. MfG Paul
> Da brauche ich nicht das ganze Gelumpe von rechts her hineinzuschieben.
Normalerweise(tm) schreibt mans auch in C [0] lesbar hin, nämlich z.B.
so:
1 | TCCR1A |= _BV(COM1A1); |
[0] avr-gcc+avr-libc
Ja, ja, diese däm.... Atmel Schreibweise. Normale Menschen nehmen dafür sinnvolle #define. ;-)
Paul Baumann schrieb: > Wer kann mir zwei "C" Zeilen in's Deutsche übersetzen? > 'TCCR1A |= 2 << 6; // enable PWM on port B1 in non-inverted compare > mode 2
1 | TCCR1A |= 2 << 6; // ermoeglichen PWM auf Port B1 in nicht invertierten Vergleichsmodus 2 |
> 'TCCR1A |= 2 << 4; // enable PWM on port B2 in non-inverted compare > mode 2
1 | TCCR1A |= 2 << 4; // ermoeglichen PWM auf Port B2 in nicht invertierten Vergleichsmodus 2 |
@Übersetzer Super! Das war GENAU das, was ich brauchte.... ;-) MfG Paul
Paul Baumann schrieb: > Super! Das war GENAU das, was ich brauchte.... Gern geschehen, helfe immer wieder gerne.
Übersetzer schrabte:
>Gern geschehen, helfe immer wieder gerne.
Das glaube ich Dir auf's Wort....
MfG Paul
Dann sind wir jetzt beide Zufrieden: Du hast "GENAU das, was ich brauchte" und ich durfte helfen. Der Thread kann also geschlossen werden.
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.