using volatile struct with all UART fields can be much simplier...