15.05.2013, 12:22
|
|
Временная регистрация
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Не выполняются функции
такой вопросец. Используется компилятор PIC C18, в качестве отладчика - PICKit 2 (оригинальный, если это важно). Так вот, последовательно должны выполняться несколько функций. Когда в этих функциях ставишь контрольные точки - то они выполняются. Когда контрольные точки снимаются - функции не выполняются (перескакиваются, как будто их нет вообще). Возникла мысль, что это могут быть проделки оптимизации кода. Это может быть причиной? Как её отключить? Сходу не нашёл
|
|
|
|
15.05.2013, 17:08
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Pickit2
Сообщение от ‹VenoM›
|
Когда в этих функциях ставишь контрольные точки - то они выполняются. Когда контрольные точки снимаются - функции не выполняются (перескакиваются, как будто их нет вообще).
|
Быть такого не может.
|
|
|
|
15.05.2013, 17:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Pickit2
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
15.05.2013, 18:37
|
|
Временная регистрация
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Pickit2
realid
Цитата:
|
Быть такого не может.
|
Ну вроде не курил, не пил ничего, на трезвую голову смотрел.
ut1wpr
Ну как без захода-то...
Код вот такого плана:
Код:
|
#pragma code high_vector=0x08
void high_vector (void)
{_asm goto obrabotka _endasm}
#pragma code
#pragma interrupt obrabotka
void obrabotka ()
{
void read_counter_1 (void)
{
TMR1L=0;// обнуляем регистры таймера 1
TMR0L=0;
tmr_value=65535;
tmr1_value=tmr_temp;
tmr1_value=tmr1_value*k1_freq;
tmr1_value=tmr1_value/tmr_value;
T0CON=0b10011000;//включить таймер как внутр. таймер
tmr0_clr (); //не выполняется, пока КТ не поставить в ф-ции "void read_counter_1 (void)"
INTCONbits.TMR0IF=0;
}
void tmr0_clr (void)
{
TMR1L=0;//обнулить значение таймера
T1CONbits.TMR1ON=0;//выкл таймер 1
do //очистить TMR0 перед следующим циклом счёта
{
cykle_status=1;
tmr_temp2=TMR0H;
if (tmr_temp2==0)
{break;}
}
while (INTCONbits.TMR0IF==0);
pred_25kHz;
}
} |
|
|
|
|
15.05.2013, 18:44
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Pickit2
Давайте весь минимальный проект где код не выполняется без бряков.
Бряки не влияют на "выполняется или нет", это точки останова. Так же оптимизация влияет на кол-во кода и некоторые фрагменты кода могут быть выброшены или "сжаты", если вы поставите бряк на такой фрагмент, то МПЛАБ выдаст предупреждение, что бряк стоит на "пустом" месте.
|
|
|
|
15.05.2013, 18:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Pickit2
Сообщение от ‹VenoM›
|
Код:
|
void obrabotka ()
{
void read_counter_1 (void)
{
TMR1L=0;// обнуляем регистры таймера 1
...
...
} |
|
Вот с этого места поподробнее. Как это понимать? У меня бы компилятор ругнулся на нарушение баланса скобок. А жена сказала бы - ну кто же внутри функции еще одну объявляет?
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 15.05.2013 в 18:50.
|
|
|
|
15.05.2013, 18:47
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Pickit2
Последний раз редактировалось realid; 15.05.2013 в 19:06.
|
|
|
|
15.05.2013, 18:59
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Pickit2
Сообщение от ‹VenoM›
|
Когда в этих функциях ставишь контрольные точки - то они выполняются. Когда контрольные точки снимаются - функции не выполняются (перескакиваются, как будто их нет вообще).
|
А как вы это определили? Повесьте светодиод и инвертируйте пин в функции, в которую вы якобы не попадаете, и увидите - попадаете или нет.
|
|
|
|
15.05.2013, 19:26
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Pickit2
Сообщение от ut1wpr
|
А жена сказала бы - ну кто же внутри функции еще одну объявляет?
|
Да, так можно и без борща со сметаной остаться, и без вареников.
|
|
|
|
15.05.2013, 19:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Pickit2
Сообщение от nahimovv
|
Да, так можно и без борща со сметаной остаться, и без вареников.
|
Да я просто теряюсь, когда такое вижу. Я не понимаю, надо мной смеются или мне экзамен на тупость устраивают? Даже побаиваюсь вопрос задать.
Все таки похоже на жесть. Разве что не громыхает...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:58.
|
|