Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
30.08.2007, 14:22
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Связь 2 двух МК по RS485,ошибки при передаче данных.
Связь 2 двух МК по RS485,ошибки при передачи. Связал между собой по RS 485(микросхемы ST485bn) 2 микроконтроллера Mega16.Оба микроконтроллера работаю от собственного внутреннего генератора с одинаковой частотой (1MHz), скорость передачи была настроена самая низкая 110 baud.Когда МК посылает одну цифру то другой МК получает совершенно не то значение. При передачи значения putchar(70) другой МК воспринимает это как 245, при передачи разных чисел могут приходить одно и тоже значение. При передачи могут быть посланы 5 байт а получены 3. В чем проблема, в частоте МК, в микросхемах ST485bn, в программе? Программа написана в CodeVision , USART настроен им же. Моя задача была передавать между МК данные (значения от 0 до 255). Я посмотрел на функцию getchar() ,в ней используется переменная char (от – 127 до +127) а мне нужно работать с переменными unsigned char, почему в этой функции используется переменная char ? По USART что нельзя получать данные типа unsigned char? Короче у меня одни вопросы, надеюсь что увижу на них ответы.
|
|
|
|
30.08.2007, 14:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
"Вину" 485-го легко доказать(опровергнуть). Соедините Ваши МК по УАРТ напрямую с ТТЛ уровнями, проверьте результат соединения.
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
30.08.2007, 15:00
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Внутренняя частота немного бегает, а нужна стабильная частота, поэтому нужно поставить кварц...
|
|
|
|
30.08.2007, 18:30
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
USART и RS 485 заработал нормально, МК начали общаться . Проблема была в тактировании МК. От внутреннего RC-генератор толку нет, одни сплошные ошибки на любых скоростях.
После установки внешних кварцев все заработало отлично.
|
|
|
|
12.10.2007, 11:44
|
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
А почему для RS-485 важна частота контроллера? Он ведь вроде асинхронный?
|
|
|
|
12.10.2007, 12:07
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от Zemlyanov
|
USART и RS 485 заработал нормально, МК начали общаться . Проблема была в тактировании МК. От внутреннего RC-генератор толку нет, одни сплошные ошибки на любых скоростях.
После установки внешних кварцев все заработало отлично.
|
Ну ведь внутренние RC-генераторы могут не дать нужной точности для построения интерфейса обмена на такой высокой скорости.
Кстати, не работайте Вы этими putchar и т.п. Проще один раз написать свой модуль обмена и наслаждаться жизнью много лет
|
|
|
|
12.10.2007, 12:18
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Сообщение от stri
|
А почему для RS-485 важна частота контроллера? Он ведь вроде асинхронный?
|
Вот как раз для асинхронного и важна точность тактового. Если - как у синхронного - строб идет отдельной линией, то на времянки, по сути, плевать...
А на встроенном RC генераторе частота скачет очень сильно - и от температуры, и от напряжения питания. Для RS232 нужна точность - не более 6% ошибка, если не путаю. RC такую стабильность даст, наверное, только в термостате
|
|
|
|
12.10.2007, 12:54
|
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
А, дошло. Т.е. не важно, чтоб у обеих контроллеров частота была к примеру 1мгц, а важно чтоб она соответсвовала делителю частоты в чипе, т.е. PIC 8Мгц сможет общатся с АТМЕL 12Мгц без проблем?
|
|
|
|
12.10.2007, 12:58
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от stri
|
А, дошло. Т.е. не важно, чтоб у обеих контроллеров частота была к примеру 1мгц, а важно чтоб она соответсвовала делителю частоты в чипе, т.е. PIC 8Мгц сможет общатся с АТМЕL 12Мгц без проблем?
|
Сможет. Главное в обоих МК задать одинаковую скорость обмена с допустимой точностью.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:15.
|
|