Страница 1 из 1
Подключение MAX485
Добавлено: Сб май 27, 2017 13:18:40
akori
Добрый день!
помогите заставить работать связку МК ATMEGA32A - MAX485 - ПК (свисток)
а то я совсем уже упоролся...
ATMEGA32A 2мГц от внутреннего осциллятора, UART 9600, 8-1-0
драйвер 485 - китай, с Али
свисток RS485-USB
собрано на макетке, сейчас в бесконечном цикле посылается один символ и ловится гипертерминалом
точнее не ловится, даже мусора нет, но примерно каждый пятый вторник, во время полнолуния мусор таки начинает приходить
на TXD МК сигнал скачет, на выходе с драйвера тоже, как и на свистке...
линия связи 30см, витая пара, без согласования..
блин, мне кажется я уже все перепробовал...
схема

код
Код: Выделить всё
#define baudrate 9600L
#define bauddivider (F_CPU/(16*baudrate)-1)
#define HI(x) ((x)>>8)
#define LO(x) ((x)& 0xFF)
void usartInit() {
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UBRRL = LO(bauddivider);
UBRRH = HI(bauddivider);
UCSRA = 0;
UCSRB = 1<<RXEN|1<<TXEN|1<<RXCIE;
UCSRC = 1<<UCSZ0|1<<UCSZ1;
USART_TX_CTRL_DDR|=(1<<USART_TX_CTRL_PIN);
USART_TX_CTRL_PORT&=(1<<USART_TX_CTRL_PIN);
}
//управление приемом/передачей
void usartEnableTX(unsigned char state){
if (state==USART_TX_ON)
USART_TX_CTRL_PORT|=(1<<USART_TX_CTRL_PIN);
else
if(state==USART_TX_OFF)
USART_TX_CTRL_PORT&=!(1<<USART_TX_CTRL_PIN);
}
//ф-я отправки символа
void usartPutc( unsigned char data ) {
while ( !(UCSRA & (1<<UDRE)) );
UDR = data;
}
int main( void ) //Ãëàâíàÿ ôóíêöèÿ
{
usartInit();
sei();
for(;;) {
usartEnableTX(USART_TX_ON);
usartPutc("1");
}// for(;;)
}
Re: Подключение MAX485
Добавлено: Сб май 27, 2017 21:08:06
Meteor
А почему у Вас дифференциальная пара притянута к питанию и земле резисторами? Резистор должен быть один 120 Ом между А и В
Re: Подключение MAX485
Добавлено: Вс май 28, 2017 10:14:59
akori
Эм... я когда собирал информацию по протоколу, наткнулся на вот
эту статью
Раздел 4 Защитное смещение
а вот согласование не стал делать, ибо линия всего 30см
Добавлено after 11 minutes 14 seconds:
Выбросил я MAX485 и подключил напрямую МК к другому переходнику rs232-usb
та же фигня, но начал писать фигню в гипертерминал, но при скорости приемника 110 и 300 бод
получается, неверна инициализация UART или скорость работы МК?
Проверил фьюзы, вроде по частоте все ок
Код: Выделить всё
D:\AVR\avrdude>avrdude -p m32 -c usbasp
avrdude: warning: cannot set sck period. please check for usbasp firmware update
.
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9502 (probably m32)
avrdude: safemode: Fuses OK (E:FF, H:99, L:E2)
avrdude done. Thank you.
D:\AVR\avrdude>
Re: Подключение MAX485
Добавлено: Вс май 28, 2017 12:08:55
Jack_A
Нормальная постановка вопроса: я знаю, как рекомендовано, но так делать не буду. Почему у меня не работает ?
Пытаться осуществлять синхронную передачу с неизвестеой частотой МК +-10%? Оптимист. Мне как-то тоже пришлось сопрягать некварцованный МК (для меня такие штуки как серпом - по Фаберже) , так из 10 устройств заработало одно. Пришлось играться частотами. До сих пор вспоминаю с отвращением.
Кварц стоит центов 10..15 ... Стоимость времени у нас нулевая ( время = деньги ) , а геморр на свою... голову тоже не в счет.
Спойлер
Мне кажется: "Зачем делать хорошо, если можно абы как - и так сойдет" - она и есть та национальная идея, которую безуспешно пока ищут ваши и наш - правители.
Re: Подключение MAX485
Добавлено: Вт май 30, 2017 02:24:45
akori
[uquote="Jack_A",url="/forum/viewtopic.php?p=3115163#p3115163"]Нормальная постановка вопроса: я знаю, как рекомендовано, но так делать не буду. Почему у меня не работает ?
Пытаться осуществлять синхронную передачу с неизвестеой частотой МК +-10%? Оптимист. Мне как-то тоже пришлось сопрягать некварцованный МК (для меня такие штуки как серпом - по Фаберже) , так из 10 устройств заработало одно. Пришлось играться частотами. До сих пор вспоминаю с отвращением.
Кварц стоит центов 10..15 ... Стоимость времени у нас нулевая (
время =
деньги ) , а геморр на свою... голову тоже не в счет.
Спойлер
Мне кажется: "Зачем делать хорошо, если можно абы как - и так сойдет" - она и есть та национальная идея, которую безуспешно пока ищут ваши и наш - правители.[/uquote]
по вашей логике можно вообще не парится, а купить у китайцев сразу готовую железку за 10 баксов...
Общие рассуждения про так надо жить и что надо все правильно делать, я и без вас могу на любую тему кому угодно задвинуть. Могу но не буду

Re: Подключение MAX485
Добавлено: Вт май 30, 2017 04:42:34
bolek
[uquote="akori",url="/forum/viewtopic.php?p=3116430#p3116430"]...
Общие рассуждения про так надо жить и что надо все правильно делать, я и без вас могу на любую тему кому угодно задвинуть. Могу но не буду

[/uquote]
Что-то я не пойму, у кого проблема с неработающим RS-485 - у тебя или у
Jack_A?
Он тебе дал конкретный совет - поставь кварц, а ты пальцы гнешь да еще на него же наезжаешь - не тот совет дал, не нравится он тебе.
Его совет правильный, 99% таких проблем как у тебя, связаны с
- несовпадающей скоростью
- отсутствием согласования линии
Ну а ты можешь продолжать стоять в дурацкой позе: все делать неправильно, удивляться что не работает и ждать феечку с волшебной палочкой.
Re: Подключение MAX485
Добавлено: Вт май 30, 2017 05:49:23
akl
akori
Думаю, что эта строчка некорректна, т.к. вместо UCSRC идёт обращение к UBRRH и устанавливается огромный делитель.
Посмотрите внимательно в DS порядок обращения к регистру UCSRC с помощью бита URSEL
UCSRC = (1<<URSEL)....;
Re: Подключение MAX485
Добавлено: Вс мар 12, 2023 19:11:59
slyubez
Апну-ка я эту тему.
Уже пару месяцев пытаюсь заставить работать систему из семи устройств, соединенных линией через RS485 и питающихся от общего блока питания 12В. Внутри каждого устройства стоят стабилизаторы 7805 и микросхемы MAX485EPA+ и их аналоги. Одно из устройств ведущее и имеет внутри себя неотключаемый терминатор. В идеале ведущее устройство поочередно опрашивает каждое из ведомых, получая от него ответное мяу. Когда к линии подключены первые два устройства - все хорошо, но стоит нагрузить линию остальными, в линии появляется мусор. Изначально монтажники вообще сделали линию алюминиевой витой парой с кучей скруток, с ответвлениями и без должного согласования. Вначале заменил неисправные микросхемы 485, благо что они в панельках. Затем расставил перемычки подключения терминаторов и переключил провода таким образом, чтобы структура линии была корректной, без отводов и с терминаторами. Не помогло... Заменил интерфейсную пару на отдельный неэкранированный медный кабель 1х2х0,5 (витая пара); общая длина порядка 50 метров - тоже не помогло. Питание в порядке. Но выяснилась очень интересная вещь. Беру в пятницу свой ноутбук со свистком USB-RS485, чтобы посмотреть обмен, подключаю в середине линии (питание ноутбука от его собственного аккумулятора), перезапускаю ведущее устройство - и система начинает работать нормально, обнаруживая все устройства. Затем просто вытаскиваю свисток из USB - опять появляется мусор. Поискал схемы таких свистков и обнаружил, что в них есть отдельный терминатор и резисторы подтяжки проводов А и В по питанию. Пробовал терминировать ближайший контроллер, благо это делается джампером - бесполезно. Хочу послезавтра попробовать воткнуть в контроллер подтягивающие резисторы 2,2 кОм на питание. Насколько я видел, контроллеры таких резисторов не содержат; завтра посмотрю на резервном контроллере. Посмотрю, может это что-то даст, и при этом система не сгорит.
PS Забыл. Скорость обмена 9600 бод.
Re: Подключение MAX485
Добавлено: Пн мар 13, 2023 19:12:45
slyubez
Насколько я видел, контроллеры таких резисторов не содержат; завтра посмотрю на резервном контроллере.
Да, действительно, на контроллере такой подтяжки к питанию нет. Вскрыл свой свисток, посмотрел его - вот на нем действительно подтяжка есть резисторами 2,2К, и при этом терминатор не смонтирован, что хорошо. Завтра попробую подцепить резисторы на ноги MAX485 и посмотреть результат.
Re: Подключение MAX485
Добавлено: Вт мар 14, 2023 18:21:49
slyubez
[uquote="slyubez",url="/forum/viewtopic.php?p=4385493#p4385493"]Завтра попробую подцепить резисторы на ноги MAX485 и посмотреть результат.[/uquote]
Попробовал. Всё заработало, не потребовалось никаких дополнительных манипуляций и матерных заклинаний. Буду теперь знать, что причиной проблем вполне может быть отсутствие подтяжки линии RS485 к питанию.