Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

array
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13231
Страница 1 от 1

Автор:  Живко [ Пон Сеп 29, 2014 10:53 pm ]
Заглавие:  array

Използвам IAR Embedded workbench for AVR .Имам дефинирани N на брой масива:
__flash const char *ptici[]={
"кокошка",
"патка ",
"гълъб",
"врабче"
};
.
N
.
__flash const char *animal[]={
"лъв",
"слон ",
"котка"
};
__flash unsigned char color_ptici[12]={12,4,33,65…1};
.
N
.
__flash unsigned char color_animal[12]={44,2,27,66…9};

//функция за визуализация
Print_LCD(unsigned char * color,char *p[])
{
.
.
}
Main()
{
Print_LCD(color_ptici,ptici);
Print_LCD(color_animal,aimal);
}
След компилация ми дава грешка:
Error[Pe167]: argument of type "unsigned char __flash *" is incompatible with parameter of type "unsigned char *"
Ако масива го направя в RAM т.е. без __flash всичко е ок.
Въпроса ми е как да дефинирам еднотипни масиви от константи и да ги предам на функция ?

Автор:  bobihot [ Вто Сеп 30, 2014 1:04 am ]
Заглавие:  Re: array

Той ти го е писал:
"unsigned char *"
Print_LCD(unsigned char __flash * color,char *p[])
Така му казваш, че са от флаш паметта и си ги адресира от там. Иначе ще ги адресира от рама.

Автор:  Живко [ Вто Сеп 30, 2014 10:13 pm ]
Заглавие:  Re: array

Благодарско :)

но се появи и следния проблем при дефиниране на масив от вида:
__flash const char *ptici[]={
"кокошка",
"патка ",
"гълъб",
"врабче"
};
се заделят и байтове от рама колкото са буквите в думите + 1 и толкова в флаша
а когато е :
__flash unsigned char color_animal[12]={44,2,27,66…9};
го разполага само в флаша

някаква идея защо е така?
и решение да се разположи само в флаша

Автор:  Nikola Kirov [ Вто Сеп 30, 2014 10:49 pm ]
Заглавие:  Re: array

В опциите на ИАР имаше нещо като "place strings in flash".

Имаше някакъв начин и локално да се укаже с прагма директива.

А може да пробваш с заигравка с __flash

__flash const char __flash *ptici[]={
"кокошка",
"патка ",
"гълъб",
"врабче"
};

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/