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

 
 
26 страниц V  « < 23 24 25 26 >  
Reply to this topicStart new topic
> Библиотеки для STM32
Reflector
сообщение Apr 21 2017, 10:17
Сообщение #361


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 15-07-06
Пользователь №: 18 836



Цитата(jcxz @ Apr 21 2017, 13:08) *
BSRR = 1 << pin; //установка
BSRR = 1 << pin + 16; //сброс
BSRR = 0x10001 << pin; //инверсия

Допустим нужно записать данные только в младшие 4 бита порта, пусть это будет 3. Тогда пишем в BSRR такое число, которое бы, во-первых, сбросило эти 4 бита(0xF << 16), во вторых выставило только нужные(3), итого получает 0x000F0003. Для двух пинов единица там и там, значит будет инверсия...

Сообщение отредактировал Reflector - Apr 21 2017, 10:19
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 21 2017, 10:18
Сообщение #362


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ Apr 21 2017, 13:15) *
Почему? Не понимаю.

Тут было много примеров, где использовалась перманентная установка битов сброса и запись данных в биты установки. В таком варианте фактически получаем регистр ODR с маской или атомарный доступ к любой группе битов. Если ввести аппаратный тоггл, то эту полезность потеряем.
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 21 2017, 10:23
Сообщение #363


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Reflector @ Apr 21 2017, 15:11) *
Речь про STM32, у него только BSRR который дает возможность атомарно записать группу битов не затрагивая остальные пины. Если эту его способность заменить атомарной инверсией, то пользы будет меньше.
Ни кто не предлагает заменить BSRR на инверсию. Предлагают дополнить BSRR ещё и инверсией.

Цитата
Тут было много примеров, где использовалась перманентная установка битов сброса и запись данных в биты установки. В таком варианте фактически получаем регистр ODR с маской или атомарный доступ к любой группе битов. Если ввести аппаратный тоггл, то эту полезность потеряем.
не понятно - что теряем. Задача - перманентно выставлять РА1 и сбрасывать в одной задаче, и переключать РА5 в другой задаче. Если добавить регистр апаратного тогл, какую полезность теряем?
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 21 2017, 10:24
Сообщение #364


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Шаманъ @ Apr 21 2017, 13:18) *
.... аппаратный тоггл ...

Читаю тему и никак не могу вкурить где может потребоваться именно аппаратный тогл, да и вообще тогл?
Мне тоггл понадобился недавно и лишь раз - моргать лампочкой (blink-режим), т. е. случай, где "до лампочки" предыдущее состояние пина.
А во всех остальных случаях нужна явная установка битов в нужное состояние, например: софтовые интерфесы, софтовый ШИМ, софтовое управление шаговым мотором и т. п.
Просветите, кто сталкивался с нуждой тогла как таковой wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 21 2017, 10:33
Сообщение #365


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ Apr 21 2017, 12:16) *
Да, если пакет помещается в одну операцию, то возможно, хотя и несколько "притянуто". В этом варианте аппаратный тоггл рулит.

Есть и непритянутый пример:
Когда-то реализовывал передачу пакетов данных (1-2 КБ) из LPC17xx по 8-битной шине (GPIO) в CY7C68013A (это чип HS USB с подключением по внешней параллельной шине 8/16 бит с протоколом обмена, который можно запрограммировать самостоятельно написав диаграмму работу внутреннему GPIF).
Главное требование там было - скорость передачи - надо было выплюнуть пакет как можно быстрее. Частота GPIO у LPC ограничена (как и у других МК), у LPC это было что-то около 10МГц. Соответственно - желательно было так построить схему обмена и протокол, чтобы выполнить передачу с минимальным числом записей в GPIO. CY7C68013A работала у меня на частоте то ли 30МГц то ли 48МГц - точно не помню, но помню, что написал диаграмму GPIF так, что она успевала принимать с LPC даже если он будет писать байт за байтом в порт непрерывно (10МГц).
Я поместил сигнал квитирования и 8 линий данных в один порт (на этом порту были также другие сигналы, которые нельзя было трогать при передаче пакета).
Как реализовать такую передачу?
На STM32 её тоже можно реализовать, но на Infineon (и на LPC) код такой передачи получается проще и быстрее.

Цитата(Reflector @ Apr 21 2017, 12:17) *
Тогда пишем в BSRR такое число, которое бы, во-первых, сбросило эти 4 бита(0xF << 16), во вторых выставило только нужные(3), итого получает 0x000F0003

Неверно. Писать нужно 0xC0003.
Go to the top of the page
 
+Quote Post
Reflector
сообщение Apr 21 2017, 10:35
Сообщение #366


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 15-07-06
Пользователь №: 18 836



Цитата(jcxz @ Apr 21 2017, 13:33) *
Неверно. Писать нужно 0xC0003.

Ок, в порту было 0xF, очищаем 2 бита, становится 3, пишем 3, остается 3. А если пишем 2? Откуда ты знаешь какое число запишешь? Может оно из массива читается или генерится весьма сложным образом.

Сообщение отредактировал Reflector - Apr 21 2017, 10:36
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 21 2017, 10:36
Сообщение #367


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
Читаю тему и никак не могу вкурить где может потребоваться именно аппаратный тогл, да и вообще тогл?
программный вывод миандра на порт. в прерывании по таймеру дёргать переключать пин.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 21 2017, 10:40
Сообщение #368


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ Apr 21 2017, 12:18) *
Тут было много примеров, где использовалась перманентная установка битов сброса и запись данных в биты установки. В таком варианте фактически получаем регистр ODR с маской или атомарный доступ к любой группе битов. Если ввести аппаратный тоггл, то эту полезность потеряем.

Ну в этом случае - да.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 21 2017, 10:41
Сообщение #369


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Apr 21 2017, 13:36) *
программный вывод миандра на порт. в прерывании по таймеру дёргать переключать пин.

А зачем нужен это меандр? Тоже моргать лапочкой? biggrin.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 21 2017, 10:47
Сообщение #370


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Reflector @ Apr 21 2017, 12:35) *
Откуда ты знаешь какое число запишешь? Может оно из массива читается или генерится весьма сложным образом.

Не понял Вашу мысль.... wacko.gif
В чём проблема-то? Что именно нельзя сделать? Если не нужно знать предыдущее состояние какого-то пина на порту, но состояние всех остальных можно установить в нужное одной операцией записи. Каким бы сложным ни был генератор.
void SetPins(uint value)
{
BSRR = (value & 255) | (~value << 16);
}

Цитата(Forger @ Apr 21 2017, 12:24) *
Читаю тему и никак не могу вкурить где может потребоваться именно аппаратный тогл, да и вообще тогл?

Я же привёл пример: передача по параллельной шине с квитированием инверсией пина.
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 21 2017, 10:49
Сообщение #371


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 21 2017, 15:41) *
А зачем нужен это меандр? Тоже моргать лапочкой? biggrin.gif
есть вопрос - есть ответ. например передача параметра. параметр меняется от p0 - до p100, частота линейно должна меняться от f1 до f2. только не нужно спрашивать - "А это для чего"? или"А почему аппаратно не заюзать выход таймера?".
Или выдаем байт последовательно, как уарт, только биты кодирутся не 0 и 1, а частотой f0 и f1.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 21 2017, 10:53
Сообщение #372


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Apr 21 2017, 13:47) *
Я же привёл пример: передача по параллельной шине с квитированием инверсией пина.

Полагаю, что это было очень давно, а в данный момент с подобной задачей вы бы справились совсем иначе. Или я не прав? wink.gif


Цитата(juvf @ Apr 21 2017, 13:49) *
Или выдаем байт последовательно, как уарт, только биты кодирутся не 0 и 1, а частотой f0 и f1.

Что-то типа DTMF ? sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 21 2017, 10:55
Сообщение #373


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Apr 21 2017, 12:51) *
Полагаю, что это было очень давно, а в данный момент с подобной задачей вы бы справились совсем иначе. Или я не прав? wink.gif

Если с теми же исходными данные - так же. А какое ещё решение?
Если бы была возможность изменить схемотехнику - сейчас может использовал бы МК с HS USB.
В той задаче скорости FS USB не хватало поэтому и поставили CY7C68013A.
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 21 2017, 10:56
Сообщение #374


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 21 2017, 15:53) *
Что-то типа DTMF ? sm.gif
нет
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 21 2017, 11:07
Сообщение #375


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Apr 21 2017, 13:55) *
А какое ещё решение?


Цитата
сейчас может использовал бы МК с HS USB.


Я как раз про это - примеры, приведенные тут, как минимум устарели.
В настоящее время и такую задачу найти сложно - дергать целиком порты для реализации некого интерфейса.
Порой выгоднее воткнуть в довесок к основному толстому процу какой-нить копеешный М0/M0+, чтобы тот занимался подобным ногодрыгом.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th August 2025 - 17:15
Рейтинг@Mail.ru


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