Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
rytshyi

Разница между Set и Toggle

12.08.2017, 21:03. Показов 3812. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните новичку в чем заключается разница между функциями в STD SetByts и ToggleByts? Вроде бы делают одно и то же, список параметров у них одинаковый, но тем не менее есть такие вот 2 разные функции.
?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2017, 21:03
Ответы с готовыми решениями:

В чем разница между set of и array of?
в чем разница set of и array of

Разница между Set ... =New... и Set ... =CreateObject("...")
Здравствуйте! Если кто знает - напишите - какие различия между результатами действия конструкций Set ... =New ... и Set ... =...

Сохранение отметки в toggle в Unity, при переходе между сценами
Отметка в чекбоксе в Unity 2d, не сохраняется при переходе между сценами, какие есть варианты сохранения ?

20
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 637
12.08.2017, 21:10
А если посмотреть перевод "set" и "toggle"? Может тогда и выяснится, что не одно и то же делают...
0
rytshyi
12.08.2017, 21:25
Имеется в виду, что с помощью Set можно задать либо 0, либо 1, а Toggle - это переключение текущего состояния( независимо 0 или 1) ? Я правильно понял?
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
12.08.2017, 21:29
С помощью Set обычно предполагается, что = 1, а toggle - изменение состояния с 1 на 0 или с 0 на 1.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
13.08.2017, 09:39
Цитата Сообщение от rytshyi
Имеется в виду, что с помощью Set можно задать либо 0, либо 1, а Toggle - это переключение текущего состояния( независимо 0 или 1) ? Я правильно понял?
Нет, неправильно поняли.
Riset - всегда устанавливает 0. Если 0 там уже был, не изменится.
Set - всегда устанавливает 1. Если 1 там уже была, не изменится.
Toggle - переключает на противоположное (проще говоря, это инверсия). Если была 1, включит 0, если был 0 - включит 1.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
13.08.2017, 09:45
Стоит отметить, что аппаратного Toggle за один такт нет. Это в любом случае чтение-модификация-запись. А вот установка/сброс это атомарные операции, выполняются за один такт одну операцию.
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
13.08.2017, 21:38
И Toggle чаще всего делается при помощи логической операции ИсключающееИЛИ ( EOR, XOR).
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
13.08.2017, 21:55
В SPL исключающее ИЛИ:
GPIOx->ODR ^= GPIO_Pin;
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
13.08.2017, 22:32
Цитата Сообщение от hd44780
В SPL исключающее ИЛИ:
GPIOx->ODR ^= GPIO_Pin;
Это не безопасно. Читаем ODR во временный регистр, инвертим там один бит, потом вызывается прерывание в котором пишут в этот же порт, после окончания которого ODR перезаписывается старым значением...
0
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
13.08.2017, 23:18
А как безопасно?
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
13.08.2017, 23:29
Цитата Сообщение от vom_di_tuxi
А как безопасно?
Code
1
BSRR = (0x10000 << pin) | (!(ODR & (1 << pin)) << pin);
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 637
14.08.2017, 02:17
Riftistor, а так - можно?
Code
1
BSRR = (0x10000 << pin) | (~ODR & (1 << pin));
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
14.08.2017, 02:34
Цитата Сообщение от h4tf
Riftistor, а так - можно?
Код:
BSRR = (0x10000 << pin) | (~ODR & (1 << pin));Так даже лучше :)
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 182
14.08.2017, 07:50
А как хорошо было в старых 8-битниках! :-)
Можно было делать именно Исключающее ИЛИ с битом порта...
За один такт.
0
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
14.08.2017, 12:53
Code
1
2
3
#define PIN_SIT(port, pin)      (port->BSRR = pin)
#define PIN_RESIT(port, pin)   (port->BSRR = (uint32_t)pin << 16U)
#define PIN_TOGGLE(port, pin)   (port->BSRR = ((uint32_t)pin << 16U) | (~(port->ODR) & pin))
port = GPIOA, GPIOB...
pin = GPIO_PIN_0, GPIO_PIN_1...
отличие в том, что номера пинов в этом случае задаются не 0,1,2... а маской 0x1, 0x2, 0x4...
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
15.08.2017, 15:55
Цитата Сообщение от sirktk
А как хорошо было в старых 8-битниках! :-)
Можно было делать именно Исключающее ИЛИ с битом порта...
За один такт.
Ничего не попутал? RMW не , не знаем?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 322
16.08.2017, 06:06
В xmega есть байт в регистрах порта, наподобии BSRR, но который именно инвертирует значение вывода :)
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 182
16.08.2017, 08:31
Цитата Сообщение от dosykus_2
Цитата Сообщение от sirktk
А как хорошо было в старых 8-битниках! :-)
Можно было делать именно Исключающее ИЛИ с битом порта...
За один такт.
Ничего не попутал? RMW не , не знаем?

В Z8Encore с любым портом можно сделать операцию (к примеру):

XORX PAOUT,#01

И нулевой бит порта (PA0) инвертируется.
И не обязательно непосредственной цифрой. Можно содержимым любой ячейки памяти.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
16.08.2017, 10:02
И так ваше -
За один такт.
И кто из вас врет? Zilog или вы?


Так что -
А как хорошо было в старых 8-битниках! :-)
, беспочвенное нытье неумех и незнаек...
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 182
16.08.2017, 17:03
ой-ой-ой, меня поймали....
Смотря что считать "тактом".
Учитывая, что даже NOP выполняется 2 периода тактовой частоты, то я имею право назвать эти два периода "тактом".
Тогда XORX с битом порта - 1,5 такта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2017, 17:03
Помогаю со студенческими работами здесь

Hibernate. No identifier specified for entity. Разница в аннотировании полей и set-ов
Добрый день. Изучая Hibbernate и Spring столкнулся с проблемой. Есть клас Car: package com.validateproject; import...

Какая разница между различными сокетами (например, между 775 и 1155)?
Обясните пожалуйста какая разница между сокетами, пример есть сокет 775 и 1155 я понимаю что разем не тот процессора другие но! как насчет...

Для чего нужны set.keys(), set.values(), set.entries() ?
Для чего нужны set.keys(), set.values(), set.entries() ? Не могу понять документацию. Приведите примеры.

Symmetric difference между list и set
Имеется вот такой код. E = print D = input A = D() C = list() B = set() while A != '': while int(A) != -1: ...

Разница между --f и f--
Не понимаю, читал, что разницы между --f и f-- вообще никакой нет, но при компиляции программы выдаёт разные значения: #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru