Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
RS485 + AT91SAM.. + Linux
Pavel Ivanchenko
Добавлено 12.01.2010 15:51
0
Сообщение: 1
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Возвращаясь к теме ...
Задумал сделать "правильное" переключение порта в 485 режим и обратно через IOCTL ...
Смотрю на atmel_serial.c и пока не пойму, как это лучше сделать ...
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 12.01.2010 18:06 Редактировалось 12.01.2010 18:08 Сообщение: 2
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
1) там кроме этого файла есть еще =) главное решить где именно ты будешь делать инициализацию.
2) указать в регистре US_MR, что ты хочешь именно 485 режим (0x01)
3) разрешить ногу RTS на выход
а вообще, при работе с 485 трансивером ИМХО глупо разрешать юзверю переключать режим УАРТа. даже когда у меня на одном УАРТе висит два трансивера (232 и 485), то RST жёстко задан и дрыгается всегда при передаче.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.01.2010 18:36 Редактировалось 12.01.2010 18:49 Сообщение: 3
sasamy
4.70

Пункты: 76926
Регистрация: 14.08.2009
1) Делать это надо в atmel_set_termios.
Проще всего использовать какой-нибуть неподдерживаемый атмеловским драйвером режим(флаг) из структуры termios, чтобы не править ничего другого кроме атмеловского драйвера. Подобрать по man stty - может быть неподдерживаемое количество бит или другой экзотический режим и на него повесить переключение.
2,3) согласен, меняется mode |= ATMEL_US_USMODE_RS485 и плюс gpio rts - надо даташит посмотреть в каком состоянии должен быть pin для этого режима.
Думаю полезно будет иметь такую возможность для экспериментов, хотя навскидку применимость тоже не вижу :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.01.2010 19:06 Сообщение: 4
sasamy
4.70

Пункты: 76926
Регистрация: 14.08.2009
Вот например 5 битный режим - сомневаюсь что он комуто нужен :)
Код

mode &= ~ATMEL_US_USMODE_RS485;

switch (termios->c_cflag & CSIZE) {
case CS5:
mode |= ATMEL_US_CHRL_8;
mode |= ATMEL_US_USMODE_RS485;
break;
case CS6:
mode |= ATMEL_US_CHRL_6;
break;
case CS7:
mode |= ATMEL_US_CHRL_7;
break;
default:
mode |= ATMEL_US_CHRL_8;
break;
}
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 12.01.2010 19:43 Редактировалось 12.01.2010 19:49 Сообщение: 5
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Собственно, спрашивал на предмет, может кто уже усвоил механизм создания аргументов IOCTL ...
В итоге, подменил через 5-ти битный режим передачи.
Особо не принципиально, но режим 4-мя битами выбирается (в всяком случае, я решил все биты очищать) ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.01.2010 20:50 Редактировалось 12.01.2010 20:55 Сообщение: 6
sasamy
4.70

Пункты: 76926
Регистрация: 14.08.2009
Цитата
Собственно, спрашивал на предмет, может кто уже усвоил механизм создания аргументов IOCTL ...


Тогда Павел ты издалека начал :) Для примера есть статьи
http://rus-linux.net/MyLDP/BOOKS/lkmpg-1/node18.htm
http://www.linuxcenter.ru/lib/books/lkmpg.phtml#AEN674
Потом нужная информация лежит в доках ядра
linux-x.y.z/Documentation/ioctl
Я давно писал драйвер для adc, хотел использовать механизм ioctl для изменения его режимов, почитал вроде все просто но я его тогда так и не дописал. А в данном случае с драйвером компорта не все так просто - он же не напрямую вызывается а через tty, поэтому шамаства будет больше чем пользы. Если хочется пошаманить - можно посмотреть как включается rs485 на архитектуре cris. Драйвер кома для нее crisv10.c и еще куча шаманокода в linux-x.y.z/arch/cris. Это при том что в ядре добавлена структурка специально для rs485.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux