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

 
 
 
Reply to this topicStart new topic
> Не обновляется переменная в TMS320F28335.
Jenya7
сообщение Mar 21 2017, 06:50
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Проблема такая
Код
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 иногда выставляется в единицу. иногда функции кнопки отрабатываются.

В коде есть десятки, да нет пожалуй сотни переменных которые, по всей видимости апдейтируются корректно, ну по крайней мере проблемы не вылезли наружу. в данном случае по нажатию на кнопку не всегда отрабатываются функции кнопки поэтому я полез в код и обнаружил такую проблему.

Сообщение отредактировал Jenya7 - Mar 21 2017, 08:10
Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 21 2017, 07:49
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Эт какая версия ARM? (;


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 21 2017, 07:57
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Obam @ Mar 21 2017, 12:49) *
Эт какая версия ARM? (;

Они позиционируют его как DSP . Просто нет такого раздела.
Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 21 2017, 08:47
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



"Прочие" есть.

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


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 21 2017, 09:28
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(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

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

по моему я нашел проблему. переменная обнуляется где то дальше в коде. осталось найти где.

Сообщение отредактировал Jenya7 - Mar 21 2017, 10:44
Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 21 2017, 11:33
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



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

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

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

Сообщение отредактировал Obam - Mar 21 2017, 11:34


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 21 2017, 14:31
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Obam @ Mar 21 2017, 16:33) *
"я не особый знаток асемблера…"
Да не ассемблера, а того ядра, котрое пользуете

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

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

мистический случай. так и не нашел где переменная убивалась, хотя рыл два дня с еще одним товарищем. переписал всю логику заново и сейчас работает нормально.
Go to the top of the page
 
+Quote Post

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

 


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


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