ELEKTROS 0 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Подскажите другой вход из такой вот проблемы: настраиваю шим от таймера 3 на ножках порта PC 6, 7, 8,9, через ремап, потом в определённый момент работы мне не нужен ШИМ, а нужно прямое управление этими ножками, пока вижу только два варианта выхода из этого: 1) Переконфигугрирование ножки темже ремапом и настройка ножки по новому через структуру. 2) Установка в регистр сравнения значений 0 или 0xFFFF и вкрючая и выключая соответствующий канал сравнения (но что то мне подсказывает что работать будет криво). Вообщем оба метода относительно долгие по времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Remap-то зачем трогать? Просто меняете режим работы ноги с альтернативного выхода на пушпульный выход. Это пара команд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Ну например вот так: Код: 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); или по короче как подскажите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба или по короче как подскажите? Ясно как. Отказаться от GPIO_Init(). Программировать регистры напрямую. В руководстве по МК все регистры описаны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба или по короче как подскажите? Если вы пишете на C++, то посмотрите вот сюда. Это удобная обёртка для работы с ножками. Если на простом си, то вот: Это так называемые макросы им. Волкова. Пользоваться так: // Объявляем ножку: #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); // переводим в неактивный уровень (высокий) //и так далее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 8 июля, 2011 Опубликовано 8 июля, 2011 (изменено) · Жалоба Так а разница между: on(PC6) и off(PC6) например тогда какая, если там активный или нет уровень на выходе определяется самым первым дефайном, где объявляем ножку? Я так понял что это условность что приймем за активный а что нет, поэтому ипользовать впринципе без разницы on или off, или я не так понял? Здесь мне кажеться правильно так коментай: off(PC7); // переводим в неактивный уровень (в данном случае низкий) Изменено 8 июля, 2011 пользователем ELEKTROS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба off(PC7); // переводим в неактивный уровень (в данном случае низкий) Да, конечно. Я перепутал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Спасибо, достаточно просто и в регистры лезть не надо. А такой вопрос не по теме, может знаете почему используются сплошь битовые маски, хотя память сегментированая и можно напрямую писать биты. Или компилятор сделает не по битовым маскам, а как положено когда в асемблер перебьёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба А такой вопрос не по теме, может знаете почему используются сплошь битовые маски, хотя память сегментированая и можно напрямую писать биты. Извините, я не понял, о чём речь. Что значит "память сегментированная"? Битовые маски оттого, что в одном регистре конфигурации (например, CRL) хранятся настройки сразу восьми ножек микроконтроллера. Поэтому для того, чтобы настроить одну ножку, не трогая другие, приходится применять битовые маски. А вообще, по первой ссылке, которую я приводил, вариант более правильный, посмотрите как там сделано. Там и масок поменьше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Спасибо, достаточно просто и в регистры лезть не надо... Рискну предложить посмотреть на мой вариант конфигурирования битов порта. Здесь, рядом, недалеко... :) http://electronix.ru/forum/index.php?showt...st&p=918437 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Ну сегментированная, т.е. каждый бит имеет свой адрес, например в referens manual на эту серию контроллеров приводят даже формулу как расчитать адрес конкретного бита, т.е. не нужны битовые маски вовсе в таком случае, меньше команд тратиться, странно что вы об этом не слышали, или я не так выразился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 июля, 2011 Опубликовано 8 июля, 2011 · Жалоба Это называется bit-band:) Собственно говоря, в варианте C++, который я привёл первым, bit-band используется в паре-тройке мест. Но особого выигрыша он не даёт. Особенно в конфигурировании ног. Ибо там не один бит, и маска всяко быстрее выходит. А сишный вариант я оказывается загрузил старый. Вот поновее, тут всё сделано как надо: gpio.h.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 11 июля, 2011 Опубликовано 11 июля, 2011 · Жалоба Еще вопрос всегда меня мучал: зачем устанавливается частота выходной ножки, что это даёт, по моему разумению бесполезная функция, все всёравно используют настройку 50МГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 11 июля, 2011 Опубликовано 11 июля, 2011 · Жалоба ... все ... Очень самонадеянное заявление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 12 июля, 2011 Опубликовано 12 июля, 2011 · Жалоба Был не прав, но на вопрос то ответьте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться