Forum: Mikrocontroller und Digitale Elektronik 8bit fast PWM beenden


von Reinhard S. (schopfi)


Lesenswert?

Morgen @ll!

Ich habe an einen Attiny2313 am Pin P3 und P4 eine Duo-LED hängen
die ich zwecks Anzeigefunktion mit Timer1 8bit fast PWM betreibe.
Nach einer PWM Sequenz (aufdimmen - abdimmen) soll sie dann kurz noch 
2mal nacheinander aufblinken.
Die Pwm Sequenz funktioniert, nur das blinken nicht.
Scheint mir als wären die 2 Pins nicht richtig zurückgesetzt.

Programmiert habe ich das ganze in C.
Nun zu meiner Frage ob das so richtig ist damit ich die Pins wieder ganz 
normal verwenden kann muß ich doch nur Bits des Timer1 so zurücksetzten 
oder ?

TCCR1A = ~(1<<COM1A1) | ~(1<<COM1B1);

vielen dank ...lg

von Ziegenpeter (Gast)


Lesenswert?

Reinhard Schopf schrieb:
> ...muß ich doch nur Bits des Timer1 so zurücksetzten
> oder ?
>
> TCCR1A = ~(1<<COM1A1) | ~(1<<COM1B1);

Ne, mit der Methode würdest du alle Bits setzen, eher so:

TCCR1A &= ~((1<<COM1A1) | (1<<COM1B1));

von Reinhard S. (schopfi)


Lesenswert?

Ziegenpeter schrieb:
> Ne, mit der Methode würdest du alle Bits setzen, eher so:
>
> TCCR1A &= ~((1<<COM1A1) | (1<<COM1B1));

aha...danke, ich programmiere in C noch ned lange. Habe bisher immer
alles in Bascom gemacht.
Irgendwie ist das hier schon verwirrend.
Setzen kann ich so -

TCCR1A = (1<<COM1A1) | (1<<COM1B1)....usw. da brauch ich das (" |= ") 
nicht, da reicht ein " = " ) und beim löschen muß ich das (" &= ") 
verwenden ?
hmm.....

von Karl H. (kbuchegg)


Lesenswert?

Reinhard Schopf schrieb:

> TCCR1A = (1<<COM1A1) | (1<<COM1B1)....usw. da brauch ich das (" |= ")
> nicht, da reicht ein " = " ) und beim löschen muß ich das (" &= ")
> verwenden ?
> hmm.....

Bitmanipulation


und dann einfach mal darüber nachdenken, was die binären Operatoren ODER 
bzw. UND auf Bitebene machen. Ein paar Beispiele durchspielen und 
irgendwann macht es klick.

Und dann ist es für dich genauso natürlich, wie es für einen 
Autolackierer ganz natürlich ist, dass er alles was er nicht lackieren 
will mit einer Maske abdeckt und über die dann noch freiligenden Stellen 
mit Schwarz (oder Weiß) drübersprüht.

Und genauso wie es bei der Maske 2 Möglichkeiten gibt
* entweder man benutzt den Kreis den man aus Papier ausgeschnitten hat
* oder man benutzt das Papier aus dem man den Kreis ausgeschnitten hat
genauso gibt es auch hier 2 Möglichkeiten, je nachdem welche Bits 
geschützt (sich nicht verändern) sollen.
Nur dass wir nicht wahlweise Schwarz oder Weiß sprühen können sondern in 
einem Fall nur Schwarz und im anderen Fall nur Weiß.
Aber damit kann man leben, weil man mit der richtigen Reihenfolge alles 
hinkriegt.

von Reinhard S. (schopfi)


Lesenswert?

Danke !

Das bekomm ich bestimmt auch hin :-)
Hab bis jetzt noch nie den Kopf in den Sand gesteckt.
Mein Motto ist sowieso "Lernen durch Probieren", so hab ich mir bis 
jetzt alles Beigebracht was ich wissen wollte :-)

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.