Me ha llamado la atención que algunos programadores de ARM configuran algunos registros de la CPU con valores que son los mismos valores predeterminados del registro en el reinicio del microcontrolador.
Por ejemplo: el valor predeterminado del IOCON_PIO2_9
parámetro MODE
en LCP1114 es 0x02 (resistencia pull-up habilitada). En el código de ejemplo de Olimex, este valor se establece 0x02
en la inicialización del software, pero este ya es el valor predeterminado.
Este comportamiento ocurre con muchos otros registros.
Por qué alguien haría eso? En mi opinión, este código adicional solo contamina todo y empeora la legibilidad del código. ¿Es esta una buena práctica de programación?
FOO->CTL
tiene un valor predeterminado de 0x12345678, y a uno solo le importa tener los bits inferiores configurados en 8, hay una compensación de claridad/espacio de código/rendimiento entre escribir todo el registro en 0x12345678, versus usar algo como maskedwrite32(&(FOO->CTL), BLAH_MASK, BLAH_MODE8);
_ Si la rutina de escritura enmascarada incluye código para hacerlo atómico en caso de interrupciones, eso puede hacer que sea más lento de lo necesario, pero mejora la generalidad del código.
scott seidman
Juan U.