Ник:
Пароль:

Контакты

Телеграм: 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
Управление RTS/CTS
titan83
Добавлено 01.03.2013 14:05
0
Сообщение: 1
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Друзья, добрый день. Возникла потребность управлять состоянием дополнительных линий (в частности RTS) uart на 9g45.
Пробую такие варианты:

#include <stdio.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <error.h>
#include <errno.h>

#include <linux/serial.h>
не найдено #include <linux/serial_reg.h>
не найдено #include "dtr.h"
не найдено #include "res.h"

void setrts(int fd, int on)
{
int controlbits;

ioctl(fd, TIOCMGET, &controlbits);
if (on) {
controlbits |= TIOCM_RTS;
}
else {
controlbits &= ~TIOCM_RTS;
}
ioctl(fd, TIOCMSET, &controlbits);
}

и

/* Raise RTS and DTR.
* Linux will have already done this but some Unix system don't and
* some wait for DCD before doing so, so make it explicit.
*/
flags = TIOCM_RTS;
if ( ioctl( fd, TIOCMBIS, &flags ) != 0 )
{
fprintf( stderr,"Failed to raise RTS and DTR. Errno %d
", errno );
/* Possibly not fatal so we continue */
}

/* Drop RTS */
flags = TIOCM_RTS;
if ( ioctl( fd, TIOCMBIC, &flags ) != 0 )
{
fprintf( stderr,"Failed to clear RTS. Errno %d
", errno );
}

порт открыт, по нему производится обмен с устройством, но RTS на мои действия никак не реагирует. Может он здесь вообще настроен как вход? Какие еще могут быть варианты?
Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.03.2013 14:14 Сообщение: 2
sasamy
4.77

Пункты: 65188
Регистрация: 14.08.2009
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 01.03.2013 14:14 Сообщение: 3
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
плохо, что нельзя редактировать свои сообщения.
добавлю, что использую ttS0, от которого отключен DEBUG.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 01.03.2013 14:16 Сообщение: 4
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Уважаемый sasamy, спасибо.
Причем читал эту тему, но на свою ситуацию не отразил(
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 01.03.2013 15:05 Сообщение: 5
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
У меня пока не заработало, но, видимо, по другой причине.
Я хочу включить RTS-CTS на DEBUG (ttyS0) порту, поэтому манипуляции с spi сюда не относятся. читаю файл board-sam9g45-ek.c, в нем пишут
at91_register_uart(0, 0, 0); //ttyS0 RX, TX only
переписываю на
at91_register_uart(0, 0, ATMEL_UART_CTS | ATMEL_UART_RTS);
перекомпилирую, заливаю.
все равно уровень не меняется.
я не уверен в первом и втором параметре, возможно их тоже необходимо корректировать.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.03.2013 15:26 Сообщение: 6
Jury093
4.58

Пункты: 54164
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
чего-то все сумбурно..
не могу понять - как соотносится ttнS0 и DEBUG и на каких пинах и что ожидается..

на всякий случай ttyS0 (dbgu) - это отладочный порт чисто RX/TX с преобразователем на RS232
а истинные УАРТы (RX/TX/RTS/CTS) выведены на пинхидер..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 01.03.2013 15:50 Сообщение: 7
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Цитата
чего-то все сумбурно..
не могу понять - как соотносится ttнS0 и DEBUG и на каких пинах и что ожидается..

на всякий случай ttyS0 (dbgu) - это отладочный порт чисто RX/TX с преобразователем на RS232
а истинные УАРТы (RX/TX/RTS/CTS) выведены на пинхидер..

последнее замечание - крайне важное. если ttyS0 физически не может ничего, кроме RX, TX, то вопрос снимается - буду делать с ttyS1.
спасибо
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux