Перейти к содержанию
    

PIC16F1527 проблема с UART

Помогите начинающему пикоману.

Не могу заставить работать приёмник 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);
     }
   }
 }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, АндрейЦ сказал:

Условие UART2_Data_Ready()  == 1 никогда не срабатывает

Я не программирую в mikroC PRO, но язык Си везде (или почти везде) одинаковый. А это значит, что если вы предоставите код функций инициализации последовательного порта и функции UART2_Data_Ready(), помочь вашей проблеме будет немного проще. Если предоставить код невозможно, то выложите хотя бы возвращаемые параметры и аргументы функций.

 

Можете что-то отправить в порт с микроконтроллера, и, поставив на ножку TX логический анализатор, осциллограф или преборазователь USART<->FT232, посмотреть, правильно ли вообще инициализируете периферию: сам последовательный порт и линии ввода/вывода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока могу сказать только то, что все используемые функции являются библиотечными. Порт на передачу работает нормально.

Не забыл ли я чего при инициализации? Не знаю. Программировать что либо для пиков я начал вчера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочитал из интернета

This is a generic routine which uses the active UART module previously activated by the UART_Set_Active routine.

UART_Set_Active вызывается?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошего слона я не заметил. В оправдание могу сказать только то, что:

1. в тех проектах, что я нагуглил эта функция не используется

2. добавление её в код ничего не изменило

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что мне это даст по сравнению с нажатием кнопки в терминале?

ПыСы символы до лапки RX доходят...

ПыПыСы наконец то утвердили мой пост на форуме самих микросей.

Там форум с премодерацией. Посмотрим что подскажут.

 

Изменено пользователем АндрейЦ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем дело было не в бобине...

Функции UART_Init не достаточно для инициализации порта.

Нужно ручками в регистрах допрописывать функционал пинов.

Т.е. лапка RX имеет несколько альтернативных функций.

И по умолчанию она совершенно не RX...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому полезно читать не только даташит на МК, но и примеры программ, например библиотечных функций, обычно приводящихся вместе с доками на компилятор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25.11.2020 в 15:22, АндрейЦ сказал:

Порт на передачу работает нормально.

 

13 часов назад, АндрейЦ сказал:

И по умолчанию она совершенно не RX...

Забавно, что лапка TX, выходит, по-умолчанию именно TX, т.е. настроена на передачу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Herz said:

Поэтому полезно читать не только даташит на МК, но и примеры программ, например библиотечных функций, обычно приводящихся вместе с доками на компилятор.

Именно по этому вышеприведенный кусок кода почти "дословно" повторяет тестовую программу из примеров.

Почти заключается в том, что когда у меня не заработал пример "из доков на компилятор" я начал искать что не работает, обвешивая все подряд светодиодами.

3 hours ago, MrBearManul said:

 

Забавно, что лапка TX, выходит, по-умолчанию именно TX, т.е. настроена на передачу.

Ага, меня тоже это позабавило. Точнее не совсем верно. Лапа ТХ тоже по умолчанию совсем не ТХ, но там почему то все настроилось как нужно.

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

Что потенциально должно бы существенно подсократить время написания прошивки.

Но чует моё сердце с таким уровнем этих самых библиотек... стоит перейти на более предсказуемый компилятор и таки все сделать ручками

 

 

Изменено пользователем АндрейЦ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, АндрейЦ сказал:

стоит перейти на более предсказуемый компилятор и таки все сделать ручками

Здесь я с вами соглашусь на все 100%. Я бы порекомендовал вам компилятор IAR, но он, к сожалению, не поддерживает микроконтроллеры PIC. Коллега по работе использует MPLAB, как и я некоторое время назад, когда начинал с них. Но библиотеки драйверов лучше писать самостоятельно. Во-первых, как вы уже сказали, это более предсказуемо. Во-вторых, вы более плотно изучите микроконтроллер, и вам не составит труда написать ПО, эффективно использующее его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо холивара на тему "самый лучший"... Вот я и CCS пользуюсь, и ХС8. Вряд ли однозначно один из них лучше. А кому-то наверняка видится по-другому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользовалась и MikroC PRO. 

Потихоньку он улучшается. Сначала приходилось использовать внешний редактор. Потом они исправились.

Столкнулась с ошибкой в библиотеке.

Они не читали silicon errata. Я тоже не сразу... Все мы люди. Везде есть недостатки. 

И на Солнце есть пятна. Давно было сказано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...