Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 31.01.2014, 02:26  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от _Артём_ Посмотреть сообщение
Я высказал своё мнение. Имею право.
В ответ я высказал своё. На что имею не меньшее право, ведь так?
Сообщение от _Артём_ Посмотреть сообщение
Я не путаюсь.
И всё же - путаетесь. Цитирую:
Сообщение от _Артём_ Посмотреть сообщение
Но в каком-то смысле bool тоже битовая переменная: возможные значения - true/false. Битовая: 1/0.
Нет в Си никаких битовых переменных. На подробности уже нет времени. Может позже оно будет...
Реклама:
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 31.01.2014 в 02:32.
tempora вне форума  
Непрочитано 31.01.2014, 02:30  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от nahimovv Посмотреть сообщение
Накидайте простой пример, ... и посмотрите.
Либо поясните, о чём вы так тщательно умалчиваете (можно в личку, если почему-то очень нужно), либо я пошёл спать. Бывает иногда, что я не охочь до "посольских иносказаний".
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 31.01.2014, 02:43  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Лучше спать! Завтра может и поймёте свою ошибку. А я лучше Жирика с Бузиной посмотрю.
nahimovv вне форума  
Непрочитано 31.01.2014, 08:17  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tempora Посмотреть сообщение
Речь шла о пересылке по шине, какие команды в связи с этим нужно посмотреть?
Сообщение от nahimovv Посмотреть сообщение
Накидайте простой пример, тот же цикл, и посмотрите.
Итак, смотрим...
Код:
...
volatile static      uint8_t     bArray[ARR_LEN];
volatile static      uint32_t    wArray[ARR_LEN];
volatile static struct {
    uint8_t
        b0:1,b1:1,b2:1,b3:1,
        b4:1,b5:1,b6:1,b7:1;}    fArray[ARR_LEN];
...

void main()
{
uint8_t     i;
uint16_t    s=0;

    for (i=0; i‹ARR_LEN; ++i){          // byte used as bool
        if (bArray[i]) ++s;
    }
    for (i=0; i‹ARR_LEN; ++i){          // bit field used as bool
        if (fArray[i].b0) ++s;
    }
    for (i=0; i‹ARR_LEN; ++i){          // word used as bool
        if (wArray[i]) ++s;
    }

    printf("Count of flags set: %d\n",s);
Получилось такое сравнение:


Что здесь такое разное в пересылке элементов массива? На что нужно было обращать внимание?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 31.01.2014, 09:03  
KBH-I
Почётный гражданин KAZUS.RU
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tempora Посмотреть сообщение
Нет в Си никаких битовых переменных.
А это тогда что?
Код:
    struct
    {
      uint16_t Work           :1;
      uint16_t res1           :1;
      uint16_t res2           :1;
      uint16_t res3           :1;
      uint16_t Error          :1;
      uint16_t OverVolt       :1;
      uint16_t OverCurrent    :1;
      uint16_t OverTemp       :1;  
      uint16_t ClrOverVolt    :1;
      uint16_t ClrOverCurrent :1;
    } bits;
KBH-I вне форума  
Непрочитано 31.01.2014, 12:07  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от KBH-I Посмотреть сообщение
А это тогда что?
Это структура, а в самом СИ нет понятия битовых переменных, это азы!
Цитата:
Нет в Си никаких битовых переменных.
nahimovv вне форума  
Непрочитано 31.01.2014, 12:11  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tempora Посмотреть сообщение
Итак, смотрим...
Смотрите!
Код:
uint8_t  f = 250;
uint16_t g = 250;
uint32_t h = 250;
    
__NOP();
    
while(f)
 {
  f--;   
 }        

__NOP(); // 1249 cycles   
 
while(g)
 {
  g--;   
 }     

__NOP(); // 1500 cycles
 
while(h)
 {
  h--;   
 }     
 
__NOP(); // 1000 cycles

Вы что, первый раз с STM32 дело имеете?
nahimovv вне форума  
Сказали "Спасибо" nahimovv
MaxiMuz79 (31.01.2014)
Непрочитано 31.01.2014, 15:50  
MaxiMuz79
Гражданин KAZUS.RU
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 529
Сказал спасибо: 74
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Позволю себе лишь привести цитату из инсайдерсково руководства от Hitex
(ссылка на скачивание )
Цитата:
Технология Bit-Band позволяет нам осуществлять битовые манипуляции без
необходимости в специальных командах и увеличении размеров ядра Cortex. На
практике, нам необходимо вычислять адрес псевдоимени битового сегмента для
заданной ячейки памяти области SRAM или периферийных устройств. Формула
для вычисления адреса псевдоимени приведена ниже:
Адрес в области псевдоимен = Начальный адрес области псавдоимен +
смещение слова
Смещение слова = Смещение в байтах от начала битовых сегментов x 0x20 +
номер бита x 4
Все это намного проще, чем кажется на первый взгляд. Для примера
рассмотрим, как осуществляется запись в выходной регистр данных портов
ввода/вывода общего назначения (GPIO) для установки и сброса отдельных линий
ввода/вывода. Физический адрес выходного регистра Порта В 0x40010C0C. В этом
примере будем устанавливать и сбрасывать восьмой бит в слове, используя
вышеприведенную формулу.
Цитата:
Адрес слова =0x40010C0C
Начало битовых сегментов Периферийных устройств =0x40000000
Начало псевдоимен битовых сегментов Периферийных устройств =0x42000000
Байтовое смещение от начала битовых сегментов =0x40010C0C–
0x40000000=10C0C
Смещение слова =(0x10C0C x
0x20)+(8x4)=0x2181A0
Адрес псевдоимени
=0x42000000+0x2181A0=0x422181A0
Теперь мы можем создать указатель на этот адрес, использую следующую строку
языка Си:
#define PortBbit8 (*((volatile unsigned long *) 0x422181A0 ))
Этот указатель затем может использоваться для установки и сброса бита порта
ввода/вывода:
PB8 = 1; //включить светодиод
В результате чего генерируются следующие ассемблерные команды:
MOVS r0, #0x01
LDR r1, [pc, #104]
STR r0, [r1, 0x00]
Выключение светодиода:
PB = 0; //выключить светодиод
Генерируются следующие ассемблерные команды:
MOVS r0, #0x00
LDR r1, [pc, #88]
STR r0, [r1, 0x00]
Каждая из операций, установка и сброс, занимают три 16-битные команды и на
STM32, работающем с частотой 72 МГц, эти команды выполнятся за 80 нс.
Любое
слово в битово сегментированной области периферийных устройств и памяти
SRAM может также напрямую адресоваться в формате слова, так что мы можем
осуществить ту же самую установку и сброс, используя традиционный подход с
операциями И и ИЛИ:
GPIOB -› ODR |= 0x00000100; //включить светодиод
LDR r0, [pc, #68]
ADDS r0, r0, #0x08
LDR r0, [r0, #0x00]
ORR r0, r0, #0x100
LDR r0, [pc, #64]
STR r0, [r1, #0xC0C]
Цитата:
GPIOB -› ODR &= ! 0x00000100; //выключить светодиод
LDR r0, [pc, #40]
ADDS r0, r0, #0x08
LDR r0, [r0, #0x00]
MOVS r0, #0x00
LDR r1, [pc, #40]
STR r0, [r1, #0xC0C]
Каждая из операций, установка и сброс, требует группы из 16 и 32-битных команд,
что потребляет как минимум 14 байт памяти для каждой операции и 180 нс
времени при той же тактовой частоте.
В обычном встраиваемом приложении
очень часто используются операции установки и сброса битов в регистрах
периферийных устройств, семафоров и флагов в SRAM. И если принять во
внимание преимущества технологии битовой сегментации, то можно значительно
сократить объем кода приложения и время его исполнения
. Тем более, в
заголовочных файлах STM32 уже проведены все необходимые расчеты для
использования этой технологии.
Не претендую на какую то истину, сам хочу разобраться.
MaxiMuz79 вне форума  
Непрочитано 31.01.2014, 23:28  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от nahimovv Посмотреть сообщение
Вы что, первый раз с STM32 дело имеете?
Не угадали - я на него пока только облизываюсь. Так уж сложилось, что пока не было возможности с ними поработать. Но желание и планы соответствующие есть, поэтому читаю, разбираюсь. Охота пуще неволи.
Сообщение от nahimovv Посмотреть сообщение
Смотрите!
Попробовал и это. Получил следующее сравнение:
но и в нём не вижу ничего, объясняющего высказанное выше косвенным образом утверждение. Так в чём-таки разница?

Сообщение от MaxiMuz79 Посмотреть сообщение
Позволю себе лишь привести цитату из инсайдерсково руководства от Hitex
Это из другой оперы. И об этом уже ранее было сказано:
Сообщение от tempora Посмотреть сообщение
Если речь о bit-band'ах, то они здесь ни при чём.

Сообщение от KBH-I Посмотреть сообщение
А это тогда что?
А это - битовые поля.
Код:
K&R-›Структуры.БитовыеПоля;
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 01.02.2014, 00:00  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tempora Посмотреть сообщение
Так в чём-таки разница?
В командах. А вообще, любой МК работает лучше с той разрядностю данных, для которой он и предназначается, в случае STM32 это 32 бита.
nahimovv вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 13:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot