Я пытаюсь написать, чтобы использовать множественный последовательный интерфейс на 68HC12, но не могу заставить его говорить.Я думаю, что изолировал проблему от невозможности записи в регистр SC1DRL (Низкий регистр данных SCI).
Следующее из моего ISI SCI:
else if (HWRegPtr->SCI.sc1sr1.bit.tdre) {
/* Transmit the next byte in TX_Buffer. */
if (TX_Buffer.in != TX_Buffer.out || TX_Buffer.full) {
HWRegPtr->SCI.sc1drl.byte = TX_Buffer.buffer[TX_Buffer.out];
TX_Buffer.out++;
if (TX_Buffer.out >= SCI_Buffer_Size) {
TX_Buffer.out = 0;
}
TX_Buffer.full = 0;
}
/* Disable the transmit interrupt if the buffer is empty. */
if (TX_Buffer.in == TX_Buffer.out && !TX_Buffer.full) {
Disable_SCI_TX();
}
}
TX_Buffer.буфер имеет правильную вещь в индексе TX_Buffer.out, когда его содержимое записывается в HWRegPtr-> SCI.sc1drl.byte, но мой отладчик не показывает изменения, и никакие данные не передаются через последовательный интерфейс.
Кто-нибудь знает, что мне не хватает?
edit:
HWRegPtr определяется как:
extern HARDWARE_REGISTER *HWRegPtr;
HARDWARE_REGISTER - это гигантская структура со всеми регистрами в нейи является летучим.