Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
uart disable tx pin
anigav
Добавлено 04.12.2012 15:22
0
Сообщение: 1
anigav
0

Пункты: 128
Регистрация: 26.03.2012
Пол: Мужчина
Добрый день, уважаемые коллеги!

Помогите разобраться...
Надо открыть uart так, что бы tx pin был отключенным (т.е. порт только для чтения). Плата аналог SK-AT91SAM9XE512.

Предистория такова: после загрузки системы tx pin (лапа у меня 15(PB4)) судя по осциллографу находится z состоянии (отключен). Если порт открыть то tx pin переходит в активное состояние - там стабильная 1), если потом закрыть порт - то там остается тоже 1.
Так вот опять проблема - как снова отключить tx pin.
В системе порты определяются так:
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
atmel_usart.3: ttyS3 at MMIO 0xfffb8000 (irq = 8) is a ATMEL_SERIAL
atmel_usart.4: ttyS4 at MMIO 0xfffd0000 (irq = 23) is a ATMEL_SERIAL


Первое что в голову пришло это сбросить/отключить tx pin в регистре команд USART - US_CR(0x0000).

Пробовал для ttyS1 (0xfffb0000+US_CR) устанавливать биты RSTTX (reset TX), или TXDIS (disable TX) - никакой реакции. Вопрос - можно ли так напрямую через регистры управлять uart???
Может у кого-то есть какие-то соображения по этому поводу?!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 04.12.2012 15:44 Редактировалось 04.12.2012 15:44 Сообщение: 2
sasamy
4.77

Пункты: 65188
Регистрация: 14.08.2009
В ядре закоментировать переключение PIO на TXD0
http://lxr.free-electrons.com/source/arch/arm/mach-at91/at91sam9260_devices.c?a=arm#L952
Спуститься к концу Подняться к началу
Персональная информация
anigav
Добавлено 04.12.2012 16:29 Сообщение: 3
anigav
0

Пункты: 128
Регистрация: 26.03.2012
Пол: Мужчина
Цитата
В ядре закоментировать переключение PIO на TXD0
http://lxr.free-electrons.com/source/arch/arm/mach-at91/at91sam9260_devices.c?a=arm#L952


Спасибо, но мне как раз надо работать как в режиме прослушки так и в активном режиме (RX & TX)- т.е. захватывать порт полностью-прием передача. В ядре если отключить - то это уже наверно навсегда. Поэтому и хотелось бы в линуксе полностью управлять лапкой TX.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 04.12.2012 16:45 Сообщение: 4
sasamy
4.77

Пункты: 65188
Регистрация: 14.08.2009
Хоть я ничего и не понял в итоге - что вам нужно (у вас прямопротивоположные хотелки), проще тогда регистры PIO контроллера отобразить в адресном пространстве пользовательского процесса и делайте с ними что душе угодно.
Спуститься к концу Подняться к началу
Персональная информация
anigav
Добавлено 04.12.2012 17:27 Сообщение: 5
anigav
0

Пункты: 128
Регистрация: 26.03.2012
Пол: Мужчина
Цитата
Хоть я ничего и не понял в итоге - что вам нужно (у вас прямопротивоположные хотелки), проще тогда регистры PIO контроллера отобразить в адресном пространстве пользовательского процесса и делайте с ними что душе угодно.


Управлять лапкой TX (вкл. - выключ. в любое время) - при работе с com-портом.
На сколько я понимаю, напрямую управлять лапкой я не могу- т.к. является мультиплексирования с встроенным uart. Поэтому я и пытался управлять через регистр команд USART - US_CR(0x0000).
Цитата
Пробовал для ttyS1 (0xfffb0000+US_CR) устанавливать биты RSTTX (reset TX), или TXDIS (disable TX) - никакой реакции.

Вот поэтому я в тупике - как побороть сие....
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.12.2012 23:41 Редактировалось 06.12.2012 23:43 Сообщение: 6
Jury093
4.58

Пункты: 54164
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Если порт открыть то tx pin переходит в активное состояние - там стабильная 1), если потом закрыть порт - то там остается тоже 1.
Так вот опять проблема - как снова отключить tx pin.

не вижу большой проблемы - раз пины инициализируются при открытие порта, то логично, что при закрытие порта их можно вернуть в исходное состояние (например Z)
вероятно это никому не требуется кроме вас, а значит код или отсутствует или не активизируется..
отсюда мысль - проследите цепочку вызовов функций при регистрации своего уарта и аналогично при закрытие порта.. ну и в подходящее место вставьте отключение "мешающих" пинов..

Цитата
Вот поэтому я в тупике - как побороть сие....

там и останетесь, ибо "код в студию"..

просьба - не выбирайте ядовито-зеленый цвет - "глаз режэт"

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
anigav
Добавлено 07.12.2012 16:40 Сообщение: 7
anigav
0

Пункты: 128
Регистрация: 26.03.2012
Пол: Мужчина
Цитата
не вижу большой проблемы - раз пины инициализируются при открытие порта, то логично, что при закрытие порта их можно вернуть в исходное состояние (например Z)
вероятно это никому не требуется кроме вас, а значит код или отсутствует или не активизируется..
отсюда мысль - проследите цепочку вызовов функций при регистрации своего уарта и аналогично при закрытие порта.. ну и в подходящее место вставьте отключение "мешающих" пинов..

Спасибо, я пытался таким образом отключить uart - TXDIS:
#define TXDIS (1<<7)
#define RSTTX (1<<3)
#define USART_CR 0x00
#define AT91_USART1 0xfffb0000
#define MAP_BASE (AT91_USART1)
.....
mapped_base+=(MAP_BASE & MAP_MASK);
*(int*)(mapped_base+USART_CR) = TXDIS; или RSTTX

но реакции никакой....
Решил проблему криво но работает:
через PIO_PER - перевел в PIO лапу TX uart -а. И теперь она в z.
А прямо писать в регистры uart ничего не дает.
Всем спасибо.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux