Страница 1 из 1

Реализация меню на си

Добавлено: Ср ноя 25, 2009 21:13:51
krolaka
нужно реализовать меню для avr для дисплея от s65 много пересмотрел исходников но так и ничего не понял как зделать.
вот приблизительно такой структуры
главное меню
-------------------
-Пункт 1
--подменю1
--подменю2
-Пункт 2
--подменю1
--подменю2
--подменю3
--подменю4
-Пункт 3
--подменю1
--подменю2
--подменю3

пишу я ето в иаре и мог бы сделать на ифах или case но в атмеге8 и так немного места.. подкажыте где смотреть

Добавлено: Ср ноя 25, 2009 21:41:52
dm211
Я сделал на структуре- примерно так-

Код: Выделить всё

 eeprom struct{
  char podmenu_1;      
  char podmenu_2;      
  char podmenu_3;     
  char podmenu_4;      
  char podmenu_5;    
  }punkt[3];
обращение к ячейке меню так-

Код: Выделить всё

 punkt[1].podmenu_1;

Добавлено: Ср ноя 25, 2009 22:53:48
krolaka
ххмммм а что тогда значит punkt[3]; ?
я так понимаю ето только структура.. но можна бы привести чуть подробный пример? :)

Добавлено: Ср ноя 25, 2009 23:01:05
ARV
krolaka, введите в Google слова TUI+AVR и смотрите третью ссылку :) надеюсь, разберетесь...

Добавлено: Чт ноя 26, 2009 06:40:50
dm211
Пример- переключение по пунктам меню-

Код: Выделить всё

#define kn1 !PINA.0
char x;
if(kn1){x++; if(x==4)x=1;}
punkt[x].podmenu_2=10;

Добавлено: Чт ноя 26, 2009 23:26:31
Saadov
Для CVAvr посмотри здесь
http://electronix.ru/forum/index.php?sh ... 0меню&st=0

Но исходники от ARV рулят, респект ему...

Добавлено: Чт янв 07, 2010 09:30:16
FUZZY_
Saadov писал(а):Для CVAvr посмотри здесь
http://electronix.ru/forum/index.php?sh ... 0меню&st=0

Но исходники от ARV рулят, респект ему...

Спасибо! вот исходник с ошибками кто сможет обяснить идеологию
(код на с обяснять не надо)

Добавлено: Чт янв 07, 2010 09:45:34
FUZZY_
Вот еще один исходник с case на с++ для pc

Добавлено: Чт янв 07, 2010 17:34:13
Saadov
FUZZY_ писал(а):
Saadov писал(а):Для CVAvr посмотри здесь
http://electronix.ru/forum/index.php?sh ... 0меню&st=0

Но исходники от ARV рулят, респект ему...

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

Добавлено: Пт янв 08, 2010 11:00:57
FUZZY_
Saadov писал(а):
FUZZY_ писал(а):
Спасибо! вот исходник с ошибками кто сможет обяснить идеологию
(код на с обяснять не надо)
Вопрос не совсем понятен, идеология заключается в том, чтобы выводить меню на двухстрочный дисплей, подменю и выполнять определенные функции при выделении каких либо пунктов.
По ссылку выше все было разжевано до мельчайших кусочков, и ошибки разобраны до рабочего кода.


Вопрос не правильно задан

При компилировании программы структуры где храняться в стеке или памяти (вопрос об использовании new malloc для создания структур в памяти и delete при освобождении - быстродействие теряется не очеть зато эффективное использование памяти)

Добавлено: Пт янв 08, 2010 11:05:28
ARV
FUZZY_ писал(а):При компилировании программы структуры где храняться в стеке или памяти (вопрос об использовании new malloc для создания структур в памяти и delete при освобождении - быстродействие теряется не очеть зато эффективное использование памяти)
какие там еще new и malloc ?! для микроконтроллеров типа AVR с небольшим объемом ОЗУ единственный разумный способ - это статическое хранение всех систем меню в памяти программ как констант! и никакого освобождения само собой. любая попытка "сэкономить" таким образом обернется удвоением требуемой памяти (одна копия строки в памяти программ, вторая в ОЗУ). это неразумно.

Добавлено: Сб янв 09, 2010 23:11:56
FUZZY_
ARV писал(а):
FUZZY_ писал(а):При компилировании программы структуры где храняться в стеке или памяти (вопрос об использовании new malloc для создания структур в памяти и delete при освобождении - быстродействие теряется не очеть зато эффективное использование памяти)
какие там еще new и malloc ?! для микроконтроллеров типа AVR с небольшим объемом ОЗУ единственный разумный способ - это статическое хранение всех систем меню в памяти программ как констант! и никакого освобождения само собой. любая попытка "сэкономить" таким образом обернется удвоением требуемой памяти (одна копия строки в памяти программ, вторая в ОЗУ). это неразумно.

А подключение внешней памяти. (А кто сказал что только для AVR)
А какже размещение функций во внешнем озу для получения большего быстродействия для процов в 100 MHZ

Добавлено: Сб янв 09, 2010 23:17:23
ARV
раз у вас такое раздолье с ОЗУ и быстродействием - берите стандартную библиотеку классов на С++ и не парьте моск :))) тут все микроконтроллерщики-любители :) если у вас ARM - юзайте Linux с его прибамбасами :)))

Добавлено: Сб янв 09, 2010 23:53:27
FUZZY_
ARV писал(а):раз у вас такое раздолье с ОЗУ и быстродействием - берите стандартную библиотеку классов на С++ и не парьте моск :))) тут все микроконтроллерщики-любители :) если у вас ARM - юзайте Linux с его прибамбасами :)))
С ARM не работал - слишком дорогая игрушка

А поделки собираю так беру бросовую плату например от старого банкомата по цене 0.5$ срисовываю схему и юзаю.

Добавлено: Сб янв 09, 2010 23:56:37
ARV
ну тогда конкретизируйте свои вопросы так, чтобы на них можно было ответить. а то сплошные загадки - то не так, это не этак, а что надо - догадайся, мол, сама :)

Добавлено: Вс янв 10, 2010 18:54:24
Saadov
А какже размещение функций во внешнем озу для получения большего быстродействия для процов в 100 MHZ
Не забывайте, что у меги время обращение к внешней памяти на 1 такт больше. В некоторых приложениях и 1 такт может сыграть свою роль)))

Добавлено: Вс янв 10, 2010 19:57:02
FUZZY_
Спасибо за ссылки меню все заработало.

PS есть платы от старых DVD там 16 Mb ram 8 Md FLASH
SPI bootloader 88 Mhz CPU ядро 51 16МВ video

нащет NIX -са интересные мысли прозвучали поподробнее пожалуста