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

 
 
 
Reply to this topicStart new topic
> АЦП LPC2148, Помощь в настройке АЦП LPC2148
Max-sceince
сообщение Feb 13 2009, 17:33
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 1-01-09
Пользователь №: 42 870



Здравствуйте уважаемые форумчане! Помогите пожалуйста настроить АЦП 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;
}
}


Вообщем в эмуляции работает, заливаеш в МК не работает. С чем связано? Помогите пожалуйста никак не могу разобраться!!!
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 13 2009, 18:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А где включение PLL? Или чего я не понимаю... А модуль ускорения памяти нужен? А PINSEL0 и PINSEL1 конфигурировать выводы?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Max-sceince
сообщение Feb 13 2009, 19:09
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 1-01-09
Пользователь №: 42 870



IODIR0 =0x0C00; //set p.10 and p.11 outputs
регистром IODIR0 =0x0C00 устанавливаю p.10 and p.11 как выходы. К ним подключены светодиоды, на остальные подаются "0", следовательно они являются входами.
Использую для отладки и создания hex файла для заливки на МК Keil, в нем в настройках указываю PLL и MAM. И как я понимаю они PLL и МАМ прописывает в startup. Или нужно их в программе основной прописывать?
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 14 2009, 06:00
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А входы АЦП?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Max-sceince
сообщение Feb 14 2009, 07:11
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 1-01-09
Пользователь №: 42 870



С помощью вот этого регистра
ADCR = 0x00210708; // Setup A/D: 10-bit AIN0 @ 3MHz
устанавливаем битность АЦП и вход АЦП с которого считываем сигнал!!!
Go to the top of the page
 
+Quote Post
Max-sceince
сообщение Mar 7 2009, 19:14
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 1-01-09
Пользователь №: 42 870



Вообщем нашел в чем ошибка. Пишу для тех кто будет использовать АЦП LPC2148.
Перед тем как настроить GPIO, необходимо настроить регистр PINSEL1 или PINSEL0,
(вот их как раз не настроил и долго промучился )в зависимости от того какой канал АЦП
используете. Затем настраиваем регистр IODIP,настраиваем PLL, настраиваем ADCR.
Все можно работать с АЦП. Удачи!!!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 05:38
Рейтинг@Mail.ru


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