реклама на сайте
подробности

 
 
> Как себя вести Open-drain
Leopoldius
сообщение Apr 12 2011, 14:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824



Доброго времени суток.

Попался мне в руки AT91SAM7X256 с платой EtheRus. Занялся разбором сей игрушки 1111493779.gif

Возник попутно вопрос...
Как правильно настроить выход с Open-drain? Правильно ли таким образом будет это сделать. smile3046.gif

Я делал так:

CODE

AT91F_PIOB_CfgPMC();
AT91F_PIO_Enable(PinsPIO.BASE_FOR_PIOs, PinsPIO.SelectedPins);
AT91F_PIO_CfgOutput(PinsPIO.BASE_FOR_PIOs, PinsPIO.SelectedPins);
AT91F_PIO_OutputWriteEnable(PinsPIO.BASE_FOR_PIOs, PinsPIO.SelectedPins);



PinsPIO структура, которая обьявлена как,


CODE

typedef struct _ConfPios
{
unsigned int Selected_PIOs_To_PMC; // Определяем к которому из PIO контроллеров хотим подключить тактовые импульсы
AT91PS_PIO BASE_FOR_PIOs; // Базовый адрес для PIO
unsigned int SelectedPins; // Выводы с которыми работаем
unsigned int PinsMode; // Желаемый режим вывода
int defPinState; // Состояние конфигурируемых выводов по умолчанию

} AT91_STR_PIOs_Config;



Програмирую в uVision 3.90

З.Ы.: Прошу сильно не пинать, т.к. С я учу вместе с раскуриванием данного процесора. Раньше писал для AVR на АСМе и Паскале.
З.Ы.Ы.: Подскажите пожалуйста попутно полезных сайтов по С для АРМ, и вообще где про этот контроллер можно почитать

Спасибо

Сообщение отредактировал Leopoldius - Apr 12 2011, 14:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Сергей Борщ
сообщение Apr 13 2011, 07:34
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Open drain включается записью 1 в соответствующий бит регистра AT91C_BASE_PIOA->PIO_MDER. Как это делается вашими чудо-макросами - неизвестно ("Наши люди в булочную на такси не ездят").


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Leopoldius
сообщение Apr 13 2011, 09:04
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824



Цитата(Сергей Борщ @ Apr 13 2011, 10:34) *
Open drain включается записью 1 в соответствующий бит регистра AT91C_BASE_PIOA->PIO_MDER. Как это делается вашими чудо-макросами - неизвестно ("Наши люди в булочную на такси не ездят").


Это не чудомакросы, а взятые ф-ции с ствндартной библиотеки Keil, которая зовется lib_AT9SAM7X256.h

Описание которой лежит вот здесь

Извините, я наверное неправильно выразился..
Правильной ли будет последовательность включения Open-Drain вывода выполненая в такой последовательности:

1. Подключить выбраный PIO к тактовому генератору
2. Указать что данный вывод мы хотим использовать как выход
3. Разрешить изменение состояние выхода
4. Указать что данный вывод является выходом с Open-Drain

Или достаточно пунктов 1 и 4.

Спасибо.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 13 2011, 09:30
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Leopoldius @ Apr 13 2011, 13:04) *
Это не чудомакросы, а взятые ф-ции с ствндартной библиотеки Keil, которая зовется lib_AT9SAM7X256.h

Данная "библиотека" рождена Атмелом. И лучше ей не пользоваться.

Цитата(Leopoldius @ Apr 13 2011, 13:04) *
Правильной ли будет последовательность включения Open-Drain вывода выполненая в такой последовательности:

Пункт 1 для выхода не нужен, тактирование требуется только если пин используется как вход. Для настройки пина как OD нужно:
1. записать PIO_PER
2. записать PIO_OER
2. записать PIO_MDER
Посмотрите в DS картинку I/O Line Control Logic.

Ну или руками: выставить данные в '0', рулить через OER/ODR - разницы нет никакой.
Go to the top of the page
 
+Quote Post
Leopoldius
сообщение Apr 13 2011, 09:35
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824



Спасибо за ответ.

Цитата(aaarrr @ Apr 13 2011, 12:30) *
Данная "библиотека" рождена Атмелом. И лучше ей не пользоваться.


Чем тогда пользоватся? Руками писать свою библиотечку

aaarrr Если не секрет, в чем ее недостаток? Если это возможно, можете подсказать сайты, где можно взять примеры к данному контроллеру
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 13 2011, 10:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Leopoldius @ Apr 13 2011, 13:35) *
Чем тогда пользоватся? Руками писать свою библиотечку

Пользоваться руками и головой. Но библиотеку писать совсем не обязательно.

Цитата(Leopoldius @ Apr 13 2011, 13:35) *
aaarrr Если не секрет, в чем ее недостаток?

Набор предоставляемых ей функций предельно примитивен (как минимум 90% - это записать значение(я) в регистр(ы)).
Зато создается некоторый уровень "абстракции", который на деле:
а) изрядно затрудняет чтение программы
б) для начинающих зачастую подменяет изучение документации на контроллер
Кроме того, она содержит большое количество "индусского" кода.
Go to the top of the page
 
+Quote Post
Leopoldius
сообщение Apr 14 2011, 06:59
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824



Спасибо за ответы. Процес пошел, пока на уровне smile3046.gif ) Но я думаю что все впереди a14.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016