Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

PIC18F47j53 и MCP3204

Вт май 08, 2018 09:17:12

Доброго времени суток! Уже сломал голову решая проблему. Суть задачи: К контроллеру подключена микросхема АЦП 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

На сколько разные? Если последние биты прыгают, то тут дело в схемотехнике...
Ответить