PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Atmel Studio7 : Operator Bitweises NOT ( ~ )



Bernd_Stein
24.02.2020, 09:58
Hallo zusammen,


warum wird dies im AS7 mit debugWire im Einzelschritt nicht korrekt ausgeführt?


ATtiny13A





;
;Systemtakt ( 128kHz ) nochmals durch 128 teilen ( 1kHz )
;
in a,CLKPR ;Clock Prescaler Register laden..
sbr a,1<<CLKPCE|0<<CLKPS3|0<<CLKPS2|0<<CLKPS1|0<<CLKPS0;Sicherheitsprozedur..
out CLKPR,a ;..durchfuehren und..
sbr a,~1<<CLKPCE1|<<CLKPS2|1<<CLKPS1|1<<CLKPS0;..jetzt Teiler einstellen..
out CLKPR,a ;..und ueberschreiben




oder halt diese Variante :





sbr a,0<<CLKPCE1|<<CLKPS2|1<<CLKPS1|1<<CLKPS0;..jetzt Teiler einstellen..





Ich erwartete halt dass Ergebnis $07, aber CLKPCE bleibt gesetzt $87.


Bernd_Stein

Holomino
24.02.2020, 11:18
sbr = Set Bit(s) in Register
Will meinen: Der Befehl setzt keine bereits im Register gesetzten Bits zurück. Dafür gibt's den cbr-Befehl.

Wobei in Deiner Anwendung wahrscheinlich eher der ldi (load immediately) hilft, weil dann der gewünschte Registerinhalt durch einen einzigen Befehl gesetzt werden kann.

Klebwax
24.02.2020, 17:20
Was mir so auffällt:

ein bitweises OR mit 0 löscht kein Bit, es hat einfach keine Wirkung. Und

0<<CLKPCE1|<<CLKPS2|

Was bedeuted "|<<" ? Da fehlt sicher was.

MfG Klebwax

Bernd_Stein
25.02.2020, 11:30
Ich mache es mal hier, weil mir dort die Forensoftware besser gefällt und immer noch dass Problem besteht, dass ich keine Cookies haben will und ich mich deshalb wahrscheinlich in Zukunft nicht mehr anmelden kann, weil das Feld hierzu überdeckt wird.

34850

https://www.mikrocontroller.net/topic/295439?goto=6157180#6157180



Bernd_Stein