Пробуждение PIC с USART RX



Я работаю с микроконтроллером eXtreme Low Power (XLP) PIC 16LF1933.
Чтобы он разрядил батарею, я усыпляю его, пока он не получит символ перерыва (00h) в RX. Документация хорошо объясняет, как настроить автоматический пробуждение с помощью символа "Разрыв" в RX. Я следовал за этим.

Я использую Proteus для имитации проекта, с Виртуальным терминалом для отправки информации. Если вы нажмете
CTRL + SHIFT + @ отправляет de 00h (ноль / все 0), поэтому это разбудит PIC, как сказано в документации.
Проблема в том, что, когда я делаю это, я получаю журнал предупреждений о том, что
Wake up event is only 937.500003us wide. Minimum (at current baudrate) expected is 6.656ms. I'm using 9600 baudrate.
Как сделать правильное событие Wake Up с RX?

мой while код

while (1) {
    BAUDCONbits.WUE = 1;    //Wake-up Enable
    SLEEP();

    while (BAUDCONbits.WUE);

    msg = Receive_Serial(); //Clear RCIF
    __delay_ms(100);
    msg = '\0';             //Discard
    __delay_ms(100);
    msg = Receive_Serial(); //Receive the next character
    __delay_ms(100);
    RCREG = 0;
    msg = '\0';
    __delay_ms(100);
}


И моя функция приема

unsigned char Receive_Serial() {
    if (OERR) {                 //Overrun error
        RCSTAbits.CREN = 0;     //Fix reset Enable Receive
        RCSTAbits.CREN = 1;
    }

    while (!RCIF);

    return RCREG;
}



1 ответ

Предупреждающее сообщение, которое вы получаете, просто связано с тем, что нулевой символ (00h) НЕ является условием прерывания.

Ваш рис-код может быть в порядке, но инструмент разработки не генерирует правильные тестовые данные.

Давным-давно я отчаянно пытался отправить перерыв, чтобы разбудить кусок неактивного оборудования, и мне нужно было отправить его в перерыв. Мой терминал не может отправить один. Я должен был заставить это работать, поэтому быстрый взлом состоял в том, чтобы отправить нулевой символ с терминалом, установленным на более низкую скорость передачи данных, и переключиться обратно на правильную скорость передачи данных.

Другие вопросы по тегам