| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Проблем с инициализация http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3843 |
Страница 1 от 1 |
| Автор: | HCL [ Пет Мар 09, 2007 10:55 pm ] | ||||||||||||||||||
| Заглавие: | Проблем с инициализация | ||||||||||||||||||
Заглавието не е точно main.c
array.h
резултатьт е, че масивьт ми е пьлен с неопределени стойности. Лошото е, че понякога стойностите са такива каквито трябва. Това е единственото място кьдето чета или пиша в масива. В действителност операциите са малко повече, но всички са в func(), като не прехвьрлям максималната стойност на unsigned int. Накрая редуцирах всичко до обикновенно шифтване, сьщата история. Какво пропускам? Компилаторьт е КЕИЛ, а µC-а 88C166. Сигурно питам голяма глупост, ама .... |
|||||||||||||||||||
| Автор: | Nikola Kirov [ Съб Мар 10, 2007 12:01 am ] |
| Заглавие: | |
Първо ми се набива на очи че си декларираш променлива и я инициализираш в h фаила. Това не е правилно. Ако този h фаил го инклуднеш и някъде другаде по принцип компилатора трябва да даде грешка. Ако не даде резултатите може и да са като това което описваш. трява да инициализираш в c. фаила а в h фаила да имаш extern unsigned int array[]; ако искаш този масив да го ползваш и в някой друг c фаил в които си инклуднал h фаила. |
|
| Автор: | HCL [ Съб Мар 10, 2007 2:41 am ] | |||||||||
| Заглавие: | ||||||||||
Никола благодаря за отговора! Забравих да пиша, че бях опитал да декларирам и едновременно с това да инициализирам най-горе в .c файла, още преди декларацията на всички функции. После написах една функция modify(), която да го модифицира. Компилира се без проблеми обаче изглежда modify() не работи както трябва и func() дава глупости.
Нещата се оправят единствено когато декларирам и инициализирам масива вьтре в func() и си го модифицирам от там. Ще ровичкам отново в понеделник, изморен сьм и сигурно пропускам нещо. |
||||||||||
| Автор: | nickich [ Съб Мар 10, 2007 11:00 am ] |
| Заглавие: | |
Като гледам така 'х' е локална за func(), което означава, че не се ползва другаде и компилатора може да оптимизира func(), или най-вероятно да я махне. Всъщност, какво трябва да прави func() в последния пример? Може да видиш листинга на програмата, или да спреш на brakepoint преди всяка функция и да видиш дали масива в началото е инициализиран правилно, или след това се омазва. Това не ми стана много ясно... |
|
| Автор: | HCL [ Съб Мар 10, 2007 11:48 am ] |
| Заглавие: | |
@nickich func() в действителност е модификация на binary search с която тьрся в lookup таблица, каква темп. сьм измерил (pt100). Това x сьм го писал за да изглежда по-пригледно. Проблемьт дойде от там, че използвам делител на напрежение вместо източник на конст. ток (такова ми е заданиетоm знам че е сьпроводено и 1000 източника на грешки) и като начинаещ си сметнах lookup таблицата за даденото ми сьпротивление от 220ома. Което разбира се се оказа в долната граница на толерантността си и и се наложи да преизчисля lookup таблицата за 218ома. Обаче имах само крос компилатора на Кеил на разположение (и машината е под Windows) и викам за начало ще вкарам една modify() функция, която преизчислява наново lookup таблицата в µC-a. В интерес на истината lookup таблицата си я преизчислявам в кьщи на PC-то и modify() в действителност не се мандахерца в сорса за µC-а, но да се появи тази грешка и искам да разбера защо. И за да ми е максимално гадно кода си стана големичьк и не мога да ползвам дебьгера (Кеила е демо), та опитвам да дебьгвам с LCD-то, мька. Ще огледам пак понеделник да не би да сьм пропуснал нещо. |
|
| Автор: | HCL [ Сря Мар 21, 2007 11:54 pm ] |
| Заглавие: | |
Така мисля, че открих корените на проблема. Инициализацията на глобалните променливи е била забранена в startup файла, което в комбинация с изключено нулиране на RAM сектора ми е бьркало нещата. Тук е описано всичко по-подробно, ако представлява интерес за някой. http://www.mcu-bg.com/mcu_site/viewtopi ... 7313#47313 |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|