Технический форум по робототехнике.
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"
что не так делаю
Madf » 06 сен 2016, 16:24
а у вас на компе точно скорость 2400 бод стоит?
Добавлено спустя 23 минуты 39 секунд:
и да, попробуйте "unsigned char" в типе переменной
intom33 » 06 сен 2016, 17:12
да 2400 программу пишу на VisualBasic 2008
elmot » 06 сен 2016, 18:40
проверьте битность(8), четность aka parity(N), стоп. бит(1)
на обоих концах
intom33 » 06 сен 2016, 21:30
Все проверял и битность и четность все стоит одинаково и стоповый
elmot » 07 сен 2016, 00:09
а если на переходнике rx-tx замкнуть - работает программа на бейсике?
Madf » 07 сен 2016, 11:57
кстати да, лучшая проверка, это перемычка
так можно проверить и ПК и самоу стройство
если всё работать будет - значит проблема с настройка порта или нестандартной скорости передачи (кратные частоты МК и погрешность передачи)
intom33 » 07 сен 2016, 18:38
Спасибо буду пробывать
Добавлено спустя 46 минут 12 секунд:
Поставил перемычку RX---TX работает правильно что посылаю то и приходит
Dmitry__ » 07 сен 2016, 18:49
intom33, ты привел кусок какой-то программы, по которой можно только воду заряжать перед телевизором.
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
Нагугли пример и попробуй...
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Кста, интересно как работает протеус с твоей прогой...
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"
Dmitry__ » 07 сен 2016, 21:51
intom33 писал(а):Это кусок стандартной программы на MikroC for PIC там есть библиотека UART этот код из хелпа я поменял только скорость на 2400 в виндовсовской программе стоит скорость тоже 2400
И? Я pic-и юзаю >20 лет, а MikroC не знаю
![Pardon :pardon:](http://roboforum.ru/images/smilies/pardon.gif)
. Настаиваю на проверке других примеров, вплоть до асм кода. И да, попробуй не менять скорость, 2400 очень экзотичен, проверь на 9600.
intom33 » 07 сен 2016, 22:44
Спасибо попробую !
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 и так далее ???
Zeus » 02 окт 2016, 17:54
может кварц частотозадающий "гуляет"... какой стоит?
В этом контроллере по-моему на чтение буфер стоит в 2 байта - может из-за этого.
Вот может это еще поможет:
http://kazus.ru/forums/showthread.php?t=5015
Seggio » 06 авг 2021, 16:16
В PIC три буфера, теорию читай. Отправить 1 мало. Надо проверить обе ошибки UART сначало