Forum: Mikrocontroller und Digitale Elektronik Wer kann mir zwei "C" Zeilen in's Deutsche übersetzen?


von Paul Baumann (Gast)


Lesenswert?

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

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

Liest sich für mich nach Bit 7 (2 entspricht Bit 1 und wird 6 mal nach 
links geschoben) und Bit 5.

von holger (Gast)


Lesenswert?

>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.

von Paul Baumann (Gast)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Mist, ich wollte es gerade noch korrigieren, da waren schon nächsten 
vier Beiträge da.

Alle meine Nachfolger haben recht, ich nicht :)

von Paul Baumann (Gast)


Lesenswert?

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

von g457 (Gast)


Lesenswert?

> 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

von #define BIT7 0x40 (Gast)


Lesenswert?

Ja, ja, diese däm.... Atmel Schreibweise. Normale Menschen nehmen dafür 
sinnvolle #define. ;-)

von Übersetzer (Gast)


Lesenswert?

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

von Paul Baumann (Gast)


Lesenswert?

@Übersetzer

Super! Das war GENAU das, was ich brauchte....
;-)

MfG Paul

von Übersetzer (Gast)


Lesenswert?

Paul Baumann schrieb:
> Super! Das war GENAU das, was ich brauchte....
Gern geschehen, helfe immer wieder gerne.

von Paul Baumann (Gast)


Lesenswert?

Übersetzer schrabte:
>Gern geschehen, helfe immer wieder gerne.

Das glaube ich Dir auf's Wort....

MfG Paul

von Übersetzer (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.