Estoy intentando configurar el bit 2 en el registro TIMSK y usando el siguiente código C:
TIMSK |= (1<<2);
El compilador crea el siguiente código:
TIMSK |= (1<<TOIE1);
108: 89 b7 in r24, 0x39 ; 57
10a: 84 60 ori r24, 0x04 ; 4
10c: 89 bf out 0x39, r24 ; 57
Por lo tanto, es una operación de lectura-modificación-escritura que es a) lenta, b) no muy consistente, ya que a veces es mejor no molestar a los bits en exceso.
Sin embargo, si reemplazara TIMSK por digamos PORTA obtendré SEI
como se esperaba:
PORTA |= (1<<2);
108: da 9a sbi 0x1b, 2 ; 27
Entonces, ¿cómo puedo forzar al compilador a compilar la instrucción anterior como instrucción de bit en lugar de RMW?
¿O este registro ( TIMSK
) no es accesible a bits?