АндрейЦ 0 24 ноября, 2020 Опубликовано 24 ноября, 2020 · Жалоба Помогите начинающему пикоману. Не могу заставить работать приёмник UART. Условие UART2_Data_Ready() == 1 никогда не срабатывает Вот такой простенький код не работает. Передатчик работает нормально. Отдельно светодиод так же мигает. Писано в mikroC PRO. Spoiler char i ; void main() { TRISE.F3 = 0; //RED LED TRISG.F3 = 0; //T/R_2 LATE.F3 = 1; UART2_Init(9600); delay_ms(2000); LATG.F3 = 1; UART2_Write_Text("Hello world!"); UART2_Write(13); UART2_Write(10); delay_ms(50); LATG.F3 = 0; while (1) { if (UART2_Data_Ready() == 1) { i = UART2_Read(); if(i == '1'){ LATE.F3 = 0; } if(i == '2'){ LATE.F3 = 1; } delay_ms(200); } } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба 3 часа назад, АндрейЦ сказал: Условие UART2_Data_Ready() == 1 никогда не срабатывает Я не программирую в mikroC PRO, но язык Си везде (или почти везде) одинаковый. А это значит, что если вы предоставите код функций инициализации последовательного порта и функции UART2_Data_Ready(), помочь вашей проблеме будет немного проще. Если предоставить код невозможно, то выложите хотя бы возвращаемые параметры и аргументы функций. Можете что-то отправить в порт с микроконтроллера, и, поставив на ножку TX логический анализатор, осциллограф или преборазователь USART<->FT232, посмотреть, правильно ли вообще инициализируете периферию: сам последовательный порт и линии ввода/вывода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АндрейЦ 0 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Пока могу сказать только то, что все используемые функции являются библиотечными. Порт на передачу работает нормально. Не забыл ли я чего при инициализации? Не знаю. Программировать что либо для пиков я начал вчера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Прочитал из интернета This is a generic routine which uses the active UART module previously activated by the UART_Set_Active routine. UART_Set_Active вызывается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АндрейЦ 0 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Хорошего слона я не заметил. В оправдание могу сказать только то, что: 1. в тех проектах, что я нагуглил эта функция не используется 2. добавление её в код ничего не изменило Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Соедините вход и выход и посылайте один байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АндрейЦ 0 25 ноября, 2020 Опубликовано 25 ноября, 2020 (изменено) · Жалоба что мне это даст по сравнению с нажатием кнопки в терминале? ПыСы символы до лапки RX доходят... ПыПыСы наконец то утвердили мой пост на форуме самих микросей. Там форум с премодерацией. Посмотрим что подскажут. Изменено 25 ноября, 2020 пользователем АндрейЦ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АндрейЦ 0 27 ноября, 2020 Опубликовано 27 ноября, 2020 · Жалоба В общем дело было не в бобине... Функции UART_Init не достаточно для инициализации порта. Нужно ручками в регистрах допрописывать функционал пинов. Т.е. лапка RX имеет несколько альтернативных функций. И по умолчанию она совершенно не RX... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 28 ноября, 2020 Опубликовано 28 ноября, 2020 · Жалоба Поэтому полезно читать не только даташит на МК, но и примеры программ, например библиотечных функций, обычно приводящихся вместе с доками на компилятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 28 ноября, 2020 Опубликовано 28 ноября, 2020 · Жалоба 25.11.2020 в 15:22, АндрейЦ сказал: Порт на передачу работает нормально. 13 часов назад, АндрейЦ сказал: И по умолчанию она совершенно не RX... Забавно, что лапка TX, выходит, по-умолчанию именно TX, т.е. настроена на передачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АндрейЦ 0 28 ноября, 2020 Опубликовано 28 ноября, 2020 (изменено) · Жалоба 3 hours ago, Herz said: Поэтому полезно читать не только даташит на МК, но и примеры программ, например библиотечных функций, обычно приводящихся вместе с доками на компилятор. Именно по этому вышеприведенный кусок кода почти "дословно" повторяет тестовую программу из примеров. Почти заключается в том, что когда у меня не заработал пример "из доков на компилятор" я начал искать что не работает, обвешивая все подряд светодиодами. 3 hours ago, MrBearManul said: Забавно, что лапка TX, выходит, по-умолчанию именно TX, т.е. настроена на передачу. Ага, меня тоже это позабавило. Точнее не совсем верно. Лапа ТХ тоже по умолчанию совсем не ТХ, но там почему то все настроилось как нужно. В принципе выбор на МикроС пал именно из за наличия двух ключевых для моей платы встроенных библиотек. Что потенциально должно бы существенно подсократить время написания прошивки. Но чует моё сердце с таким уровнем этих самых библиотек... стоит перейти на более предсказуемый компилятор и таки все сделать ручками Изменено 28 ноября, 2020 пользователем АндрейЦ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 28 ноября, 2020 Опубликовано 28 ноября, 2020 · Жалоба 1 час назад, АндрейЦ сказал: стоит перейти на более предсказуемый компилятор и таки все сделать ручками Здесь я с вами соглашусь на все 100%. Я бы порекомендовал вам компилятор IAR, но он, к сожалению, не поддерживает микроконтроллеры PIC. Коллега по работе использует MPLAB, как и я некоторое время назад, когда начинал с них. Но библиотеки драйверов лучше писать самостоятельно. Во-первых, как вы уже сказали, это более предсказуемо. Во-вторых, вы более плотно изучите микроконтроллер, и вам не составит труда написать ПО, эффективно использующее его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 30 ноября, 2020 Опубликовано 30 ноября, 2020 · Жалоба Самый лучший - CCS PCWHD (PIC C Compiler) – компилятор языка С. Но платный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 30 ноября, 2020 Опубликовано 30 ноября, 2020 · Жалоба Не надо холивара на тему "самый лучший"... Вот я и CCS пользуюсь, и ХС8. Вряд ли однозначно один из них лучше. А кому-то наверняка видится по-другому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 30 ноября, 2020 Опубликовано 30 ноября, 2020 · Жалоба Пользовалась и MikroC PRO. Потихоньку он улучшается. Сначала приходилось использовать внешний редактор. Потом они исправились. Столкнулась с ошибкой в библиотеке. Они не читали silicon errata. Я тоже не сразу... Все мы люди. Везде есть недостатки. И на Солнце есть пятна. Давно было сказано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться