roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 18:36

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Включение DAC в LPC2148
СообщениеДобавлено: 08 июн 2013, 23:39 
Не в сети

Зарегистрирован: 08 июн 2013, 23:27
Сообщения: 1
Добрый вечер. Помогите найти ошибку в коде.

Код:
#include <lpc21xx.h>

#define STARTCAPTURE 0x07000000
#define STOPCAPTURE    0xF8FFFFF0
#define CHANNEL          0x00000008

void delay(int time){
   int i = 0, j = 0;
   for (i = 0 ; i < time; i++)
      for(j = 0; j < i; j++);
}

int getValue(){
   //Останавливаем АЦП
   ADCR &= STOPCAPTURE;
   ADCR |= CHANNEL;
   //Запускаем АЦП
   ADCR |= (1<<24);
   //Ожидаем сигнала готовности (думаю ошибка где-то здесь)
   while(!(ADDR & 0x80000000));
   return ((ADDR & 0x0000FFC0) >> 6);
}



void indicate(int value){
   if(value < 250){
      IO0SET |= 0x0FFFFFFF;
      IO0CLR |= 0x00000001;
   }
   else
      if(value < 500){
         IO0SET |= 0x0FFFFFFF;
         IO0CLR |= 0x00000002;
      }
      else
         if(value < 750){
            IO0SET |= 0x0FFFFFFF;
            IO0CLR |= 0x00000004;
         }
         else
            if(value < 1000){
               IO0SET |= 0x0FFFFFFF;
               IO0CLR |= 0x00000008;
            }
            else
            {
               IO0SET |= 0x0FFFFFFF;
               IO0CLR |= 0x00000010;
            }
}

int main(){
      int res = 0;
      IO0SET |= 0x0FFFFFFF;
      IO0DIR |= 0x0FFFFFFF;
      //Отключаем все лишнее
      PCONP |= (1 << 12);
      //Задаем альтернативную функцию AD0.3 (PIN30)
      PINSEL1 |= (1<<28);
      //10-bit точности, 12.0MHz / 3, Канал 3
      ADCR |= 0x00200208;
      
      while(1){
      res = getValue();
                //В зависимости от того, в каком диапазоне полученное значение, включаем соответствующий светодиод.
      indicate(res);
      delay (1000);     
   }
}

Если в дебагере ручками задавать значение и выставлять флаг готовности, то работает. При эмуляции в протеусе - нет.
Прошу помочь!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO