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

 
 
> Вопрос к пользователям CW 1.7, бага ?
singlskv
сообщение Dec 26 2008, 17:36
Сообщение #1


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Скачал последний CrossWorks v1.7b15

вот такой текст:
Код
unsigned int Adc[4], adcSum, indexAdc;

static void AdcISR(void) __attribute__ ((interrupt ("IRQ")));
static void AdcISR(void)
{
  unsigned int tmp;
  unsigned int adc;

  tmp = AD0GDR; // считали показания АЦП
  adc = (tmp >> 6) & 0x03FF; // только результат преобразования
  adcSum -= Adc[indexAdc]; // вычитаем самый старый семпл
  Adc[indexAdc] = adc;  // сохранили последнее
  adcSum += adc; // обновили скользящее среднее

  if (++indexAdc >= 4) indexAdc = 0;

  IO0PIN = (adcSum >> 2) & 0x03FF; // вывели в порт скользящее среднее
  if (tmp & 0x01000000) IO0SET = 0x0400; // диагностика

  VICVectAddr = 0;
}

дает багу(варнинг) при компиляции на любых уровнях оптимизации кроме "none".
ругаетца так:
Compiling main.c — 1 error
D:/Work/LpcAdc/ARM Flash Release/\s3nk.7: Assembler messages:
Warning: writeback of base register is UNPREDICTABLE

после этого прога нормально не работает конечно,
никакие танцы с бубном не помагают,
может кто-нить проверить такое поведение ?

вот результат компиляции:
Код
000002c0 <AdcISR>:
2c0:    e24ee004     sub    lr, lr, #4; 0x4
2c4:    e92d500f     stmdb    sp!, {r0, r1, r2, r3, ip, lr}
2c8:    e59f0090     ldr    r0, [pc, #144]; 360 <.text+0xa0>
2cc:    e59fc090     ldr    ip, [pc, #144]; 364 <.text+0xa4>
2d0:    e59f3090     ldr    r3, [pc, #144]; 368 <.text+0xa8>
2d4:    e59f1090     ldr    r1, [pc, #144]; 36c <.text+0xac>
2d8:    e593e004     ldr    lr, [r3, #4]
2dc:    e59c3000     ldr    r3, [ip]
2e0:    e5902000     ldr    r2, [r0]
2e4:    e7912102     ldr    r2, [r1, r2, lsl #2]
2e8:    e0623003     rsb    r3, r2, r3
2ec:    e58c3000     str    r3, [ip]
2f0:    e1a0232e     mov    r2, lr, lsr #6
2f4:    e5903000     ldr    r3, [r0]
2f8:    e1a02b02     mov    r2, r2, lsl #22
2fc:    e1a02b22     mov    r2, r2, lsr #22
300:    e7812103     str    r2, [r1, r3, lsl #2]
304:    e59c3000     ldr    r3, [ip]
308:    e0833002     add    r3, r3, r2
30c:    e58c3000     str    r3, [ip]
310:    e5903000     ldr    r3, [r0]
314:    e2833001     add    r3, r3, #1; 0x1
318:    e5803000     str    r3, [r0]
31c:    e5903000     ldr    r3, [r0]
320:    e3530003     cmp    r3, #3; 0x3
324:    83a03000     movhi    r3, #0; 0x0
328:    85803000     strhi    r3, [r0]
32c:    e59c3000     ldr    r3, [ip]
330:    e1a03123     mov    r3, r3, lsr #2
334:    e59f2034     ldr    r2, [pc, #52]; 370 <.text+0xb0>
338:    e1a03b03     mov    r3, r3, lsl #22
33c:    e1a03b23     mov    r3, r3, lsr #22
340:    e31e0401     tst    lr, #16777216; 0x1000000
344:    e5823000     str    r3, [r2]
348:    13a03b01     movne    r3, #1024; 0x400
34c:    15823004     strne    r3, [r2, #4]
350:    e3a02000     mov    r2, #0; 0x0
354:    e3e03000     mvn    r3, #0; 0x0
358:    e5032fcf     str    r2, [r3, #-4047]
35c:    e8fd500f     ldmia    sp!, {r0, r1, r2, r3, ip, lr}^
360:    40000054     andmi    r0, r0, r4, asr r0
364:    4000003c     andmi    r0, r0, ip, lsr r0
368:    e0034000     and    r4, r3, r0
36c:    40000040     andmi    r0, r0, r0, asr #32
370:    e0028000     and    r8, r2, r0


Забыл сказать:
проц LPC2138
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:53
Рейтинг@Mail.ru


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