Например TDA7294

Форум РадиоКот • Просмотр темы - PIC18F47j53 и MCP3204
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 17:04:18

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC18F47j53 и MCP3204
СообщениеДобавлено: Вт май 08, 2018 09:17:12 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Доброго времени суток! Уже сломал голову решая проблему. Суть задачи: К контроллеру подключена микросхема АЦП MCP3204 по SPI. Примерно раз в 4 с считываю значение трех каналов АЦП и передаю через USB на компьютер. На компьютере эти значения используются для дальнейшей математической обработки. Проблема в том, что когда с компьютера посылаю команду считать АЦП мне каждый раз приходят разные значение, даже если считываю чаще чем происходит опрос MCP3204. Может кто знает в чем может быть проблема?

Функция считывает значение каналов АЦП
Код:
unsigned int getADC(unsigned short channel)
{
 // Returns 0..4095
  unsigned int tmp;
  Chip_Select = 0;                      // Select MCP3204
  SPI1_Write(0x06);                     // SPI communication using 8-bit segments
  channel = channel << 6;               // Bits 7 & 6 define ADC input
  tmp = SPI1_Read(channel) & 0x0F;
  tmp = tmp << 8;                       // Get ADC value
  tmp |= SPI1_Read(0);
  Chip_Select = 1;
  return tmp;
}


Этот код выполняется раз в 4 с. Проверяем переполнение канала и разделяем на байты для отправки на компьютер.
Код:
if (Cs >= 4090)
          {
              ChanelCDiod = 1;
          }
          else
          {
              ChanelCDiod = 0;
          }
          AdcChanel = getADC(2);
          Cs = AdcChanel;
          Ch = Cs;
          Cl = Cs >> 4;


Здесь собираем посылку для отправки в порт USB.
Код:
 if (ChanelCDiod == 1)
                    {
                        writebuff[21] = 1;
                    }
                    else
                    {
                       writebuff[21] = 2;
                    }

                   writebuff[5] = Ch;
                   writebuff[6] = Cl;


Пробовал Cs присваивать константу, на компьютер приходит все правильно, ничего не изменяется. Всем заранее спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 и MCP3204
СообщениеДобавлено: Ср май 09, 2018 08:58:50 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
На сколько разные? Если последние биты прыгают, то тут дело в схемотехнике...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y