PIC16F628 работа с UART

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

PIC16F628 работа с UART

Сообщение intom33 » 06 сен 2016, 15:55

Доброго времени суток Всем !
У меня такой вопрос. Есть переходник USB-RS232 при передачи из компа выдает TTL. Написал программку простую на MikroC for PIC для приема и передачи данных по RS232 вот пример:
Код: Выделить всё
char uart_rd;
void main() {
  UART1_Init(2400);   
  Delay_ms(100);       
   while(1){
      if (UART1_Data_Ready()) {     // If data is received,
      uart_rd = UART1_Read();     // read the received data,
      UART1_Write(uart_rd);
          }
  }

}

ввожу с компьютера например "1" а с контролера выводит "L"
или ввожу "2" а выводит "f"
что не так делаю
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение Madf » 06 сен 2016, 16:24

а у вас на компе точно скорость 2400 бод стоит?

Добавлено спустя 23 минуты 39 секунд:
и да, попробуйте "unsigned char" в типе переменной
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: PIC16F628 работа с UART

Сообщение intom33 » 06 сен 2016, 17:12

да 2400 программу пишу на VisualBasic 2008
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение elmot » 06 сен 2016, 18:40

проверьте битность(8), четность aka parity(N), стоп. бит(1)
на обоих концах
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: PIC16F628 работа с UART

Сообщение intom33 » 06 сен 2016, 21:30

Все проверял и битность и четность все стоит одинаково и стоповый
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение elmot » 07 сен 2016, 00:09

а если на переходнике rx-tx замкнуть - работает программа на бейсике?
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: PIC16F628 работа с UART

Сообщение Madf » 07 сен 2016, 11:57

кстати да, лучшая проверка, это перемычка
так можно проверить и ПК и самоу стройство
если всё работать будет - значит проблема с настройка порта или нестандартной скорости передачи (кратные частоты МК и погрешность передачи)
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: PIC16F628 работа с UART

Сообщение intom33 » 07 сен 2016, 18:38

Спасибо буду пробывать

Добавлено спустя 46 минут 12 секунд:
Поставил перемычку RX---TX работает правильно что посылаю то и приходит
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение Dmitry__ » 07 сен 2016, 18:49

intom33, ты привел кусок какой-то программы, по которой можно только воду заряжать перед телевизором. :)
Нагугли пример и попробуй...
https://yandex.ru/search/?text=PIC16F628%20UART&lr=2
Первые ссылки:
http://www.radiohlam.ru/control/pic_usart.htm
Можно попробовать с протеусом:
http://kazus.ru/forums/showthread.php?t=5015
Кста, интересно как работает протеус с твоей прогой...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: PIC16F628 работа с UART

Сообщение intom33 » 07 сен 2016, 21:11

Это кусок стандартной программы на MikroC for PIC там есть библиотека UART этот код из хелпа я поменял только скорость на 2400 в виндовсовской программе стоит скорость тоже 2400, пробывал посылать байты на пик программкой
COM Port Toolkit 4.0 посылаю символ "1" пик возвращает в место 1 букву "L" посылаю "2" возвращает "f".
Когда отключаю пик контролер и замыкаю RX c TX работает нормаль что посылаю то и принимаю "1"--"1" "2"--"2"
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение Dmitry__ » 07 сен 2016, 21:51

intom33 писал(а):Это кусок стандартной программы на MikroC for PIC там есть библиотека UART этот код из хелпа я поменял только скорость на 2400 в виндовсовской программе стоит скорость тоже 2400

И? Я pic-и юзаю >20 лет, а MikroC не знаю :pardon: . Настаиваю на проверке других примеров, вплоть до асм кода. И да, попробуй не менять скорость, 2400 очень экзотичен, проверь на 9600.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: PIC16F628 работа с UART

Сообщение intom33 » 07 сен 2016, 22:44

Спасибо попробую !
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение intom33 » 29 сен 2016, 20:46

Пробовал на разных скоростях результат одинаковый??
Вот дошел до такого
Код: Выделить всё
char receive;
void main() {
TRISA = 0;
TRISB = 0;
TRISB1_bit = 1;
PORTA = 0;
PORTB = 0;
  UART1_Init(9600);

while(1){
              receive = UART1_Read();
             
             UART1_Write(receive);
        }

}

но теперь правильно отправляет из пика каждую вторую цифру
например шлю 1 выходит 1, шлю 2 выходит не понятно что, шлю 3 выходи 3 и так далее ???
intom33
 
Сообщения: 10
Зарегистрирован: 19 май 2016, 13:49

Re: PIC16F628 работа с UART

Сообщение Zeus » 02 окт 2016, 17:54

может кварц частотозадающий "гуляет"... какой стоит?
В этом контроллере по-моему на чтение буфер стоит в 2 байта - может из-за этого.
Вот может это еще поможет: http://kazus.ru/forums/showthread.php?t=5015
«Сон разума рождает чудовищ»
Аватара пользователя
Zeus
 
Сообщения: 862
Зарегистрирован: 28 июл 2009, 10:02
Откуда: Самара
ФИО: Павел Сергеевич

Re: PIC16F628 работа с UART

Сообщение Seggio » 06 авг 2021, 16:16

В PIC три буфера, теорию читай. Отправить 1 мало. Надо проверить обе ошибки UART сначало
Аватара пользователя
Seggio
 
Сообщения: 20
Зарегистрирован: 30 июл 2021, 08:58


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 8