Например TDA7294

Форум РадиоКот • Просмотр темы - FlexMenu - решение вопросов меню. Зацените.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 14:49:42

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 78 ]    , , 3,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 09:40:06 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 4
Demiurg, вряд ли так просто получится. Размер всего проекта выходит около 5кБ, что больше ограничения 4кБ на размер кода в IAR.

Да и смысла под проприетарные компиляторы подстраиваться особого нет. Вы бы ещё CodeVision упомянули...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 09:45:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Demiurg писал(а):
Попробовал запустить в AVR Toolchain, оказывается у вас зависимость от версии.
у меня зависимость от версии по минимуму, т.е. ниже определенной версии не будет поддержки __flash, а значит, и мои файлы не соберутся. но AVR Toolchain давно имеет соответствующую версию! почему у вас не собралось - не понимаю: я тестировал у себя от версии 4.9.2 и до 9.2.0
Demiurg писал(а):
Это не моя личная хотелка.
это ваша личная хотелка - смотрите на WiseLord, он буквально за 5 минут запустил и на своем AVR (я тестировал на меге8, а он на меге328), и на stm32, и никаких скомпилированных проектов ему не потребовалось. я предоставил полностью готовые примеры с готовыми makefile для atmega8, в комплекте с протеусом - хоть собирайте сами, хоть тестируйте готовое! а остальное - "за свой счет" :)
Demiurg писал(а):
при этом без опроса флага готовности
самая порочная практика из всех, что я встречал - игнорировать рекомендации даташита, полагаясь на какие-то задержки. я так не делал, и не буду делать. и вам не советую :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 10:48:58 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: -4
Еб... Вы один из самых упоротых и узколобых собеседников. Это не эмоции. Мне есть с чем сравнивать. Я не знаю как вы пришли в программирование микроконтроллеров. Лично я, как и многие другие от железа. И программирование как таковое малая часть нашей деятельности. И вы сами по форумам видите, что у многих ситуация в разы хуже, чем у меня, к примеру.
Дисплеи по даташитам работают штатно, если соблюдать времянки. Без опроса флага готовности.
А впрочем, что я время теряю. По проекту меню откланиваюсь. ебитесь варитесь сами в собственном соку.
У меня на нынешний момент была единственная проблема - с необязательным параметром. Наверное пришло время решать её самому. Лично.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 12:39:50 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
ARV, кстати, те модифицированные мною исходники не пробовали под windows собрать? Как avr, так и stm32 вариант?


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 12:47:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
нет, не пробовал. у меня как-то с GIT не складывается... только и могу поглядеть файлы в браузере. с stm32 вообще никак не связан (ни тулчейна нет, ни МК), а под AVR не увидел какой-то заметной разницы в ваших модификациях. даже несколько удивлен количеству "лишних" файлов :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 13:01:35 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
ARV писал(а):
у меня как-то с GIT не складывается
А что тогда вместо него предпочитаете? SVN?

Добавлено after 3 minutes 52 seconds:
ARV писал(а):
даже несколько удивлен количеству "лишних" файлов
Всё эти файлы avr_fmenu.* - это файлы проекта, чтобы открыть код в QtCreator. По сути, они не нужны для сборки. Достаточно только в PATH иметь make и компилятор (avr-gcc и arm-none-eabi-gcc соответственно).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 13:02:01 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
WiseLord писал(а):
А что тогда вместо него предпочитаете?
вы будете смеяться: внешний диск :)))
я использую Eclipse, и много раз хотел как-то приспособить либо встроенную в него возможность контроля версий, либо при помощи плагинов что-то подключить... но так и не уразумел, как всем этим добром пользоваться, чтобы "на кнопочку нажал - и готово". поэтому вот так как-то...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 13:20:40 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
ARV писал(а):
я использую Eclipse, и много раз хотел как-то приспособить либо встроенную в него возможность контроля версий, либо при помощи плагинов что-то подключить... но так и не уразумел, как всем этим добром пользоваться
А я пользуюсь QtCreator, в котором тоже есть поддержка разных систем контроля версий, но я эти функционалом не пользуюсь.

Вот и Вам я бы посоветовал изучить эти несколько команд консольного git, и пользоваться ими. А когда войдёте во вкус и поймёте, как это работает "снизу" - можно положить и IDE- шным функционалом пользоваться, если возникнет желание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 13:25:32 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
WiseLord писал(а):
я бы посоветовал изучить эти несколько команд консольного git
да не вы первый мне это советуете... но я очень ленивый: это ж надо консоль открывать, команды вбивать... еще помнить их... не, мне или "кнопочку", или уж по-старинке - на внешний диск Total Commander-ом :)))

сейчас я вообще все на внешнем диске держу: и проекты, и тулченый, и Eclipse (пользуюсь тем, что Eclipse можно обдурить, введя в него относительные пути)... зато могу на любом компе работать, хоть в гостях :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 14:18:59 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Нет, по мне - написание кода без истории и системы контроля версий - это просто мазохизм.

Помнить максимум десяток простых (двухсловных) команд - это проще, чем помнить для всего объёма кода, зачем вот в этом месте была заведена какая-то переменная год назад, и почему два года назад я вот тут сделал вот так.

Вот минимальный список команд - просто для локальной работы:
Код:
git init - создать в некотором рабочем каталоге git репозиторий
git add <относительный путь> - добавить текущие изменения в файл(ах)/каталогу в список для индексации
gid commit - зафиксировать список для индексации (создать коммит в истории с текущим состоянием дерева проекта)
git log - посмотреть историю коммитов
git show <хэш коммита> - посмотреть изменения, сделанные в этом комите.

Этого вполне достаточно просто для хранения истории своих изменений в каталоге "на внешнем диске"
А если захочется свой локальный репозиторий на тот же Github отправлять или оттуда забирать - то ещё понадобятся пара команд:
Код:
git push - отправить текущее состояние (последний коммит со всей историей) на удалённый сервер
git pull - забрать последние изменения с сервера (если, к примеру, работали на другой машине и пушили раньше оттуда на сервер)

А дальше уже есть другие "фишки", типа как работа с несколькими ветками кода - когда можно временно переключиться на другую ветку, сделать в ней пару "рабочих" коммитов, потом вернуться на основное состояние и работать дальше там. Но это уже после "вхождения во вкус".

Не так уж и сложно запомнить, как по мне.

А особая прелесть - когда есть несколько проектов с похожим кодом (кусками кода), и нужно изменения в одном проекте забрать в другой - тоже всё упрощается донельзя. Но это уже чуть более высокий уровень владения Git-ом.

Добавлено after 17 minutes 37 seconds:
А вот небольшая иллюстрация локальной работы с Git в изначально пустом каталоге:
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт май 08, 2020 14:31:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
теорию я знаю. но применять её на практике... увы.
Eclipse дает мне возможность иметь локальную историю изменений, я насроил до 100 предыдущих вариантов - и мне пока хватает без всяких Git-ов.
а осальное для работы с Git в Eclipse совсем не интуитивно (для меня). а я уже устал заниматься тем, что всякий раз что-то углубленно изучать и настраивать только для того, чтобы потом пару раз поиспользовать.

мне бы кнопочку...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Ср авг 19, 2020 21:38:57 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
В общем собрал все вместе:
СпойлерОписание меню
Код:
   typedef const struct Menu_Item {
      const struct Menu_Item *Next; /**< Указатель на следующий пункт меню этого пункта меню */
      const struct Menu_Item *Previous; /**< Указатель на предыдущий пункт меню этого пункта меню */
      const struct Menu_Item *Parent; /**< Указатель на родительский пункт меню этого пункта меню */
      const struct Menu_Item *Child; /**< Указатель на дочерний пункт меню этого пункта меню */
      const char id;
   } Menu_Item_t;
у каждого пункта меню свой уникальный идентификатор id.
Самих функций здесь не много
Код:
   #define MENU_ITEM(Name, Next, Previous, Parent, Child, id) \
      extern Menu_Item_t const Next;     \
      extern Menu_Item_t const Previous; \
      extern Menu_Item_t const Parent;   \
      extern Menu_Item_t const Child;  \
      Menu_Item_t const Name = {&Next, &Previous, &Parent, &Child, id}

   #define MENU_PARENT         (Menu_GetCurrentMenu()->Parent)
   #define MENU_CHILD          (Menu_GetCurrentMenu()->Child)
   #define MENU_NEXT           (Menu_GetCurrentMenu()->Next)
   #define MENU_PREVIOUS       (Menu_GetCurrentMenu()->Previous)

   extern Menu_Item_t NULL_MENU;


Menu_Item_t NULL_MENU = {0};

static void (*MenuWriteFunc)(const char* Text) = NULL;
static Menu_Item_t* CurrentMenuItem = &NULL_MENU;

Menu_Item_t* Menu_GetCurrentMenu(void)
{
   return CurrentMenuItem;
}

void Menu_Navigate(Menu_Item_t* const NewMenu)
{
   if ((NewMenu == &NULL_MENU) || (NewMenu == NULL))
      return;
   CurrentMenuItem = NewMenu;
}

Само меню выглядит так
Код:
MENU_ITEM(Menu_1, Menu_2, NULL_MENU, NULL_MENU, NULL_MENU, SETTING_ENTER);      // Settings
MENU_ITEM(Menu_2, Menu_2_1, Menu_1, Menu_5, NULL_MENU, CALIBRATIONS_DEVICES);      // Calibrations Devices
MENU_ITEM(Menu_2_1, Menu_2_1_1, Menu_2, Menu_2_2, Menu_2_1, CALIBRATION_VOLTMETER);      // Calibration of the voltmeter
MENU_ITEM(Menu_2_2, Menu_2_2_1, Menu_2, Menu_2_2, Menu_2_1, CALIBRATION_AMMETER);      // Calibration of the ammeter

MENU_ITEM(Menu_2_1_1, Menu_2_1_2, Menu_2_1, NULL_MENU, NULL_MENU, VOLTMETER_1);      //
MENU_ITEM(Menu_2_1_2, Menu_2_1_1, Menu_2_1, NULL_MENU, NULL_MENU, VOLTMETER_2);      //
навигация по меню
Код:
Menu_Navigate(MENU_NEXT);
Menu_Navigate(MENU_PREVIOUS);
Menu_Navigate(MENU_CHILD);
Menu_Navigate(MENU_PARENT);
как я выше уже написал, у каждого меню свой уникальный идентификатор id, берется отсюда
Код:
STATE ( NOT,                      NULL                ),
STATE (SETTING_ENTER,                settings_enter         ),
STATE (CALIBRATIONS_DEVICES,       Calibrations_Devices   ),
STATE (CALIBRATION_VOLTMETER,       Calibration_Voltmeter   ),
STATE (VOLTMETER_1,                Voltmeter_1            ),
STATE (VOLTMETER_2,                Voltmeter_2            ),
в основной программе я получаю этот id текущего пункта меню
Код:
volatile Menu_Item_t* menu = &NULL_MENU;

menu = Menu_GetCurrentMenu();

        id = menu->id;
        if(id) proc_device(id);
и отправляю на исполнение
Код:
void proc_device (char id)
{
_proc_device = id;
proc_fsm_func (proc_device_func, _proc_device);
}
void proc_fsm_func (FUNC __flash *ptr_func, unsigned char s)
{
  ptr_func [s] ();
}

const FUNC proc_device_func [PROC_DEVICE_STATES] =
{
#define STATE(name, func) func
#include "func.h"
#undef STATE
};
к примеру так
Код:
// Menus function
void settings_enter(void)
{
    lcd_gotoxy (4,0);
    lcd_putstring ("Settings");
}
void Calibrations_Devices(void)
{
    lcd_gotoxy (0,0);
    lcd_putstring ("Calibrations");
    lcd_gotoxy (0,1);
    lcd_putstring ("Devices");
}
все просто и без всяких высоко интеллектуальных заморочек.
Последнее можно заменить на
Код:
typedef enum{
   standard_screen,         //0 стандартный екран
   setting_enter,            // меню настроек
   calibrations_devices,      //
   calibration_voltmeter,      //
   voltmeter_1,            //
   voltmeter_2,            //
} display;

        switch(id)
        {
        case setting_enter:
           settings_enter();
              break;
        case calibrations_devices:
           Calibrations_Devices();
              break;
        case calibration_voltmeter:
           Calibration_Voltmeter();
              break;
но мне показалось так интересней.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Ср авг 19, 2020 22:12:36 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ну так это у вас полчилоь классическое меню, без возможности делать динамичекое название пункта, без встроенного редактирования параметров...
по id перебирать варианты... оно, конечно, полезно, но скучновато...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Чт авг 20, 2020 05:20:23 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Я же вам писал, запятую поставьте там где мне надо
СпойлерМеню
Код:
      // Menus  Name     | Next      | Prev    | Parent   | Child    | SelectFunction
   MENU_ITEM(Menu_5_1_1, NULL_MENU, Menu_5_1, NULL_MENU, NULL_MENU, T_VOLTAGES);      ///
Опрос кнопок, на BTN_SHRT1 и BTN_SHRT2 энкодер висит
Код:
        if (button == BTN_SHRT4) {
           lcd_clear();//очистка LCD и перевод курсора в 0.0
           Menu_Navigate(MENU_NEXT);
         if(id == T_VOLTAGES) { if(table_u++ == U_33)  table_u = U_33; }
        }

        if (button == BTN_SHRT3) {
           lcd_clear();//очистка LCD и перевод курсора в 0.0
           Menu_Navigate(MENU_PREVIOUS);
        }

        if (button == BTN_SHRT2) {
            switch(id)
            {
            case CALIBRATIONS_DEVICES:
            case CALIBRATION_TABLE:
            case CALIBRATION_VOLTMETER:
            case CALIBRATION_AMMETER:
            case TABLE_VOLTAGES:
            case TABLE_CURRENT:
               lcd_clear();//очистка LCD и перевод курсора в 0.0
               Menu_Navigate(MENU_CHILD);
                  break;
            default:  break;
            }
            if(id == T_VOLTAGES) {variable[table_u].U_table--; variable[table_u].U_table = normalize (((int16_t)variable[table_u].U_table), ((int16_t)(0)), ((int16_t)(UImax_pwm)));}
        }
        if (button == BTN_SHRT1) {
            switch(id)
            {
            case CALIBRATIONS_DEVICES:
            case CALIBRATION_TABLE:
            case CALIBRATION_VOLTMETER:
            case CALIBRATION_AMMETER:
            case TABLE_VOLTAGES:
            case TABLE_CURRENT:
           lcd_clear();//очистка LCD и перевод курсора в 0.0
           Menu_Navigate(MENU_PARENT);
          break;
            default:  break;
            }
            if(id == T_VOLTAGES) {variable[table_u].U_table++; variable[table_u].U_table = normalize (((int16_t)variable[table_u].U_table), ((int16_t)(0)), ((int16_t)(UImax_pwm)));}
        }
вывод функции
Код:
void T_voltages (void)
{
    lcd_gotoxy (0, 0);
    lcd_putstring("Set");
    lcd_gotoxy (13, 0);
    sprintf (string_out,"%02dV",(uint8_t)table_u);
    lcd_putstring (string_out);
    lcd_gotoxy (0, 1);
    sprintf (string_out,"DAC=%04d",variable[table_u].U_table);
    lcd_putstring (string_out);

    lcd_gotoxy (9,1);
    sprintf (string_out,"\"%2d.%02d\"", x_u_izm/100, (x_u_izm)%100);
    lcd_putstring (string_out);
}
А еще и поморгать чем нибудь, к примеру так
Код:
   if((millis() - previousMillis) > 500){
      previousMillis = millis();
      blink = !blink;
   }

   lcd_gotoxy (0,1);
   if (blink) lcd_putchar(0x22); else lcd_putchar(0x20);

   lcd_gotoxy (1, 1);
    sprintf (string_out,"%04d",Imax_adc);
    lcd_putstring_flash (string_out);

   lcd_gotoxy (5,1);
   if (blink) lcd_putchar(0x22); else lcd_putchar(0x20);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Чт авг 20, 2020 09:16:43 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Dimon456 писал(а):
запятую поставьте там где мне надо
:shock: ???????????

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Чт авг 20, 2020 13:36:01 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
ARV, все равно чуть ли не для каждого пункта меню вы будете писать свою функцию, универсальности здесь нет и не зачем усложнять высокоинтеллектуальными кодами в которых трудно разобраться.
Попробуйте написать мой пункт меню T_voltages на своем FlexMenu с тем же алгоритмом и стем же отображением на lcd?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Чт авг 20, 2020 14:04:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Dimon456 писал(а):
все равно
отнюдь.
я задумал упростить типичные пункты меню, сделав из сразу готовыми фукнциями. при этом возможность сделать свою уникальную для вывода уникального содержимого так же имеется. вы же исключили в принципе возможность упрощения чего-либо. так что не все равно. в качестве универсального решения вы предложили самое примитивное. да, оно 100% универсально - бери напильник и допиливай под себя.
я преложил решение, которое хоть на 10%, но позволяет обойтись без напильника. множество настроек могут быть реализованы изначальным вариантом FlexMenu практически без усиилий программиста, разве что описать тип данных придется, и выделить ячейки EEPROM под них.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт авг 21, 2020 08:54:21 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 941
Рейтинг сообщения: 0
Demiurg писал(а):
при этом без опроса флага готовности
самая порочная практика из всех, что я встречал - игнорировать рекомендации даташита, полагаясь на какие-то задержки. я так не делал, и не буду делать. и вам не советую :)

Да ладно! Все времена выполнения команд как раз таки в ДШ чётко расписаны. Да и к чему эти излишние телодвижения с готовностью и с дополнительным пином?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт авг 21, 2020 09:56:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
А в чем сакральный смысл наличия бита готовности, если можно по задержкам?

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

Что практичнее?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FlexMenu - решение вопросов меню. Зацените.
СообщениеДобавлено: Пт авг 21, 2020 12:09:41 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
ARV, я даже и не думал что так будет работать
Спойлерid
Код:
STATE (STANDARD_SCREEN,            standard_screen         ),    //
STATE (MODE_BP,                  standard_screen         ),    //
STATE (POWER,                  standard_screen         ),    //
STATE (CHARGE,                  standard_screen         ),    //
STATE (OPERATION,               standard_screen         ),    //
STATE (TIMING,                  standard_screen         ),    //
меню
Код:
// Menus  Name        | Next      | Prev    | Parent   | Child    | SelectFunction
MENU_ITEM(Menu_0,    Menu_0_2,    NULL_MENU, NULL_MENU, NULL_MENU, STANDARD_SCREEN);    //
MENU_ITEM(Menu_0_2, Menu_0_3,    NULL_MENU, NULL_MENU, NULL_MENU, MODE_BP);      //
MENU_ITEM(Menu_0_3, Menu_0_4,    NULL_MENU, NULL_MENU, NULL_MENU, POWER);         //
MENU_ITEM(Menu_0_4, Menu_0_5,    NULL_MENU, NULL_MENU, NULL_MENU, CHARGE);         //
MENU_ITEM(Menu_0_5, Menu_0_6,    NULL_MENU, NULL_MENU, NULL_MENU, OPERATION);      //
MENU_ITEM(Menu_0_6, Menu_0,    NULL_MENU, NULL_MENU, NULL_MENU, TIMING);         //
сама функция
Код:
void standard_screen (void)
{
   lcd_gotoxy (0,0);
    sprintf (string_out,...;
    lcd_putstring (string_out);

    lcd_gotoxy (9,0);
    sprintf (string_out,...;
    lcd_putstring (string_out);

    lcd_gotoxy (0,1);
    sprintf (string_out,...;
    lcd_putstring (string_out);

       //дополнительная информация
    lcd_gotoxy (9, 1);
       if(id==STANDARD_SCREEN){  //
       sprintf (string_out,...;
      lcd_putstring (string_out);
       }
       if(id==MODE_BP){        //
         sprintf (string_out,...;
      lcd_putstring (string_out);
       }
       if(id==POWER){           //
       sprintf (string_out,...;
      lcd_putstring (string_out);
       }
       if(id==CHARGE){        //
       sprintf (string_out,...;
      lcd_putstring (string_out);
       }
       if(id==OPERATION){        //
       sprintf (string_out,...;
      lcd_putstring (string_out);
       }
       if(id==TIMING){        //
      sprintf (string_out,...;
      lcd_putstring (string_out);      
       }
}


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 78 ]    , , 3,  

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: OKF и гости: 20


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y