Easyelectronics.ru

Электроника для всех
Текущее время: 11 авг 2020, 03:41

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 19:23 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Есть интересный проект Micro Menu. Притом оригинал, а не проект из статьи. Но у меня возникли трудности с адаптированием под IAR. Скажу честно, я не до конца разобрался в си с указателями. Казалось бы, вроде понял, применяю структуры, массивы, указатели, но в этом проекте синтаксис в местах, где указатель мне непонятен. Сейчас IAR выдает ошибки. Притом непонятно на что (есть такое в IAR, иногда говорит, что ошибка есть, а в каком месте не указывает).

Делаю сейчас один проект (проект еще не закончен, так что точнее, часть). Но все не было времени оптимизировать свою переделку Micro Menu. И так как меню очень развитое, тяжело добавлять, редактировать пункты меню. Поэтому хочу допилить свою переделку с оригинала.

Прошу помочь с адаптацией оригинала под IAR. Интересуют только файлы menu.c и menu.h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 19:47 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Помнится, мне кто-то жаловался на неидентифицируемые ошибки в этом проекте. Не знаю, в каком компиляторе получались те траблы, но я засунул код в старый добрый CodeVision AVR - и он скомпилировал нормально. То есть можно попробовать вместо IAR компильнуть чем-то другим - хотя бы для выяснения мест и типов ошибок.

Ещё я посоветовал бы закомментировать в проекте сначала почти всё (ну, или методом дихотомии :-) сперва половину, потом четерть, и т.д.) и проверить билдлог - появятся/исчезнут ли сообщения об ошибках. Длинные строки можно разбивать на несколько, чтобы идентифицировать проблему точнее.

Возможный root cause (припоминаю ту прошлую разборку): вложенные массивы+структуры+макросы объявлены не в должном порядке, поэтому компилятор не может их разобрать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 19:53 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
AlexPM писал(а):
Возможно, тут дело в том, что вложенные массивы+структуры+макросы объявлены не в должном порядке, поэтому компилятор не может их разобрать.

Вот именно, у меня сейчас есть переделка Micro Menu. Делал точно так, как вы сейчас советуете. Собирал по кусочкам. А так как застрял на непонятном синтаксисе с указателями, я обошел эту проблему следующим образом. В оригинале в структуре MENU указатели на структуры. Я же сделал так:
Show

До недавнего времени это меня вполне устраивало. Сейчас мне нужно сделать почти как в оригинале.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 20:20 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
demiurg1978 писал(а):
Сейчас мне нужно сделать почти как в оригинале.
Причём обязательно в IAR? Ну тогда включите вывод препроцессора - иногда бывает полезно, если вывод компилятора не указывает на расположение ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 21:38 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5879
Насколько помниться там важно выкинуть Progmem(или как там еб..нутые квалификаторы AVR) и указать явно размер массива ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 12 ноя 2014, 23:23 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
AlexPM писал(а):
Причём обязательно в IAR?

IAR обязателен. В WinAVR, сейчас AVR Toolchain, нет никакого желания работать. Не получилось у меня дружбы с этими компиляторами. В подробности вдаваться не буду. Обсуждали уже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 00:08 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
У меня всё сложилось в IAR отлично. Переделал микроменю под управление тремя кнопками в STM8S. Если нужно, выложу код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 08:35 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
У меня всё сложилось в IAR отлично. Переделал микроменю под управление тремя кнопками в STM8S. Если нужно, выложу код.

Нужно. У меня пока не выходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 12:53 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
Вот немного подчистил :
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 14:08 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
...

Благодарю! Маленько подчистил, скомпилировал, ошибок пока нет. Теперь хоть есть с чем работать. А то уже несколько дней на месте стою с этой программой. Буду дальше разбираться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 17:20 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
три кнопки предусматривают зацикленность меню: последний пункт должен указывать на первый, а самый глубокий - на меню верхнего уровня. Тогда нет необходимости в кнопках "вверх" и "назад".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 18:21 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
три кнопки предусматривают зацикленность меню: последний пункт должен указывать на первый, а самый глубокий - на меню верхнего уровня. Тогда нет необходимости в кнопках "вверх" и "назад".

Кстати, недавно об этом думал. Когда меню не зацикленное, то NULL будет признаком начала, конца уровня меню. Зацикленное меню удобнее, но что теперь можно сделать признаком пределов уровня меню?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 18:50 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2872
у меня была дополнительная переменнная - текущий индекс меню. Причем массив этих индексов(кол-во элементов зависит от кол-ва вложенных элементов), чтобы при возврате на уровень вверх переходил не в начало этого уровня, а туда, откуда зашли. Надоело пролистывать постоянно после возврата. Могу кинуть свой проект, но он под AVR Studio 4.19. Там есть отрисовка меню для графического экранчика 128х64, можно кой-чего подглядеть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 19:32 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
demiurg1978 писал(а):
Зацикленное меню удобнее, но что теперь можно сделать признаком пределов уровня меню?

Посмотрите выложенный код. Объявленные пункты меню. Переход по вертикали (вниз) по пунктам меню этого же уровня. Переход вглубь (вправо) либо на следующий уровень, а если его нет - на пункт самого верхнего уровня. Выбор (ввод) выполняет действие. Поэтому я использовал только "child" и "next", и мне не было нужно указывать "parent" и "previus" в меню, так как последний child указывает на parent, а последний next указывает на previus.
Для простого проекта мне было достаточно трёх кнопок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 13 ноя 2014, 19:38 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Докладываю. Собрал свою структуру. Пока ошибок нет. Я сделал тестовый проект. Проверяю на нем. А то чуть не загубил рабочий проект своими пробами, еле восстановил. :) Чуть позже начну собирать конструктор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 08:03 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
...

Слушай, а где у тебя структуры меню находятся. В ОЗУ или флеше?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 10:01 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
структуры меню находятся во флеше. Если понадобится, добавь в описания элементов меню ключевое слово const.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 10:08 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
структуры меню находятся во флеше. Если понадобится, добавь в описания элементов меню ключевое слово const.

Судя по всему, для твоих МК IAR по другому работает. Не работают const. В ОЗУ все кидает. А для AVR флеша нужно пошаманить с бубнами.

Никто не скажет, в Micro Menu размер структуры зависит от объема текстовых данных? Или же размер жестко задан?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 10:40 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2872
размер конечно зависит. Во флеше лежат текстовые константы - название пункта меню.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 14:36 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
Какой камень то? Какая организация памяти? В STM8 память линейная, в ней не нужно выдумывать спец. команды чтения из флеша.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 14 ноя 2014, 17:53 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
SOVA писал(а):
Какой камень то? Какая организация памяти? В STM8 память линейная, в ней не нужно выдумывать спец. команды чтения из флеша.

AVR. "память линейная" Я об этом и говорю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 15 ноя 2014, 05:31 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Кое-какой результат есть. Но не могу пока добиться переменной длины строкового массива. Чтобы его размер зависел от объема текста.
Show


Если убрать число 20, компилятор выдает ошибку:
Error[Pe146]: too many initializer values G:\Work\Projects\ATMEL\IAR\C\MENU_TEMPLATE\menu.c 12

Есть мысли, предложения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 15 ноя 2014, 14:05 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
Ну вам выбирать, или шашечки, или ехать. Структура определена одна, а вы хотите использовать поле разной длины. Указывайте ссылки на текстовые строки вместо самой строки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 15 ноя 2014, 19:37 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
2 SOVA! Огромная благодарность! В принципе все получилось. У меня есть заготовка одного проекта, просто заменил файлы menu.c menu.h новыми и усе заработало. Внешне ничего не изменилось, но теперь работает на новом подходе в Micro Menu. Ссылку на видео я привел в первом сообщении топика.
Теперь осталось следующее: вывод текста всех текущих пунктов меню. Пока у меня сделано в лоб. Я привел выше пример. Элемент структуры Menu_ Func. К примеру i1_s1_temp_init. В этой функции вывод текста "ТЕМПЕРАТУРА".
Я из-за чего затеял весь этот сыр-бор. У меня не было пункта Text. Из-за этого затруднительно воспринимать таблицу-конструктор меню. А так сразу видно. Пункт такой-то, текст такой-то.
Перебор пунктов. Мысль следующая. Prev первого пункта и Next последного делаем NULL_MENU. Дошли до последнего пункта и чтобы циклично выйти на первый пункт, ищем NULL_MENU первого пункта.
Если кого интересует, могу выложить проект для IAR. МК AVR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Адаптировать Micro Menu под IAR
СообщениеДобавлено: 15 ноя 2014, 20:04 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 643
Откуда: Киев
Зачем что-то искать. Посмотрите внимательно в мой проект - там все переходы выставлены. Составьте картинку (хоть на листочке) переходов между пунктами меню - вам всё станет ясно. Я уже дважды рассказывал, постарайтесь понять самостоятельно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2  След.


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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB