3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
1 | |
Обмен данными между МК через RS-485 (MAX487)28.10.2015, 09:01. Показов 13296. Ответов 86
Метки нет (Все метки)
Доброго времени суток.
Сразу к делу: В сообщении прикреплено фото и файл исходного кода (AtmelStudio 6) и проект в Proteus 8 Prof. Проблема в следующем: из МК U2 поднимаем ножку PD3, передаем данные TXD (рис.п.1) MAX487 передает другой стороне (рис.п.2), а U3 принимает RXD (рис.п.3). Далее U3 обрабатывает данные и выдает ответ TXD (рис.п.4), MAX487 передает другой стороне (рис.п.5), но вот U2 через RXD (рис.п.6) ничего не принимает. Помогите пожалуйста разобраться.
0
|
28.10.2015, 09:01 | |
Ответы с готовыми решениями:
86
RS-485: PIC18f4620 и MAX487 Обмен данными по RS-485 в CodeVisionAVR (на базе кода Wizard Обмен данными между БП и УТ на 1С 8.2 через OLE, ADO Обмен данными между 2 клиентами через интернет Обмен данными между телефонами через интернет |
28.10.2015, 10:10 | 2 |
...правильное включение драйвера RS-485:
p.s.: среди прочего, есть MAX13410 с автодетекцией сигнала в линии и автопереключением драйвера с приема на передачу автоматом. Код упрощается к тому же.
3
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
28.10.2015, 15:03 [ТС] | 3 |
т.е. все дело только в гальванической развязке?
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|||||||||||
28.10.2015, 20:33 [ТС] | 6 | ||||||||||
Код:
для AtMega16 по схеме: Кликните здесь для просмотра всего текста
для AtMega8 по схеме: Кликните здесь для просмотра всего текста
raxp, на второй картинке +5В - это разные источники, или они замкнуты
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
||||||
29.10.2015, 07:19 [ТС] | 8 | |||||
Да, конечно, прерывания используются
ISR(USORT_TXC_vect) - для выхода из режима передачи после отправки байта
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
29.10.2015, 08:03 [ТС] | 10 |
Эммм.. ну да, я про третью и говорил... ясно!
Вчера немного покумекал и пришел к выводу, что в моей схеме проблема точно не в развязке. заменив 120 Ом на 10к (причем по ошибке) получились разницы на "А" и "Б" одинаково-противоположные (как и должно быть), но с разными пределами. по кривым видно, что линии 3 и 4 поднимается и опускается вовремя. при посылке с U2 на U3 все прекрасно и на кривых 1 и 2. а вот обратно 1 с низким потенциалом (линия А MAX487) в Протеусе, для симуляции перед пайкой, небыло других компонентов RS485 кроме MAX487, поэтому их и использовал. да и в наличии есть они у меня.
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
29.10.2015, 08:45 | 11 |
это какой компилятор?
ни разу не видел такой записи схему проверить не смогу, мой протеус при двух камнях вешается мг бы просмотреть програмку но поскольку придется продиратся через код, то пока подождуможет кто то придет и поправит, если нет то придется продиратся попробуй поставить точку останова в U2 на прием и посмотри доходит ли дело до прерывания? может где то флаги не сбрасываешь?
0
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
29.10.2015, 08:51 | 12 |
Наверно имелось ввиду ISR(USORT_RXC_vect)
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
29.10.2015, 08:55 [ТС] | 13 |
В начале описал все. Это AtmelStudio 6
по поводу прерываний в U2 в до U2 то и не доходит сигнал. Из U2 уходит в связку MAX487 далее приходит на U3. Там отрабатывают прерывания, обрабатывается пакет и отправляется ответ обратно с U3 на U2 и тут - то трабла. из U3 Выходит как надо, а вот в U2 уже не доходит - затыкается на связке MAX487, причем только в обратном направлении.
0
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
29.10.2015, 09:00 | 15 |
ИМХО: не факт что так оно и есть, Proteus тоже глючит. Я в своё время попадал на такое(не правильная симуляция), после этого Proteus не использую.
ЖЕЛЕЗО НАШЕ ВСЁ!
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
29.10.2015, 09:03 | 16 |
я так понял уровни прием/передача нормально переключаются
подключи еще один осциллограф на 1, 4 ножку MAX487 и посмотри пропускает она сигнал или нет может кстати и протеус косячить
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
29.10.2015, 09:12 [ТС] | 17 |
Хм... темный лес какой-то:
подключил на 1 и 4 ножки - сигналы есть. подключил осцилоскопы параллельно - показывают разные значения. Отключил вообще осцилоскопы и симуляция вообще отказывается работать. Неужели действительно проблема в протеусе. На недели придет отладочная плата. попробую собрать на железе и реальным осцилографом померить, у меня С1-93 СССРовский еще.
0
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
29.10.2015, 10:34 | 18 |
0
|
3 / 3 / 1
Регистрация: 26.07.2013
Сообщений: 46
|
|
29.10.2015, 14:09 [ТС] | 20 |
Есть и то и другое:
ISR(USORT_RXC_vect) ISR(USORT_TXC_vect) - для выхода из режима передачи после отправки байта. СМ Полный код Добавлено через 3 минуты Взял - Смотрю.. подтяжку уже исправил +5 и GND. сопротивления тоже разные пробовал, но это не та суть.. Пока еще смотрю дальше Добавлено через 2 минуты а какую роль в третьей схеме выполняет транзистор "КТ361" Добавлено через 1 минуту Все понял. как ключ.. не туда просто посмотрел сначало
0
|
29.10.2015, 14:09 | |
29.10.2015, 14:09 | |
Помогаю со студенческими работами здесь
20
Обмен данными через указатель между потоками Обмен данными через COM- соединение между разными конфигурациями Обмен данными между программой и сервисом через NamedPipe Обмен данными между процессами через именованные каналы Обмен данными между формами через нестатические члены Обмен данными между процессами в линуксе через pipe Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |