Jump to content

GalatZ

Members
  • Content Count

    283
  • Joined

  • Last visited

  • Days Won

    7

GalatZ last won the day on June 25 2018

GalatZ had the most liked content!

Community Reputation

198 Хороший

About GalatZ

  • Rank
    Постоялец

Информация

  • Пол
    Мужчина
  • Город
    Россия, Вел.Новгород

Электроника

  • Стаж в электронике
    3-5 лет
  • Сфера радиоэлектроники
    усилители НЧ, ремонт аппаратуры, микроконтроллеры
  • Оборудование
    с1-68, мультиметры, Lukey702, ЭПСН.

Recent Profile Visitors

6930 profile views
  1. Насколько я понял, должно хранится во флеш.
  2. Да, эта переменная и ещё парочка не нужны и нигде не используются.
  3. Спасибо за помощь, разобрался, должно быть вот так: typedef struct PROGMEM{ void *Next; void *Previous; void *Parent; void *Child; uint8_t Select; const char Text[]; } menuItem; menuItem *selectedMenuItem; // текущий пункт меню //menuItem* menuStack[10]; //volatile uint8_t menuStackTop; // Externs: extern menuItem const Null_Menu; menuItem const Null_Menu = {(void*)0, (void*)0, (void*)0, (void*)0, 0, {0x00}}; // Defines and Macros: #define NULL_ENTRY Null_Menu #define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Text) \ extern menuItem const Next; \ extern menuItem const Previous; \ extern menuItem const Parent; \ extern menuItem const Child; \ menuItem const Name = {(void*)&Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, { Text }} #define PREVIOUS ((menuItem*)pgm_read_word(&selectedMenuItem->Previous)) #define NEXT ((menuItem*)pgm_read_word(&selectedMenuItem->Next)) #define PARENT ((menuItem*)pgm_read_word(&selectedMenuItem->Parent)) #define CHILD ((menuItem*)pgm_read_word(&selectedMenuItem->Child)) #define SELECT (pgm_read_byte(&selectedMenuItem->Select)) //char strNULL[] PROGMEM = ""; //#define NULL_ENTRY Null_Menu //menuItem Null_Menu = {(void*)0, (void*)0, (void*)0, (void*)0, 0, {0x00}}; // NAME NEXT, PREVIOUS PARENT, CHILD MAKE_MENU(m_s1i1, m_s1i2, NULL_ENTRY, NULL_ENTRY, m_s2i1, 0, "Start"); MAKE_MENU(m_s1i2, m_s1i3, m_s1i1, NULL_ENTRY, m_s3i1, 0, "Settings"); MAKE_MENU(m_s1i3, NULL_ENTRY,m_s1i2, NULL_ENTRY, NULL_ENTRY, MENU_RESET, "Reset"); Все компилируется и работает:
  4. Здравствуйте, разбираюсь с проектом меню Отсюда, при компиляции ругается на размещение во FLASH, не понимаю, что нужно исправить, читал форумы и пытался найти решение сам, не получается. typedef struct PROGMEM{ void *Next; void *Previous; void *Parent; void *Child; uint8_t Select; const char Text[]; } menuItem; menuItem *selectedMenuItem; // текущий пункт меню menuItem* menuStack[10]; volatile uint8_t menuStackTop; #define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Text) \ extern menuItem Next; \ extern menuItem Previous; \ extern menuItem Parent; \ extern menuItem Child; \ menuItem Name = {(void*)&Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, { Text }} #define PREVIOUS ((menuItem*)pgm_read_word(&selectedMenuItem->Previous)) #define NEXT ((menuItem*)pgm_read_word(&selectedMenuItem->Next)) #define PARENT ((menuItem*)pgm_read_word(&selectedMenuItem->Parent)) #define CHILD ((menuItem*)pgm_read_word(&selectedMenuItem->Child)) #define SELECT (pgm_read_byte(&selectedMenuItem->Select)) char strNULL[] PROGMEM = ""; #define NULL_ENTRY Null_Menu menuItem Null_Menu = {(void*)0, (void*)0, (void*)0, (void*)0, 0, {0x00}}; // NAME NEXT, PREVIOUS PARENT, CHILD MAKE_MENU(m_s1i1, m_s1i2, NULL_ENTRY, NULL_ENTRY, m_s2i1, 0, "Start"); MAKE_MENU(m_s1i2, m_s1i3, m_s1i1, NULL_ENTRY, m_s3i1, 0, "Settings"); MAKE_MENU(m_s1i3, NULL_ENTRY,m_s1i2, NULL_ENTRY, NULL_ENTRY, MENU_RESET, "Reset"); // подменю Запуск MAKE_MENU(m_s2i1, m_s2i2, NULL_ENTRY, m_s1i1, NULL_ENTRY, MENU_MODE1, "Mode 1"); MAKE_MENU(m_s2i2, m_s2i3, m_s2i1, m_s1i1, NULL_ENTRY, MENU_MODE2, "Mode 2"); MAKE_MENU(m_s2i3, NULL_ENTRY,m_s2i2, m_s1i1, NULL_ENTRY, MENU_MODE3, "Mode 3"); // подменю Настройка MAKE_MENU(m_s3i1, m_s3i2, NULL_ENTRY, m_s1i2, m_s4i1, 0, "Pressure"); MAKE_MENU(m_s3i2, NULL_ENTRY,m_s3i1, m_s1i2, m_s5i1, 0, "Time"); ... и тд. Error variable 'strNULL' must be const in order to be put into read-only section by means of '__attribute__((progmem))' test_menu Error variable 'Null_Menu' must be const in order to be put into read-only section by means of '__attribute__((progmem))' test_menu Error variable 'm_s1i1' must be const in order to be put into read-only section by means of '__attribute__((progmem))' test_menu .. и т.д.
  5. В наличии 3 корпуса №1 по 1 тыс. Рублей, 1 корпус №2 за 500 рублей.
  6. Продам системный блок от POS-терминала. Модель Itona TC75YYD. Документация Бесшумный, полностью пассивное охлаждение. Установлен SSD накопитель на 60 Gb, Оперативная память 2 Gb DDR3. На борту множество разъемов (6 USB, 2 COM, LPT, VGA, DVI, DisplayPort, PS/2, Audio). Установлена ОС WinXP. Цена 3 тыс. рублей. Отправлю почтой, ТК из Великого Новгорода.
  7. Написать в личные сообщения, что именно хотите приобрести.
×
×
  • Create New...