Сообщение от DrAG0n_
|
А бывает вот такой глюк...
Нашел в VMLAB (я студентов учу на VMLAB+WinAVR)...
|
Ну в даташите всё расписано... Хотя иногда пока догадаешься, где искать...
19.10 Accessing UBRRH/ UCSRC Registers
The UBRRH Register shares the same I/O location as the UCSRC Register. Therefore some special consideration must be taken when accessing this I/O location.
19.10.1 Write Access
When doing a write access of this I/O location, the high bit of the value written, the USART Register
Select (URSEL) bit, controls which one of the two registers that will be written. If URSEL is
zero during a write operation, the UBRRH value will be updated. If URSEL is one, the UCSRC
setting will be updated.
19.10.2 Read Access
Doing a read access to the UBRRH or the UCSRC Register is a more complex operation. However,
in most applications, it is rarely necessary to read any of these registers.
The read access is controlled by a timed sequence. Reading the I/O location once returns the
UBRRH Register contents. If the register location was read in previous system clock cycle, reading
the register in the current clock cycle will return the UCSRC contents. Note that the timed
sequence for reading the UCSRC is an atomic operation. Interrupts must therefore be controlled
(for example by disabling interrupts globally) during the read operation.
Reading the UBRRH contents is not an atomic operation and therefore it can be read as an ordinary
register, as long as the previous instruction did not access the register location.