В отладчике я вижу, что указатель имеет нужный мне адрес и переменные
UBRR_VAL
, val1
, val2
содержат переданные значения. Единственная проблема заключается в том, что переменные внутри структуры _UBRRH
, _UBRRL
, _UCSRA
и _UCSRB
не меняются. Ниже вы найдете фрагменты кода для справки. Спасибо.
Вот как определяется struct
typedef uint8_t volatile DEVICEREGISTER;
typedef struct
{
DEVICEREGISTER _UDR;
DEVICEREGISTER _UCSRA;
DEVICEREGISTER _UCSRB;
DEVICEREGISTER _UBRRL;
} uart_register_t;
#define _USART (uart_register_t*) 0x2C
Вот как я вызываю функцию.
uart_init(UBRR_VAL, 0, (1<<_TXC)|(1<<_RXC), _USART); // initialize the uart for outputting and inputting.
Ниже приведено определение функции.
void uart_init(uint8_t UBRR_VAL, uint8_t val1, uint8_t val2, uart_register_t *pointer)
{
pointer->_UBRRL = UBRR_VAL;
pointer->_UCSRA = val1;
pointer->_UCSRB = val2;
}