| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| RQ: AVR GCC (или просто C?) - проблем с променлива в main() http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8770 |
Страница 1 от 2 |
| Автор: | NikB [ Вто Апр 05, 2011 8:47 pm ] | ||||||||||||||||||
| Заглавие: | RQ: AVR GCC (или просто C?) - проблем с променлива в main() | ||||||||||||||||||
В проекта, който пиша с ваша помощ Това е името на един файл, което генерирам веднага след ресет и ползвам през целия цикъл до изключването. а) Ако променливата я дефинирам в секцията преди функцията main() всичко е наред (поне така изглежда б) Ако дефиницията е непосредствено след заглавния ред на функцията - доста бързо стойността на променливата се разрушава. Вероятно има някакъв проблем с стека, но не виждам къде би могъл да бъде ( например - да освобождава повече стек, отколкото заемам ето кратки фрагменти: a) работи:
б) скапва се:
tFileName е декларирано в h файл: typedef char tFileName[20]; |
|||||||||||||||||||
| Автор: | setoy [ Сря Апр 06, 2011 11:31 am ] |
| Заглавие: | |
Не можеш ли да видиш на дебъгера какво става? Сложи watchpoint за write access към FileNameOfData, и би трябвало да спре в момента, когато почва да се пише в нея. |
|
| Автор: | NikB [ Сря Апр 06, 2011 11:39 am ] | |||||||||
| Заглавие: | ||||||||||
- Нямам развойна среда за реалната платка; - В симулатора (Протеус) имам проблем с видимостта на сорса; - В симулатора на AVR Studio (4 и 5) не мога да симулирам SD card; Впрочем, май не съм пробвал - с AVR Studio 4 да задам протеус като среда за дебъг и да сложа watchpoint. (В AVR Studio 5 не мога да добавя Протеус като среда за дебъг). Благодаря ! |
||||||||||
| Автор: | tolstolob [ Сря Апр 06, 2011 1:03 pm ] |
| Заглавие: | |
За static променливи чувал ли си? Ако не, земи прочети, чувам че си имал достатъчно книжки. |
|
| Автор: | michev [ Сря Апр 06, 2011 1:33 pm ] |
| Заглавие: | |
И как дефинирането и като статик ще помогне? Нека даде мейн функцията и тогава да "гадаем". |
|
| Автор: | NikB [ Сря Апр 06, 2011 1:33 pm ] | |||||||||
| Заглавие: | ||||||||||
И на кое да обърна внимание на static променливите? Ако тайно намекваш, че не се разполагат в стека |
||||||||||
| Автор: | NikB [ Сря Апр 06, 2011 1:36 pm ] | |||||||||||
| Заглавие: | ||||||||||||
Много се извинявам, но не ми е ясно коя част от main() е важна Извинявма се и на всички, които няма да харесат структурата на файла!
|
||||||||||||
| Автор: | michev [ Сря Апр 06, 2011 1:41 pm ] |
| Заглавие: | |
Страх ме е да попитам що си дефинирал 1 торба функции във функция мейн... Нормално е локална променлива за функция мейн да не е достъпна от друга функция (въпреки че и тях си напъхал в мейн..). решението е 1 - изкарваш я извън функция - т.е глобална. |
|
| Автор: | setoy [ Сря Апр 06, 2011 3:17 pm ] |
| Заглавие: | |
Аз дори не знаех, че може да се дефинира функция във функция... |
|
| Автор: | NikB [ Сря Апр 06, 2011 4:49 pm ] | |||||||||
| Заглавие: | ||||||||||
Ами в Паскал е общоприет метод. Ако една секция от алгоритъма се ползва няколко пъти в една и съща функциа и никъде другаде - това е начина да е четливо и ефективно. В C# е голям зор |
||||||||||
| Автор: | tolstolob [ Сря Апр 06, 2011 5:52 pm ] |
| Заглавие: | |
Е, не знаех че в мейн е изтръскан целия код, че и вложени функции имало Абе не е добра идея това с вложените функции... Ако се изцепя с нещо такова на работа, ще получа полагане в стил "Любо Ганев" |
|
| Автор: | Nikola Kirov [ Сря Апр 06, 2011 6:25 pm ] |
| Заглавие: | |
Наистина ли този компилатор ти позволява функция във функцията? Странно на всичко което съм писал си вади надлежно съответната грешка при такъв опит. |
|
| Автор: | NikB [ Сря Апр 06, 2011 8:29 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
Не желая да бъда тълкуван погрешно (и пази боже някойд а помисли, че съм груб Вярвам, няма нито един аргумент, че влагането на функции нарушава ефективността в която и да е посока. Това е нещо положително, подобно на инкапсулацията
|
|||||||||||||||||||
| Автор: | relsys [ Сря Апр 06, 2011 8:43 pm ] |
| Заглавие: | |
@NikB: Малко офтопик, ама като си Паскаладжия, защо не си пишеш проекта на Паскал? |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|