Отговори на тема  [ 8 мнения ] 
dspic33 проблем :-) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение dspic33 проблем :-)
Компилатора е C30 - v3.31, а контролера dsPIC33FJ256MC710

syscou = 65535-500;
if(i) {while(syscou) continue;}

"syscou" е unsigned int, а "i" е signed int
syscou се увеличава на всеки 10мс в прекъсване от таймер. (syscou++;)
Т.е. ако е изпълнено условието, ще има 5 секунди изчакване.
Да, ама не!? Поне не и както е написано по-горе. Според контролера, syscou винаги е различен от 0 !?
Като го напиша така:

if(i) {while(syscou) printf("%d", syscou);}

заработва.


Сря Юни 27, 2012 12:01 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: dspic33 проблем :-)
Може компилатора да е оптимизирал мааалко в повече от колкото ти е нужно. Погледни асеблерския листинг дали всичко което си написал е там.
Като за проба - бих сложил един НОП - asm("nop"); в цикъла.
Код:
if (i) {
  while(syscou) {
    asm("nop");
  }
}


Сря Юни 27, 2012 12:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: dspic33 проблем :-)
Gogo написа:
"syscou" е unsigned int
syscou се увеличава на всеки 10мс в прекъсване от таймер. (syscou++;)

Освен, че е unsigned int, летлива ли е?

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Юни 27, 2012 12:49 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 06, 2005 2:06 pm
Мнения: 194
Местоположение: Sofia
Мнение Re: dspic33 проблем :-)
А има ли?

volatile syscou

PS писали сме едновременно.


Сря Юни 27, 2012 12:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: dspic33 проблем :-)
volatile... тая думичка трябва да ви винаги в главата като пишете ембедед код.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Сря Юни 27, 2012 12:59 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Re: dspic33 проблем :-)
Да... с volatile се оправиха нещата.


Сря Юни 27, 2012 1:45 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: dspic33 проблем :-)
Gogo написа:
Да... с volatile се оправиха нещата.

Ако обаче е дефинирана като volatile в един файл, а в друг я използваш дефинирана само като extern, то мисля, че пак ще се спече.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Чет Юли 05, 2012 3:31 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Re: dspic33 проблем :-)
Дефинирана е:
Код:
volatile unsigned int   syscou;

В другия, който е видим от всички, е:
Код:
extern volatile unsigned int   syscou;


Чет Юли 05, 2012 8:14 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни