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

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

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

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

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

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


 
Опции темы

Как можно инициализировать массив констант в цикле?

Непрочитано 17.04.2017, 17:35  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Про генерацию таблиц синуса и других функций - можно это делать и при помощи MatLab (я пробовал GNU Octave) как тут описано http://microsin.ru/content/view/809/44/
Реклама:
H4LF вне форума  
Непрочитано 17.04.2017, 20:04  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от AndrFV Посмотреть сообщение
А не проще хранить подобные константы в энергонезависимой памяти контроллера?
Конечно проще, и даже полезнее. Особенно при использовании DDS (прямой синтез частот). Как известно, диапазон генерируемых частот напрямую зависит от размера таблицы синусов. Значит, эту таблицу нужно, во-первых, хранить во флеше, во-вторых, вычислять уж точно не силами МК.
Например, просчет таблицы синусов размером в 32K элементов (float) на Cortex M7 идет около 1 секунды при частоте 120 МГц, и таблица занимает 128 кБайт ОЗУ.
NewWriter вне форума  
Непрочитано 17.04.2017, 21:23  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

NewWriter, извиняюсь за оффтоп, но очень уж интересно - для чего может понадобиться таблица синуса (полная? не четверть периода?) размером в 32К да ещё и float? Или это просто "сферический" пример?
H4LF вне форума  
Непрочитано 17.04.2017, 21:51  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Отчасти, "сферический пример", а отчасти - DDS. А там просто необходим большой размер таблицы.

Нажмите, чтобы открыть спойлер
Видео:
NewWriter вне форума  
Непрочитано 18.04.2017, 00:39  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

NewWriter, меня не столько удивил размер таблицы, сколько float. Разве для DDS необходим float? Или float - это "сферическая" часть (не применяющаяся на практике) этого примера?
H4LF вне форума  
Непрочитано 18.04.2017, 14:08  
nikolx
Прохожий
 
Регистрация: 01.07.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 2 сообщении(ях)
nikolx на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Как можно инициализировать массив констант в цикле?

Константа – это данные, которые не изменяются на протяжении выполнения программы.
В цикле вы хотите заполнить пустой массив данными констант, это изменение данных !
Это компилятор не примет, ибо константа – это данные, которые не изменяются на протяжении выполнения программы.
Учите теорию языка.
nikolx вне форума  
Непрочитано 21.04.2017, 05:55  
brawaga
Частый гость
 
Регистрация: 06.01.2011
Сообщений: 32
Сказал спасибо: 33
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
brawaga на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от NewWriter Посмотреть сообщение
Конечно проще, и даже полезнее. Особенно при использовании DDS (прямой синтез частот). Как известно, диапазон генерируемых частот напрямую зависит от размера таблицы синусов. Значит, эту таблицу нужно, во-первых, хранить во флеше, во-вторых, вычислять уж точно не силами МК.
Например, просчет таблицы синусов размером в 32K элементов (float) на Cortex M7 идет около 1 секунды при частоте 120 МГц, и таблица занимает 128 кБайт ОЗУ.
Не напрямую зависит. Скорее зависит от изобретательности, всегда ведь можно исхитриться.
Например, можно иметь достаточно грубую таблицу и дополнительно два значения синуса и косинуса для относительно малого угла. Для непрерывной по времени генерации синусоиды с малым шагом угла этого достаточно.
brawaga вне форума  
Непрочитано 21.04.2017, 05:59  
brawaga
Частый гость
 
Регистрация: 06.01.2011
Сообщений: 32
Сказал спасибо: 33
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
brawaga на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от NewWriter Посмотреть сообщение
Отчасти, "сферический пример", а отчасти - DDS. А там просто необходим большой размер таблицы.

Нажмите, чтобы открыть спойлер
Видео:
Почему в видео параллельно с периодом синусоиды плывёт амплитуда? Это баг или фича?
brawaga вне форума  
Непрочитано 21.04.2017, 09:45  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Это фича, так было задумано. Вообще это был тест производительности вычислений на малых частотах МК. Частота там была, кажись, 16 или 24 МГц, точно не помню уже.
Оттуда, соппсна, и значения во float - значение синуса просто умножалось на прямое численное значение амплитуды, которая и менялась параллельно с изменением частоты.

Последний раз редактировалось NewWriter; 21.04.2017 в 09:58.
NewWriter вне форума  
Непрочитано 12.05.2017, 00:23  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от nikolx Посмотреть сообщение
Константа – это данные, которые не изменяются на протяжении выполнения программы.
В цикле вы хотите заполнить пустой массив данными констант, это изменение данных !
Это компилятор не примет, ибо константа – это данные, которые не изменяются на протяжении выполнения программы.
Учите теорию языка.
Или Вы написали не то, что думали или ошиблись. В языке C (если его теория имелась ввиду) квалификатор const для переменной вовсе не означает, что это данные, которые не изменяются на протяжении выполнения программы. Он означает, что компилятор будет следить, чтобы в неё не происходила запись(со стороны компилируемой программы). Но сама переменная в принципе может изменяться, поэтому имеет смысл запись:
PHP код:
const volatile int *p; 
Цитата:
например, для декларирования регистра таймера, который может спонтанно менять свое значение, но в который нельзя сохранять данные (на этот пример в частности указывают и в стандарте языка C).
Взято отсюда http://microsin.net/programming/avr/...-volatile.html
Ну а ТС скорее всего имел ввиду создание массива констант во время компиляции а не во время исполнения. Хотя в некоторых микроконтроллерах можно и во время исполнения флешь перезаписывать.
H4LF вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Обзоры покупок товаров на GEARBEST.COM mikesmith Барахолка электронных компонентов 397 12.10.2018 22:51
Ностальжи по школе... Ar-Gen-Tum Отвлекитесь, эмбеддеры! 141 27.02.2015 16:10
Размещение констант в памяти программ в PIC ST_Senya Микроконтроллеры, АЦП, память и т.д 10 15.10.2009 20:12


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.