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

 
 
> LPC1758 ADC зависает
kt368
сообщение May 29 2014, 16:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Здравствуйте!
Пробую измерять напряжение с помощью встроенного АЦП в бесконечном цикле с помощью следующего кода:
Код
    while(1)
    {
        LPC_ADC -> ADCR |= (0x1)<<24;
        while((LPC_ADC->ADDR2 & (1 << 31)) == 0);
        temp = LPC_ADC -> ADDR2 & 0xfff0;
        LPC_ADC -> ADCR &= ~((0x1)<<24);
    }
В итоге, после нескольких секунд программа зависает на ожидании окончания измерения (2-я строчка, while((LPC_ADC->ADDR2 & (1 << 31)) == 0)wink.gif. Все прерывания запрещены. Тактовая PCLK_ADC0 83.33 МГц, тактовая АЦП 83/16=5.208 МГц. Отлаживаю с помощью клона J-link.

Вот дизассемблерный листинг участка кода ожидания окончания измерения:
Код
    63:                 temp = LPC_ADC -> ADDR2 & 0xfff0;
0x00002544 4807      LDR      r0,[pc,#28] ; @0x00002564
0x00002546 6980      LDR      r0,[r0,#0x18]
0x00002548 F64F71F0  MOVW     r1,#0xFFF0
0x0000254C 4008      ANDS     r0,r0,r1
0x0000254E 9001      STR      r0,[sp,#0x04]
    64:                 LPC_ADC -> ADCR &= ~((0x1)<<24);

В чем может быть причина зависания?
Go to the top of the page
 
+Quote Post



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

 


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


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