I'm trying to set bit 2 in TIMSK register and using the following C code:
TIMSK |= (1<<2);
Compiler makes the following code:
TIMSK |= (1<<TOIE1);
108: 89 b7 in r24, 0x39 ; 57
10a: 84 60 ori r24, 0x04 ; 4
10c: 89 bf out 0x39, r24 ; 57
So it is Read-Modify-Write operation which is a) slow, b) not very consistent as sometimes it is better not to disturb any excess bits.
However if I'd replace TIMSK with let's say PORTA I will get SEI
as expected:
PORTA |= (1<<2);
108: da 9a sbi 0x1b, 2 ; 27
So how do I force the compiler to compile the instruction above as bit instruction instead of RMW?
Or this (TIMSK
) register is not bit accessible?