Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП LPC2148
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Max-sceince
Здравствуйте уважаемые форумчане! Помогите пожалуйста настроить АЦП LPC2148.
Вообщем использую отладочную плату OLIMEX с МК LPC2148. На этой плате есть
переменное сопротивление и два светодиода. Суть что я хочу: изменяю сопротивление на плате
=> меняется напряряжение на определенной ноге МК, переводим его в цифру сравниваем,
с тем напряжением которое заданно в программе, если это напряение больше заданного зажигаем светодиод.
Если меньше тушим.
Кусок программы:
CODE
#include <lpc21xx.h>

int val = 0;
int t = 1;
int main(void)
{
VPBDIV = 0x02; //Set the Pclk to 30 Mhz
IODIR0 =0x0C00; //set p.10 and p.11 outputs
IO0SET =0x0C00;
ADCR = 0x00210708; // Setup A/D: 10-bit AIN0 @ 3MHz
IO0SET =0x400;
ADCR |= 0x01000000; // Start A/D Conversion
b:
val = ADDR; // Read A/D Data Register
while(1)
{
while ((val&0x80000000)==0) ;
t= val&0xFFC0; // здесь накладывается маска на результат
if (t>=0x026C) // проверяется результат, если напряжение больше 1 Вольта (0x026C), то LED зажигает
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500
IO0CLR =0x400;
t=0;
}
else // если меньше тушит
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500 msec
IO0SET =0x400;
t=0;

}
goto b;
}
}


Вообщем в эмуляции работает, заливаеш в МК не работает. С чем связано? Помогите пожалуйста никак не могу разобраться!!!
smk
А где включение PLL? Или чего я не понимаю... А модуль ускорения памяти нужен? А PINSEL0 и PINSEL1 конфигурировать выводы?
Max-sceince
IODIR0 =0x0C00; //set p.10 and p.11 outputs
регистром IODIR0 =0x0C00 устанавливаю p.10 and p.11 как выходы. К ним подключены светодиоды, на остальные подаются "0", следовательно они являются входами.
Использую для отладки и создания hex файла для заливки на МК Keil, в нем в настройках указываю PLL и MAM. И как я понимаю они PLL и МАМ прописывает в startup. Или нужно их в программе основной прописывать?
smk
А входы АЦП?
Max-sceince
С помощью вот этого регистра
ADCR = 0x00210708; // Setup A/D: 10-bit AIN0 @ 3MHz
устанавливаем битность АЦП и вход АЦП с которого считываем сигнал!!!
Max-sceince
Вообщем нашел в чем ошибка. Пишу для тех кто будет использовать АЦП LPC2148.
Перед тем как настроить GPIO, необходимо настроить регистр PINSEL1 или PINSEL0,
(вот их как раз не настроил и долго промучился )в зависимости от того какой канал АЦП
используете. Затем настраиваем регистр IODIP,настраиваем PLL, настраиваем ADCR.
Все можно работать с АЦП. Удачи!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.