Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вот как у меня не работает отладочный пример на Линуксе >>

Отправлено VasilyS 13 июля 2008 г. 14:38
В ответ на: s_timer только для "удлиннения" таймера и должна переполняться - это её нормальный режим отправлено Vit 13 июля 2008 г. 13:12


Очень дорогая игра.Компиляторозависимая игра.

unsigned short s_time, duration; //sizeof(ushort)=2, проверил
void Increm( void) // dummy IRQ
{
s_time++;
}
int main()
{
unsigned short start;
unsigned short i=0, sub; // debug
s_time = 0xfffa; // begin
duration = 0x30; // limit
start = s_time;
for(;;)
{
Increm(); // dummy interrupt :)
i++; // debug counter
sub = s_time - start; // разность в явном виде.

// Отладочный вывод
printf("%02x s_time = 0x%04x sub=0x%04x s_time-start=0x%04x \n", i,s_time, sub,s_time-start);

// Проверки на выход
if( (s_time-start) > duration)
{
printf("s_time - start!!!\n"); //не выходит!
break;
}
if( sub>duration)
{
printf("sub!!!\n");
break; // выходит!!
}
if( i>100)
{
printf("iiiiii!!!\n"); // аварийный выход
break;
}
}

И вот что получил

01 s_time = 0xfffb sub=0x0001 s_time-start=0x0001
02 s_time = 0xfffc sub=0x0002 s_time-start=0x0002
03 s_time = 0xfffd sub=0x0003 s_time-start=0x0003
04 s_time = 0xfffe sub=0x0004 s_time-start=0x0004
05 s_time = 0xffff sub=0x0005 s_time-start=0x0005
06 s_time = 0x0000 sub=0x0006 s_time-start=0xffff0006
07 s_time = 0x0001 sub=0x0007 s_time-start=0xffff0007
08 s_time = 0x0002 sub=0x0008 s_time-start=0xffff0008
09 s_time = 0x0003 sub=0x0009 s_time-start=0xffff0009
0a s_time = 0x0004 sub=0x000a s_time-start=0xffff000a
0b s_time = 0x0005 sub=0x000b s_time-start=0xffff000b
0c s_time = 0x0006 sub=0x000c s_time-start=0xffff000c
0d s_time = 0x0007 sub=0x000d s_time-start=0xffff000d
0e s_time = 0x0008 sub=0x000e s_time-start=0xffff000e
0f s_time = 0x0009 sub=0x000f s_time-start=0xffff000f
10 s_time = 0x000a sub=0x0010 s_time-start=0xffff0010
11 s_time = 0x000b sub=0x0011 s_time-start=0xffff0011
12 s_time = 0x000c sub=0x0012 s_time-start=0xffff0012
13 s_time = 0x000d sub=0x0013 s_time-start=0xffff0013
14 s_time = 0x000e sub=0x0014 s_time-start=0xffff0014
15 s_time = 0x000f sub=0x0015 s_time-start=0xffff0015
16 s_time = 0x0010 sub=0x0016 s_time-start=0xffff0016
17 s_time = 0x0011 sub=0x0017 s_time-start=0xffff0017
18 s_time = 0x0012 sub=0x0018 s_time-start=0xffff0018
19 s_time = 0x0013 sub=0x0019 s_time-start=0xffff0019
1a s_time = 0x0014 sub=0x001a s_time-start=0xffff001a
1b s_time = 0x0015 sub=0x001b s_time-start=0xffff001b
1c s_time = 0x0016 sub=0x001c s_time-start=0xffff001c
1d s_time = 0x0017 sub=0x001d s_time-start=0xffff001d
1e s_time = 0x0018 sub=0x001e s_time-start=0xffff001e
1f s_time = 0x0019 sub=0x001f s_time-start=0xffff001f
20 s_time = 0x001a sub=0x0020 s_time-start=0xffff0020
21 s_time = 0x001b sub=0x0021 s_time-start=0xffff0021
22 s_time = 0x001c sub=0x0022 s_time-start=0xffff0022
23 s_time = 0x001d sub=0x0023 s_time-start=0xffff0023
24 s_time = 0x001e sub=0x0024 s_time-start=0xffff0024
25 s_time = 0x001f sub=0x0025 s_time-start=0xffff0025
26 s_time = 0x0020 sub=0x0026 s_time-start=0xffff0026
27 s_time = 0x0021 sub=0x0027 s_time-start=0xffff0027
28 s_time = 0x0022 sub=0x0028 s_time-start=0xffff0028
29 s_time = 0x0023 sub=0x0029 s_time-start=0xffff0029
2a s_time = 0x0024 sub=0x002a s_time-start=0xffff002a
2b s_time = 0x0025 sub=0x002b s_time-start=0xffff002b
2c s_time = 0x0026 sub=0x002c s_time-start=0xffff002c
2d s_time = 0x0027 sub=0x002d s_time-start=0xffff002d
2e s_time = 0x0028 sub=0x002e s_time-start=0xffff002e
2f s_time = 0x0029 sub=0x002f s_time-start=0xffff002f
30 s_time = 0x002a sub=0x0030 s_time-start=0xffff0030
31 s_time = 0x002b sub=0x0031 s_time-start=0xffff0031
sub!!!

return 0;
}
Выходит из цикла только после явного присоения. А вычисление в if пропускает. Резюме: опасная игра.




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 3 в два раза:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru