Случайные символы в эмуляторе терминала
В настоящее время я работаю над проектом по выбору различных выходов на основе ввода текста с ноутбука через 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% от ожидаемой частоты, которая, вероятно, достаточно велика, чтобы вызывать ошибки, которые вы видите. Вам нужно будет подключить и настроить внешний кристалл для правильных результатов.