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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Конфигурирование ножки порта TM32F100
ELEKTROS
сообщение Jul 8 2011, 10:17
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Подскажите другой вход из такой вот проблемы: настраиваю шим от таймера 3 на ножках порта PC 6, 7, 8,9, через ремап, потом в определённый момент работы мне не нужен ШИМ, а нужно прямое управление этими ножками, пока вижу только два варианта выхода из этого:
1) Переконфигугрирование ножки темже ремапом и настройка ножки по новому через структуру.
2) Установка в регистр сравнения значений 0 или 0xFFFF и вкрючая и выключая соответствующий канал сравнения (но что то мне подсказывает что работать будет криво).
Вообщем оба метода относительно долгие по времени.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 8 2011, 10:51
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Remap-то зачем трогать? Просто меняете режим работы ноги с альтернативного выхода на пушпульный выход. Это пара команд.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 8 2011, 11:48
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Ну например вот так:
Код:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7_GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIO_PORT[Pin_number], &GPIO_InitStructure);

или по короче как подскажите?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 8 2011, 12:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(ELEKTROS @ Jul 8 2011, 15:48) *
или по короче как подскажите?

Ясно как. Отказаться от GPIO_Init(). Программировать регистры напрямую. В руководстве по МК все регистры описаны.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 8 2011, 13:56
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ELEKTROS @ Jul 8 2011, 17:48) *
или по короче как подскажите?

Если вы пишете на C++, то посмотрите вот сюда. Это удобная обёртка для работы с ножками. Если на простом си, то вот: [attachment=58495:gpio.h.zip]
Это так называемые макросы им. Волкова. Пользоваться так:
Код
// Объявляем ножку:
#define PC6 C, 6, L     // порт "C", нога номер 6, активный уровень - низкий.
#define PC7 C, 7, H     // порт "C", нога номер 6, активный уровень - высокий

// Конфигурируем ножку:
pmode(PC6, PIN_CFG_OPP_50MHZ);    // выход
pmode(PC7, PIN_CFG_AI);    // альтернативный вход

// Используем ножку:
on(PC6);   // переводим в активный уровень (в низкий в данном случае)
off(PC7);   // переводим в неактивный уровень (высокий)

//и так далее.




--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 8 2011, 15:23
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Так а разница между: on(PC6) и off(PC6) например тогда какая, если там активный или нет уровень на выходе определяется самым первым дефайном, где объявляем ножку?
Я так понял что это условность что приймем за активный а что нет, поэтому ипользовать впринципе без разницы on или off, или я не так понял?
Здесь мне кажеться правильно так коментай:
off(PC7); // переводим в неактивный уровень (в данном случае низкий)

Сообщение отредактировал ELEKTROS - Jul 8 2011, 15:28
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 8 2011, 15:32
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ELEKTROS @ Jul 8 2011, 21:23) *
off(PC7); // переводим в неактивный уровень (в данном случае низкий)

Да, конечно. Я перепутал.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 8 2011, 15:42
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Спасибо, достаточно просто и в регистры лезть не надо. А такой вопрос не по теме, может знаете почему используются сплошь битовые маски, хотя память сегментированая и можно напрямую писать биты. Или компилятор сделает не по битовым маскам, а как положено когда в асемблер перебьёт?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 8 2011, 17:41
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ELEKTROS @ Jul 8 2011, 21:42) *
А такой вопрос не по теме, может знаете почему используются сплошь битовые маски, хотя память сегментированая и можно напрямую писать биты.

Извините, я не понял, о чём речь. Что значит "память сегментированная"?
Битовые маски оттого, что в одном регистре конфигурации (например, CRL) хранятся настройки сразу восьми ножек микроконтроллера. Поэтому для того, чтобы настроить одну ножку, не трогая другие, приходится применять битовые маски.
А вообще, по первой ссылке, которую я приводил, вариант более правильный, посмотрите как там сделано. Там и масок поменьше.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 8 2011, 17:57
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(ELEKTROS @ Jul 8 2011, 18:42) *
Спасибо, достаточно просто и в регистры лезть не надо...

Рискну предложить посмотреть на мой вариант конфигурирования битов порта. Здесь, рядом, недалеко... sm.gif
http://electronix.ru/forum/index.php?showt...st&p=918437
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 8 2011, 20:16
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Ну сегментированная, т.е. каждый бит имеет свой адрес, например в referens manual на эту серию контроллеров приводят даже формулу как расчитать адрес конкретного бита, т.е. не нужны битовые маски вовсе в таком случае, меньше команд тратиться, странно что вы об этом не слышали, или я не так выразился.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 8 2011, 21:57
Сообщение #12


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Это называется bit-band:)
Собственно говоря, в варианте C++, который я привёл первым, bit-band используется в паре-тройке мест. Но особого выигрыша он не даёт. Особенно в конфигурировании ног. Ибо там не один бит, и маска всяко быстрее выходит.
А сишный вариант я оказывается загрузил старый. Вот поновее, тут всё сделано как надо: Прикрепленный файл  gpio.h.zip ( 1.26 килобайт ) Кол-во скачиваний: 173



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 11 2011, 17:10
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Еще вопрос всегда меня мучал: зачем устанавливается частота выходной ножки, что это даёт, по моему разумению бесполезная функция, все всёравно используют настройку 50МГц?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 11 2011, 19:58
Сообщение #14


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(ELEKTROS @ Jul 11 2011, 20:10) *
... все ...

Очень самонадеянное заявление.
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 12 2011, 17:54
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Был не прав, но на вопрос то ответьте?
Go to the top of the page
 
+Quote Post
Waso
сообщение Jul 13 2011, 05:12
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



Снижение максимальной частоты работы ноги приводит к сглаживанию фронтов и сужению спектра. Кароче наводок меньше будет испускать. ЭМС лучше.

Насчет битовых масок - да, программисты, пишушие на языках высокого уровня надеются на разумность компилятора. Это дает легко переносимый код. Кому хочется выжимать все соки из проца - те пишут на ассемблере. Но это, ИМХО, они делают ради собственного удовольствия. А кто деньги зарабатывает - не тратят время на возню с асмом. Ну кроме критичных мест, разумеется.
Go to the top of the page
 
+Quote Post

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

 


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


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