Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не обновляется переменная в TMS320F28335.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Jenya7
Проблема такая
Код
gun_trigger = RD_EXT_FPGA(0x356);

if(gun_trigger == 1)
    gun_fire = 1;
else
    gun_fire = 0;


в gun_trigger считывается значение кнопки. В дебагере я вижу как gun_trigger красиво принимает значение кнопки - 1/0. gun_fire - ВСЕГДА НОЛЬ. Если я ставлю точку останова на строчке gun_fire = 1; - все обновляется красиво. обе переменные глобальные.
мне кажеться это какая то специфика данного контроллера. может кто нибудь встречался с подобным?

пожалуй gun_fire иногда выставляется в единицу. иногда функции кнопки отрабатываются.

В коде есть десятки, да нет пожалуй сотни переменных которые, по всей видимости апдейтируются корректно, ну по крайней мере проблемы не вылезли наружу. в данном случае по нажатию на кнопку не всегда отрабатываются функции кнопки поэтому я полез в код и обнаружил такую проблему.
Obam
Эт какая версия ARM? (;
Jenya7
Цитата(Obam @ Mar 21 2017, 12:49) *
Эт какая версия ARM? (;

Они позиционируют его как DSP . Просто нет такого раздела.
Obam
"Прочие" есть.

А конкретно по проблеме: что накомпилялось смотреть и разбираться в коде (окно дизасма).
Jenya7
Цитата(Obam @ Mar 21 2017, 13:47) *
"Прочие" есть.

А конкретно по проблеме: что накомпилялось смотреть и разбираться в коде (окно дизасма).

о чем поет ночная птица окно дизасма?
Код
800         gun_trigger = RD_EXT_FPGA(0x356);
        C$L63:
00aab3:   76E00356    MOVL         XAR7, #0x200356
00aab5:   92C7        MOV          AL, *+XAR7[0]
00aab6:   9610        MOV          @0x10, AL
802         if(gun_trigger == 1)
00aab7:   5201        CMPB         AL, #0x1
00aab8:   ED04        SBF          C$L64, NEQ
803                gun_fire = 1;
00aab9:   56BF010F    MOVB         @0xf, #0x01, UNC
00aabb:   6F02        SB           C$L65, UNC
805             gun_fire = 0;
        C$L64:
00aabc:   2B0F        MOV          @0xf, #0

я не особый знаток асемблера но ничего криминального не вижу.

по моему я нашел проблему. переменная обнуляется где то дальше в коде. осталось найти где.
Obam
"я не особый знаток асемблера…"
Да не ассемблера, а того ядра, котрое пользуете

"… но ничего криминального не вижу."
Чудесно, искренне рад за вас, но цитирую "В дебагере … gun_trigger красиво принимает значение кнопки - 1/0. gun_fire - ВСЕГДА НОЛЬ. Если я ставлю точку останова на строчке gun_fire = 1; - все обновляется красиво. обе переменные глобальные.", а почему вы не ставили точку останова сразу после "if then else" что б уведеть результат?

Ну и "переменная обнуляется где то дальше в коде. осталось найти где." Есть ли смайлик пожимающий плечами и разводящий руками?
Jenya7
Цитата(Obam @ Mar 21 2017, 16:33) *
"я не особый знаток асемблера…"
Да не ассемблера, а того ядра, котрое пользуете

"… но ничего криминального не вижу."
Чудесно, искренне рад за вас, но цитирую "В дебагере … gun_trigger красиво принимает значение кнопки - 1/0. gun_fire - ВСЕГДА НОЛЬ. Если я ставлю точку останова на строчке gun_fire = 1; - все обновляется красиво. обе переменные глобальные.", а почему вы не ставили точку останова сразу после "if then else" что б уведеть результат?

Ну и "переменная обнуляется где то дальше в коде. осталось найти где." Есть ли смайлик пожимающий плечами и разводящий руками?

мистический случай. так и не нашел где переменная убивалась, хотя рыл два дня с еще одним товарищем. переписал всю логику заново и сейчас работает нормально.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.