Случайные символы в эмуляторе терминала

В настоящее время я работаю над проектом по выбору различных выходов на основе ввода текста с ноутбука через USB.

В настоящее время я пытаюсь отправить символ из моего PIC18F1320 в HyperTerminal. Я пытался использовать переменные, но получал символы rnadom, такие как улыбающиеся лица и т. Д. Я упростил свой код, чтобы просто напечатать 1, однако я все еще получаю смайлик символы. Я проверил, что я использую правильную скорость передачи данных, и между моим ноутбуком и PIC существует определенная связь, однако в этот момент я полностью застрял, так как понятия не имею, почему выводятся случайные символы.

Я очень мало знаю C, и любая помощь будет оценена

    #include <p18f1320.h>
    #include <usart.h>
    #include <stdio.h>
    #include <stdlib.h>

    void main()
    { 
        OSCCON = 0x70;  // 8MHz internal clock

        // Configure USART
        OpenUSART(  USART_TX_INT_OFF    &
                    USART_RX_INT_OFF    &
                    USART_ASYNCH_MODE   &
                    USART_EIGHT_BIT     &
                    USART_CONT_RX       &
                    USART_BRGH_LOW,
                    12);

        while (1)
        {
            putrsUSART("1");
        }
        CloseUSART();
    }

2 ответа

Поместите свои данные в оперативную память и отправьте. См Гарвард Архитектура

char buf[10];
strcpy(buf, "Hello\n");  // This should cal special ROM to RAM strcpy();
putrsUSART(buf);

Примечание: "Я проверил, что я использую правильную скорость передачи данных", возможно, не правильно. Пока вы не получили достоверные данные, я не был бы слишком уверен в этом.

Внутренний RC-генератор на PIC не достаточно точен для запуска USART с желаемой скоростью - он может отличаться на ±2% от ожидаемой частоты, которая, вероятно, достаточно велика, чтобы вызывать ошибки, которые вы видите. Вам нужно будет подключить и настроить внешний кристалл для правильных результатов.

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