реклама на сайте
подробности

 
 
> Заблудился в трех соснах, не заполняется массив в RAM
tvilsa
сообщение Jul 15 2011, 04:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Добрый день!
Такая проблема. надо заполнить массив в RAM.
Пишу такой код
CODE
#include <msp430x26x.h>

unsigned int y;
char a[4000];

void main(void)
{

WDTCTL = WDTPW+WDTHOLD; // Stop WDT
for (y=0;y<4000;y++) a[y]=1;

while(1)
{ }
}


зашиваю в контроллер msp430f2618
все работает. массив заполняется.

меняю размер массива
CODE
#include <msp430x26x.h>

unsigned int y;
char a[7000];

void main(void)
{

WDTCTL = WDTPW+WDTHOLD; // Stop WDT
for (y=0;y<7000;y++) a[y]=1;

while(1)
{ }
}

и все перестает работать.
более того при зашивке даже кнопка GO не активна.

Ошибок при компиляции не выдает. В чем может быть дело?
Компилятор IAR EW430 5.10
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
tvilsa
сообщение Jul 15 2011, 05:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Спасибо заработало!
А чем была проблема?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 15 2011, 05:40
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (tvilsa @ Jul 15 2011, 08:36) *
А чем была проблема?
Согласно стандарту языка высокого уровня С, явно не проинициализированные глобальные переменные инициализируются нулем. Это происходит до входа в функцию main(). За время обнуления большого массива собака успевала сработать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
1921
сообщение Jul 15 2011, 07:21
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Цитата(Сергей Борщ @ Jul 15 2011, 09:40) *
Согласно стандарту языка высокого уровня С, явно не проинициализированные глобальные переменные инициализируются нулем. Это происходит до входа в функцию main(). За время обнуления большого массива собака успевала сработать.


ВАХхх, какие интересные вещи узнаёшь! Ведь наступал на это тоже, но так и не понял, в чём дело! А если перед объявлением переменной поставить no init - будет работать?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jul 15 2011, 08:56
Сообщение #5


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(1921 @ Jul 15 2011, 11:21) *
ВАХхх, какие интересные вещи узнаёшь! Ведь наступал на это тоже, но так и не понял, в чём дело! А если перед объявлением переменной поставить no init - будет работать?

Будет. Но отключение собаки в low_level_init все равно правильнее, так как исключает зависимость от количества глобальных объектов, требующих инициализации до main.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th August 2025 - 23:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016