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

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

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

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

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

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


 
Опции темы

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

Непрочитано 09.03.2017, 13:19  
OakRidge
Заблокирован
 
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,464
Сказал спасибо: 287
Сказали Спасибо 1,122 раз(а) в 540 сообщении(ях)
OakRidge на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

синус 10 бит, копи, пейст
Вложения:
Тип файла: rar SIN_FI.rar (8.4 Кб, 0 просмотров)
Реклама:
OakRidge вне форума  
Эти 2 пользователя(ей) сказали Спасибо OakRidge за это сообщение:
JonRembo (09.03.2017), nml (17.04.2017)
Непрочитано 09.03.2017, 17:29  
Dmitry_
Временная регистрация
 
Аватар для Dmitry_
 
Регистрация: 25.11.2016
Адрес: Ох и где я только не проживал...
Сообщений: 80
Сказал спасибо: 87
Сказали Спасибо 174 раз(а) в 40 сообщении(ях)
Dmitry_ на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Вообще компилятор для констант автоматически выполняет вычисления. Заполнить константы в цикле не получится, потому как цикл начинает работать в программе, а константы заполняются до появления программы. Но можно сделать приблизительно так:
const int cIntArray[] = {0,1+2,2*3,3+sin(M_PI/2),4,5,6,7,8,9};
Dmitry_ вне форума  
Непрочитано 09.03.2017, 17:32  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Черт с ними, с константами, тут все ясно. Другое дело, как можно вообще подключать текстовые файлы к проекту с произвольным форматом, чтобы компилятор сам мог разбирать данные оттуда?
Easyrider83 вне форума  
Непрочитано 09.03.2017, 19:10  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,284
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Easyrider83, так на то есть #include.
У меня где-то был cgi скрипт который помогал в своё время решить вопрос с генерацией разных таблиц с константами.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 10.03.2017, 00:50  
varostov
Прописка
 
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 33 раз(а) в 22 сообщении(ях)
varostov на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от Easyrider83 Посмотреть сообщение
Черт с ними, с константами, тут все ясно. Другое дело, как можно вообще подключать текстовые файлы к проекту с произвольным форматом, чтобы компилятор сам мог разбирать данные оттуда?

Это уже из области искусственного интеллекта .
Обычно наоборот, произвольные программы подстраиваются под синтаксис С и выдают результаты своей работы в виде массива констант. Вот, например, результат работы утилиты EZ-Click от Cypress (конфигурация для сенсорной микросхемы из серии CMBR3):


Код:
/* Project: D:\microchip\_PROJECTS\20161121_VT1_0\CMBR3_Projec  t\CMBR3_configuration\CMBR3_configuration.cprj
 * Generated: 29.11.2016 10:23:36 +03:00 */
const unsigned char CY8CMBR3116_configuration[128] = {
    0xFFu, 0xFFu, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x80u, 0x80u, 0x80u, 0x80u,
    0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u,
    0x80u, 0x80u, 0x80u, 0x80u, 0x03u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x80u,
    0x05u, 0x00u, 0x00u, 0x02u, 0x00u, 0x02u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x1Eu, 0x1Eu, 0x00u,
    0x00u, 0x1Eu, 0x1Eu, 0x00u, 0x00u, 0x05u, 0x87u, 0x01u,
    0x00u, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu,
    0xFFu, 0x00u, 0x00u, 0x00u, 0x13u, 0x03u, 0x01u, 0x58u,
    0x00u, 0x35u, 0x06u, 0x00u, 0x00u, 0x0Au, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
    0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x14u, 0x89u
};
А уж этот файлик любой проект через #include с удовольствием скушает...
varostov вне форума  
Непрочитано 10.03.2017, 05:47  
Bill
Гражданин KAZUS.RUN
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Сообщение от JonRembo Посмотреть сообщение
Это что такое, ссылку можно?
Нписано с помощью большого брата и Билдера
Код:
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹math.h›

#define	N	63
void main(void)
	{
        int	i, y;
        float	dx, x, tmp;
        FILE	*fp;

        fp = fopen("costable.prn", "w");
        if (fp == NULL)
        	{
                printf("Can't open the file");
                exit(EXIT_FAILURE);
                }
        fprintf(fp, "#define NSTEPS\t %d\n\nstatic __flash\nchar\tcos2Table[] =\t{\\\\ cos square table", N);
	for (i = 0, x = -M_PI_2, dx = M_PI/N; i ‹= N; ++i)
        	{
                if (!(i % 8))
                	fprintf(fp, "\n\t\t\t");
                tmp = cos(x);
                y = ((tmp*tmp)/M_PI_2)*N*6 + 0.5;
        	fprintf (fp,"%3d%c ", y, (i!=N)? ',' : ' ');
                x += dx;
                }
        fprintf(fp, "\n\t\t\t};\n");
	fclose(fp);
//        getchar();
        }
PS: Предполагается использовать в IAR AVR.
Bill вне форума  
Непрочитано 11.03.2017, 02:37  
pasha_zv
Прописка
 
Аватар для pasha_zv
 
Регистрация: 14.12.2006
Адрес: Ставрополь - Донское
Сообщений: 266
Сказал спасибо: 118
Сказали Спасибо 197 раз(а) в 81 сообщении(ях)
pasha_zv на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

вах, наворотили.

на Экселе делаешь подобную табличку, как в архиве.
потом "файл-сохранить как- "PRN (разделитель - пробел).
и всё.
Вложения:
Тип файла: rar 3.rar (2.6 Кб, 0 просмотров)
pasha_zv вне форума  
Сказали "Спасибо" pasha_zv
LiVit (13.03.2017)
Непрочитано 11.03.2017, 15:45  
j-Roger
Гражданин KAZUS.RUN
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 839
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Свойства проекта -› Build-actions -› Pre-build command line.

Запускается утилита, которая делает интеллектуальную работу -
подготавливает файл в нужном формате и кладет в оговоренное место.
К моменту начала построения проекта подключаемый файл готов.

Поскольку в этом случае утилита будет запускаться каждый раз перед
построением проекта, то на нее можно возложить принятие решение о
необходимости перегенерации подключаемого файла.

В общем, есть где развернуться..
j-Roger вне форума  
Непрочитано 26.03.2017, 13:38  
brawaga
Частый гость
 
Регистрация: 06.01.2011
Сообщений: 32
Сказал спасибо: 33
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
brawaga на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

Вообще,*во время компиляции много чего можно сделать.
Вот статейка, может, чего выудите для себя, или вдохновитесь.
Но лично я бы сгенерил бы константы каким-нибудь скриптом и вставил или включил бы в компилируемый проект, как вам уже советовали выше.
brawaga вне форума  
Непрочитано 17.04.2017, 16:34  
AndrFV
Вид на жительство
 
Регистрация: 20.12.2013
Сообщений: 310
Сказал спасибо: 5
Сказали Спасибо 94 раз(а) в 59 сообщении(ях)
AndrFV на пути к лучшему
По умолчанию Re: Как можно инициализировать массив констант в цикле?

А не проще хранить подобные константы в энергонезависимой памяти контроллера? И для каждого устройства писать туда нужные константы...
AndrFV вне форума  
 
Опции темы

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

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, время: 09:15.


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