www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8bit fast PWM beenden


Autor: Reinhard Schopf (schopfi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ziegenpeter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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));

Autor: Reinhard Schopf (schopfi)
Datum:

Bewertung
0 lesenswert
nicht 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.....

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reinhard Schopf (schopfi)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.