www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Im TIMSK Register gezielt Bits ein und ausschalten


Autor: R--- S--- (rene66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da man Ja nicht dierekt per Sbi oder Cbi auf die Bits des TIMSK 
registers zugreifen kann geht das ja nur mit

out TIMSK, xxx

ich möchte aber zum auschalten einzelner bits die anderen nicht 
verändern da andere Timer auch auf das Register zugreifen.

zum einschalten geht das mit:

in    tempL,TIMSK
ori   tempL,(1<<OCIE1A)
out   TIMSK, tempL

Das Bit ausschalten geht leider so nicht:

in    tempL,TIMSK
ori   tempL,(0<<OCIE1A)
out   TIMSK, tempL

dann habe ich das versucht was auch geht

in    templ,TIMSK
andi  tempL, 0B11101111
out   TIMSK, tempL

gibt es auch noch andere Methoden oder schreibweisen?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach dir mal klar, was ORI ist (--> Boolesche Algebra).

Dann wird aus
> in    tempL,TIMSK
> ori   tempL,(1<<OCIE1A)
> out   TIMSK, tempL

nämlich
> in    tempL,TIMSK
> andi  tempL,~(1<<OCIE1A)
> out   TIMSK, tempL

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das Bit ausschalten geht leider so nicht:>

>in    tempL,TIMSK
>ori   tempL,(0<<OCIE1A)
>out   TIMSK, tempL

>dann habe ich das versucht was auch geht
>
>in    templ,TIMSK
>andi  tempL, 0B11101111
>out   TIMSK, tempL

sowas in der Art (kenne mich in ASM nicht aus)
also ne eins reinschiften und dann bitweise negieren, das ganze mit und 
verknüpfen!

in    templ,TIMSK
in    temp2,(1<<OCIE1A)
neg temp2
andi  tempL, temp2
out   TIMSK, tempL

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
in    temp1,TIMSK
cbr temp1,1<<OCIE1A
out   TIMSK, tempL

MfG Spess

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> in    templ,TIMSK
> in    temp2,(1<<OCIE1A)
> neg temp2
> andi  tempL, temp2
> out   TIMSK, tempL

Kann man machen. Das neg kann man aber auch gleich in (1<<OCIE1A) 
verrechnen, dazu war die Tilde in meinem Beispiel gedacht.

Autor: spress53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

'neg' ist falsch. Wenn schon dann 'com'.

MfG Spess

Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICh mache sowas gerne mit EOR:

in    temp1,TIMSK
ldi   temp2, 0b00010000 ;OCIE1A
eor   temp1, temp2
out   TIMSK, temp1


Toggelt das Bit OCIE1A. Das Bit kippt nach jedem Aufruf in die andere 
Richtung.

Grüße
Björn

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.