константы

AVR версия программы

константы

Сообщение krian (krian) » 20 авг 2018, 10:19

Приветствую форумчан!
Я, наверное, не буду оригинален со своим вопросом, но по ключевым словам "констант" и "constant" я ни на этом форуме, ни в других источниках ничего не нашел. Даже в родном хелпе так себе - мимоходом.
Проблема в следующем. При задании константы, она автоматически создается в формате int. А мне нужен байт, зачем мне засорять память 16 разрядными числами, если они 8 разрядные? И контроллер 8 разрядный, (AVR). Я не нашел способа, как это изменить в окне констант. Можно создать байтовую переменную, а потом перевести ее в константы. Так и хелпе вскользь написано, как намек, но сначала я сам так придумал. Все бы ничего, но если эту константу изменить, то она опять автоматически переходит в формат int, а если изменить, например, десятичное число на двоичное, то вообще становится long. Приходится переводить ее в переменные, изменять формат на байт, а потом снова переводить в константы. Очень неудобно! Может мне версия Flowcode 6 попалась неполноценная или так и должно быть? Или может есть другие способы?
Еще я столкнулся с тем, что у меня не получилось скопировать константы из одного проекта в другой. Константы специфическая вещь. Если это что-то типа кодов настроек периферийного устройства. Каждый раз набирать заново... Может тут где-то заложена другая возможность копирования, но среди очевидных способов ее не оказалось.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: константы

Сообщение mim (mim) » 20 авг 2018, 13:01

krian писал(а): 1. "constant" я на этом форуме ничего не нашел.
2. Проблема в следующем.
3. При задании константы, она автоматически создается в формате int. А мне нужен байт
4. Можно создать байтовую переменную, а потом перевести ее в константы.
5. но если эту константу изменить, то она опять автоматически переходит в формат int

1. Потому что типы с модификатором const Матриксы не используют... То что написано "constant" это приямое использование#define - изучи что такое директивы препроцессора.
2. Нет проблем, есть не верная подача Матриксами понятий Констант и Директив, последние более широко используют формализацию макросов, но этого (доступа к #define) в FC совсем нет!!!
3. Компилятор сам определит размер константы, не взирая на то что там бы не написали Матриксы. Формат будет зависеть от диапазона заданного числа. Матриксы написали там чушь.
4. Это лишнее... ответ в п.3.
5. Все в пункте 3.

Советую посмотреть код компиляции в Си и обязательно в ассемблере... Там много ума не нужно, все будет и так понятно...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: константы

Сообщение krian (krian) » 20 авг 2018, 14:46

Аааа... теперь понятно. Путаница с терминологией. Спасибо за разъяснение. Про #define я знаю, но я не додумался, что его здесь назвали константой.
Я думал, что константы помещаются во флешку, а переменные в ОЗУ. Поэтому и морочил голову, чтобы сэкономить ОЗУ. А так получается, что оно само определит, куда это поместить. Правильно я понял? Или здесь тоже можно задавать? В Си, если хочешь наверняка поместить во flash или eeprom, то это надо прямо указать.
flash int int_aaa[28]={ ....... } или const int int_aaa[28]={ ....... }
eeprom char ..... = ....
Не знаю, будет ли в FC работать такая запись.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение krian (krian) » 20 авг 2018, 14:51

Скорее всего будет. Я припоминаю, что где-то уже использовал такую вставку на Си. При компиляции формируется отдельный hex для eeprom.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение mim (mim) » 21 авг 2018, 06:24

krian писал(а):1. я не додумался, что его здесь назвали константой.
2. Я думал, что константы помещаются во флешку, а переменные в ОЗУ.
3. получается, что оно само определит, куда это поместить. Правильно я понял?
4. В Си, если хочешь наверняка поместить во flash или eeprom, то это надо прямо указать.
flash int int_aaa[28]={ ....... } или const int int_aaa[28]={ ....... }
eeprom char ..... = ....
5. Не знаю, будет ли в FC работать такая запись.
6. Скорее всего будет.

1. Я писал - смотри всегда исходный код - там видно - что, куда и как...
2. Не правильно думал - все в ОЗУ... поэтому не нужно путать константы с дефайн (определение).
3. Оно то определит, но что думал ты, мне не понятно... Оно определит и разместит - туда куда укажет компилятор. Изучай Си с уклоном на компилятор AVR-GCC, полностью описан в инете, все библиотеки и все определения...
4. Указать надо, но не так.... Например, посмотри исходный код 1-WIRE в 4 версии FC. И на форуме...
5. :headbang: Сделай пример, и разбери его в Протеусе - там все видно что и куда помещается...
6. Скорей всего не будет... :)
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение Прохожий (Прохожий) » 21 авг 2018, 08:14

Всем привет!!! Тема записи в EEPROM, из тела программы, востребованная и нужная. Может сменить формат донесения полезной информации до форумчан?
Мим, не держи зла, но обучение на готовых решениях никто не отменял. Что толку если человек в их поиске будет лопатить горы бесполезного шлака и терять кучу времени, пытаясь их фрагментарно выдрать из готовых проектов? А ещё здесь на форуме обмениваться цитатами,Гораздо проще, полезнее и удобнее из кучи готовых, однозадачных решений найти для себя нужное и адаптировать их по своим нуждам, полностью представляя как оно работает и само-образовываясь уже на этой основе?
Мим, хотел лично тебя попросить о небольшом одолжении.Давай эксперимент? Эта тема. Конкретный вопрос. Как записать из тела программы константы, данные и прочее в EEPROM? Как записать слово в ЕЕPROM, а потом его правильно выдернуть? (особенно полезно для всякого рода меню, так как флеша всегда не хватает, а еепром без дела болтается). Сделай, пожалуйста топик на вроде справки. А Андрея попросим видос запилить (видосы у него зачётные).Если такая связка сработает, то все только от этого выиграют. Глядишь и форум раскачается :) Знаний у тебя с аксакалами вагон. Вставки на Си с комментариями особенно поощряются :) Заранее благодарен.
P.S: Честно, душа кровью обливается глядя на полудохлый форум, при таком громадном его потенциале :)
Ник: Прохожий
Имя: Прохожий
Практик
Практик
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение Вячеслав (Вячеслав) » 21 авг 2018, 14:36

Прохожий писал(а):Как записать из тела программы константы, данные и прочее в EEPROM?

На форуме это было. Старый форум - ТОПИК: "EEPROM". Там и примеры. Из форума учебник не сделаешь, ответить на конкретный вопрос - могут. Здесь уже давали совет: читай всё подряд и учи Си.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение Прохожий (Прохожий) » 21 авг 2018, 18:02

Ну да. "Читай всё подряд и учи Си" - уже видно к каким результатам посещаемости привело :) У Андреяпрофи количесво просмотров видео по фловкоду, где решаются конкретные задачи на практике, больше чем посещаемость форума за год :) (утрирую, но мысль примерно верная) :) Посмотрел - изучил - повторил - сделал под себя! Есть вопросы - спросил. Современный подход. 6,5К подписчиков. Причём очень приятный и простой в общении человек :) Сколько бы человек к нему заглядывало, если бы в каждом видео отправлял интересующихся в архив форума??? :)
Ник: Прохожий
Имя: Прохожий
Практик
Практик
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение krian (krian) » 22 авг 2018, 12:21

mim писал(а):
krian писал(а):4. В Си, если хочешь наверняка поместить во flash или eeprom, то это надо прямо указать.
flash int int_aaa[28]={ ....... } или const int int_aaa[28]={ ....... }
eeprom char ..... = ....
6. Скорее всего будет.


4. Указать надо, но не так.... Например, посмотри исходный код 1-WIRE в 4 версии FC. И на форуме...


В GCC может и другие правила, а тот фрагмент я написал для CVAVR, там такая запись правильная.
Спасибо за консультацию.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: константы

Сообщение krian (krian) » 22 авг 2018, 12:32

Прохожий писал(а):Тема записи в EEPROM, из тела программы, востребованная и нужная.
.......................................................................
Как записать из тела программы константы, данные и прочее в EEPROM? Как записать слово в ЕЕPROM, а потом его правильно выдернуть?
.........................................................................

Ну уж не знаю.... Я запись и чтение в EEPROM AVR делал стандартными средствами FC-6. Там макросы для этого есть. Не с первого раза получилось, но это по невнимательности. А так, даже читать ничего не пришлось.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей