Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Я это прекрасно знаю. Такие команды компилятор може запросто заоптимизировать. Если есть такая переменная в долгоживущем алгоритме, то ее обязательно надо объявлять volatile
Отправлено
Elektronik
10 июня 2007 г. 15:11
В ответ на:
В Бордюрии этим значком выклянчивают остаток от деления на. А в Поребрии что - порцию шавермы?
отправлено =AVR= 10 июня 2007 г. 14:25
Составить ответ
|
Вернуться на конференцию
Ответы
Заменил if((i%0x80)==0) на if((i&0x7F)==0) (что должно быть то же самое), тоже не работает
—
mayn
(10.06.2007 16:02:10
87.245.133.8
,
пустое
)
Да и много почему еще может заоптимизировать, например если внешний цикл короче условия. Да и менять может где-то еще эта i. Так что я думаю здесь не глюк компилятора, а банальный глюк программиста, который всего текста программы не привел.
—
Elektronik
(10.06.2007 15:14:17
89.110.10.45
,
пустое
)
Это и есть вся программа. Урезал, чтобы понять почему не работает. !!Что самое интересное, щас кое-что закомментарил, загрузил, снял комментарии, снова откомпилил, снова загрузил: ЗАРАБОТАЛО !?! Это компилятор, по-моему, глючит. Поскольку у меня Keil ARM не было, я скачал с keil.com последнюю версию. Может она и глючная...
—
mayn
(10.06.2007 15:27:17
87.245.133.8
,
пустое
)
нет. не верю. Проверяй стек и подобные вещи. А лучше пример готовый правь
—
DASM
(10.06.2007 15:28:21
212.58.192.14
,
пустое
)
А, нет, пардон. Это у меня с 0х1000 заработало, а с 0х80 так и не работает. Не буду катить на Keil. Единственное, он может чуть переоптимизировал :), буду разбираться с машинными командами. А насчет примера - полезный совет, я так частенько и делаю, только такие вот мелочи, как эта, все равно будут всплывать в своей, довольно большой, программе
—
mayn
(10.06.2007 15:34:50
87.245.133.8
,
пустое
)
пришли - выложи проект куда-нить, гляну 20 мин есть
—
DASM
(10.06.2007 15:36:7
212.58.192.14
,
пустое
)
Щас выложу. Смотри на ящике mayn_svalka@mail.ru с паролем qwerty в черновиках
—
mayn
(10.06.2007 15:48:18
87.245.133.8
,
пустое
)
в строке SVC_Stack_Size EQU 0x00000008 поставь 0x800 например вместо 8 =))
—
DASM
(10.06.2007 15:54:15
212.58.192.14
,
пустое
)
Да уж, что-то маленький у меня был размер стека:) Только пока все равно не работает еще
—
mayn
(10.06.2007 15:58:27
87.245.133.8
,
пустое
)
поставь в опциях проекта галкку Use memory layout from dialog - у тебя сейчас стартап вообще игнорируется
—
DASM
(10.06.2007 16:06:18
212.58.192.14
,
пустое
)
Точно! Все заработало. Правильно я понимаю, что startup - это код в младших адресах, в котором выполняется загрузка, а у меня был тот, который был еще при покупке платы?
—
mayn
(10.06.2007 16:17:37
87.245.133.8
,
пустое
)
тот который был ты уже давно стер. А при загрузке там по одному из векторов прошивалка ставит контрольную сумму, в итоге нужный код портится. Иногда может и работать, если после кучи абортов таки попадет на нужный адрес
—
DASM
(10.06.2007 16:20:8
212.58.192.14
,
пустое
)
Пока я это только приблизительно понял, потом обязательно разберусь. СПАСИБО ОГРОМНОЕ за реальную помощь! :)
—
mayn
(10.06.2007 16:23:20
87.245.133.8
,
пустое
)
Или во входящих
—
mayn
(10.06.2007 15:49:50
87.245.133.8
,
пустое
)
эта переменная входит в управление циклом с переменными IO - они и так volatile. Компилятор такое оптимизировать не будет
—
DASM
(10.06.2007 15:13:59
212.58.192.14
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru