STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Я что-то не понял, вы собираетесь объяснять немыслимую пользу BRR в случае с

Код: Выделить всё

GPIOA->BSRR = (0xFF<<(2+16)) | (x<<2);
Или уже, все, переобулись и нигде не жмет?
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903801#p3903801"]Я не понял а где у тебя ODR? что это вообще за говнокод с битами? Можешь написать алгоритм словами типо 1. записать в регистр байт 2. сбросить 6 бит 3. установить 6 бит? Да еще и параллельный интерфейс программируешь программно.[/uquote]
Шина 8-ми битная, в половинку ODR можно писать только если пины точно в эти половинки попадают и если речь не идет об F1, а ты как раз фанат F1 :) Программирую программно, потому что разговор про порты, а вообще либа работает и с FMC/SPI.
И когда покажешь реализацию методов C++?
На ПК многие пишут на C++, но там нет особой необходимости выполнять ради оптимизации код на этапе компиляции, потому такие программисты в либе написанной с активным применением именно такого подхода мало что поймут, а если писать на С, то нечего и пытаться :)

[uquote="VladislavS",url="/forum/viewtopic.php?p=3903822#p3903822"]Припоминаю то обсуждение записи в LCD, где пришли к возможности совместить wr=0 и установку data. А у вас это в библиотеке учтено и делается автоматом при появленти такой возможности.[/uquote]
Я это и предложил, только там была запись данных с одновременным сбросом WR и RS. Не помню сишных либ где бы такое было реализовано...
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

ну так че там на счет либушек святых с автоматической обработкой групп каких то? :facepalm:
Последний раз редактировалось Oxford Пт окт 09, 2020 02:06:45, всего редактировалось 7 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3903828#p3903828"]Я что-то не понял, вы собираетесь объяснять немыслимую пользу BRR в случае с

Код: Выделить всё

GPIOA->BSRR = (0xFF<<(2+16)) | (x<<2);
Или уже, все, переобулись и нигде не жмет?[/uquote]А почему должна быть польза от BRR в операции, для которой он не оптимален? В одном месте BRR оптимально, в другом BSRR, а где-то вообще ODR. Думайте головой.
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903833#p3903833"]Я так и не понял как работает этот код почему два раза данные пишутся?[/uquote]
Пишется два раза, потому что шина 8-ми битная, цвета 16-ти битные. И оно точно работает, я менюшку запускал.

[uquote="Oxford",url="/forum/viewtopic.php?p=3903833#p3903833"]ну так че там на счет либушек святых с автоматической обработкой групп каких то? :facepalm:
Поделишься может, вдруг ноухау какое ускоряющее работу реально.[/uquote]
Да ладно, из-за какой-то либы перейдешь на C++? Наверняка же просто поковыряешься и продолжишь писать на С :)
Последний раз редактировалось Reflector Чт окт 08, 2020 21:36:02, всего редактировалось 1 раз.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903833#p3903833"]Поделишься может, вдруг ноухау какое ускоряющее работу реально.[/uquote]Во-первых, когда просят, как минимум не хамят, а ещё и "пожалуйста" говорят. Во-вторых, по разведданным, твой Keil код Reflector не возьмёт. Ну не умеет он С++20.
[uquote="Oxford",url="/forum/viewtopic.php?p=3903833#p3903833"]Т.е. стыдно показывать говнокод, что на Си стряпается в несколько строк. ))) :tea:[/uquote] На Си это в принципе невозможно написать. Нет там такого инструмантария.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

VladislavS какого инструментария?
Последний раз редактировалось Oxford Пт окт 09, 2020 02:08:04, всего редактировалось 2 раза.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3903835#p3903835"]А почему должна быть польза от BRR в операции, для которой он не оптимален?[/uquote]
По странному стечению обстоятельств, оптимален он оказался в абсолютно безжизненном примере про BS0/BR0. Узнаю ваш почерк.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903844#p3903844"]Я так и не понял как работает этот код почему два раза данные пишутся если у тебя 8 бит шина и WR в 1 бите? 6 операций.

Код: Выделить всё

GPIOB->BSRR = 0xFF00'0000 | (data & 0xFF00);
GPIOB->BSRR = GPIO_BSRR_BR_1;   // WR = 0
GPIOB->BSRR = GPIO_BSRR_BS_1;   // WR = 1
      
GPIOB->BSRR = 0xFF00'0000 | ((data & 0xFF) << 8);
GPIOB->BSRR = GPIO_BSRR_BR_1;   // WR = 0
GPIOB->BSRR = GPIO_BSRR_BS_1;   // WR = 1
[/uquote]Вот об этом и речь! У вас 6 записей в регистры, а у Reflector четыре.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Во первых это не мой код, а его. Я не программировал это. Поэтому не надо мне тут приписывать что у меня 6 инструкций понятно? Он сам с собой разговаривал там чет, сам себе примеры генерировал.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903844#p3903844"]Вы даже на С++ не осилили правильно параллельный интерфейс, а все потому что базовые понятия не понимаете.[/uquote]Ну пока что, по ходу дискуссии, это вы показываете полное непонимание во что компилируется ваш код и как он работает. Это именно вашим доводом было: "да кого эти лишние байты волнуют". Да ещё и скорость от них не зависела почему-то. Так что, не перекладывайте с больной головы на здоровую.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Вообще-то это вы вышли на сцену со словами, "если бессмысленно трясти одной ногой, то так можно сэкономить один или два байта". Потом правда выяснилось, что бывают еще и неблагоприятные случаи.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Это не небоагоприятные случаи, а случаи, в которых оптимально другое решение. Они не исключают друг друга, а дополняют.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Короче понятно все с вами.
Последний раз редактировалось Oxford Пт окт 09, 2020 02:08:38, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3903857#p3903857"]Это не небоагоприятные случаи, а случаи, в которых оптимально другое решение.[/uquote]
Да лан. В прошлый раз вы заламывали руки, что это офигеть, какая жизненно-необходимая херь, а теперь вдруг "оптимально другое решение". Че, фарш обратно не залазит?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903858#p3903858"]Дык код то не весь же. :tea:[/uquote]В том то и дело, что весь. WR=0 автоматически совместился выставлением data на шину.

[uquote="Oxford",url="/forum/viewtopic.php?p=3903858#p3903858"]Да и по флешу расход овер9000. Никогда С++ не будет лучше Си.[/uquote]Даже если повторить ещё 9000 раз, это не станет истиной.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Нет там никакой автоматизации
Последний раз редактировалось Oxford Чт окт 08, 2020 22:23:42, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3903858#p3903858"]Дык код то не весь же. :tea:[/uquote]
Была маска 0xFF00'000 которая сбрасывала 8 старших бит данных, а чтобы одновременно сбросить WR(PB1), нужно взять маску 0xFF02'000. Все, сколько можно такие элементарные вещи объяснять...
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3903862#p3903862"]Да лан. В прошлый раз вы заламывали руки, что это офигеть, какая жизненно-необходимая херь, а теперь вдруг "оптимально другое решение". Че, фарш обратно не залазит?[/uquote]Чё ты гонишь! Использовать BRR для записи данных в порт это твоя придурь. Я его в примерах для очистки бит использовал.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Какие нахрен маски о чем вообще речь зачем это? если напрямую записывать данные можно в ODR
Последний раз редактировалось Oxford Пт окт 09, 2020 02:10:01, всего редактировалось 4 раза.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Ответить

Вернуться в «ARM»