| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Масив в ПРОГРАМНАТА памет с HI-TECH PICC-18 http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4667 |
Страница 1 от 1 |
| Автор: | juzisound [ Вто Авг 21, 2007 10:10 am ] |
| Заглавие: | Масив в ПРОГРАМНАТА памет с HI-TECH PICC-18 |
Здравейте! Имам следния проблем. Имам масив от структори, които искам да разположа в програмната памет, обаче не искам да ги инициалицирам. Какво става: Структората ми е описана така: struct pesen{ // Големина 24 байта unsigned long first_sec; unsigned long last_sec; unsigned char used; unsigned char name[15]; } Масива от структори очаквах да го опиша така: const struct pesen pesen[100]; обаче компилатора упорито се мъчи да го завре в RAM и естествено не успява. Пробвах различни места на const - ама пак неще. Ако обаче инициализирам само дори един елемент - отива си дето трябва. Ето така: const struct pesen pesen[100] = { {0,0,0,""} }; Така ли трябва да е, или аз съм нещо |
|
| Автор: | Predator_MF [ Вто Авг 21, 2007 11:18 am ] |
| Заглавие: | |
Не можеш да инициализираш така само един от елементите на pesen[100], ако ще инициализираш - пишеш всичките 100 елемента или на някакво място в програмата инициализираш който си искаш елемент |
|
| Автор: | juzisound [ Вто Авг 21, 2007 12:13 pm ] |
| Заглавие: | |
Абе аз му схванах идеята - след малко размисли на студена водичка... То понеже тия масиви са в програмната памет, компилатора трябва да каже какво да запише програматора там, ама докато не му кажа аз, се прави на луд и се мъчи да го завре в рама, въпреки че е деклариран като const. Неяснотата идва от там, че аз очаквах че сам ще му сложи нули, а той искал аз да му подскажа. И като инициализирам първата структора, той на своя глава инициализира и останалите пак с нула. Все ме гризе нещо че трябваше сам да ги инициализира с 0, ама айде - от мен да мине... |
|
| Автор: | Yanek [ Вто Авг 21, 2007 12:32 pm ] | |||||||||
| Заглавие: | ||||||||||
Ако това ще те успокои някои компилатори дори издават съобщение за грешка, ако нямаш поне един инициализиран елемент в променлива (в този случай масив от структури) обявена с const. За това пък имат специална дума (може и pragma директива), която обявява "променлива" от програмната памет като неинициализирана. Може би този компилатор също има такава. Една малка поправка: структУра. |
||||||||||
| Автор: | juzisound [ Вто Авг 21, 2007 12:39 pm ] |
| Заглавие: | |
Има - persistent, ама всички проби да и улуча мястото бяха неуспешни. Иначе съм по-спокоен де |
|
| Автор: | Ки4о [ Вто Авг 21, 2007 2:03 pm ] |
| Заглавие: | |
Пробвах следното нещо,но може и да бъркам : volatile signed char buf1[466]; в последствие: buf1[0]=1; buf1[1]=2; buf1[210]=11; buf1[211]=12; buf1[212]=13; buf1[213]=14; И виждаш как си задава стойностите е програмната памет,не в RAM. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|