sundownhunter 0 19 августа, 2023 Опубликовано 19 августа, 2023 (изменено) · Жалоба Добрый день! Новичок в PIC, и пока не понимаю куда копать. Есть плата с данным контроллером. UART контроллера уходит в трансивер, который управляется сигналом DE (1 - TX, 0 - RX). Создаю проект с нуля. Выставляю клоки, без PLL, добавляю модуль UART и DELAY все оставляю по-дефолту. Пишу примитивный код: #include "mcc_generated_files/system.h" #include "mcc_generated_files/uart1.h" #include "mcc_generated_files/pin_manager.h" #include "mcc_generated_files/delay.h" //#define UART_TRANSMIT_FW static uint8_t _byte = 0; int main(void) { // initialize the device SYSTEM_Initialize(); #ifdef UART_TRANSMIT_FW UART_DE_SetHigh(); while (1) { DELAY_milliseconds(300); UART1_Write(_byte++); } #else UART_DE_SetLow(); while (1) { _byte = UART1_Read(); asm(" NOP "); } #endif return 1; } Раскоменчиваю define UART_TRANSMIT_FW, на другой стороне опускаю у аналогичного трансивера сигнал DE, открываю Putty на нужной скорости, и - все работает. Закомменчиваю дефайн, на другой стороне поднимаю DE, открываю Putty на нужной скорости, тыкаю в клавиатуру - когда тыкаю "0" - вижу 0x20, когда "6" - вижу 0x24, когда "8" - вижу 0x30. Эта ахинея всегда одинаковая при нажатии на одинаковую кнопку. При всем этом, на 9600 работает стабильно. Но конечно 9600 это слишком медленно ... Ума не приложу, где я что делаю не так. Подскажите, в какую сторону копать? test.X.7z Изменено 19 августа, 2023 пользователем sundownhunter Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sundownhunter 0 19 августа, 2023 Опубликовано 19 августа, 2023 · Жалоба Разобрался сам. Проблема была в нехватке подтяжки пина ... 😐 (IOCPUE = 0x0020) Тему можно удалить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться