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

 
 
> Как себя вести 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
Ответов
Сергей Борщ
сообщение 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



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:02
Рейтинг@Mail.ru


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