Jump to content

Search the Community

Showing results for tags 'массив передача'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
    • Competition 2019
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube
  • Радиолюбительская доска объявлений exDIY's Надежность и группы продавцов

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 1 result

  1. Здравствуйте. Имею следующую задачу. На мк pic18f4550 сформировать массив данных с АЦП, отфильтровать его и отправить на мк. Но мне немножко непонятен сам процесс. Ниже привел фрагмент кода(также он полностью прикреплен в архиве) WORD_VAL ReadPOT(void) { WORD_VAL w; w.Val = 0; ADCON0bits.GO = 1; // начинаем АЦП while(ADCON0bits.GO); // ждем, пока не закончилось w.v[0] = ADRESL; // записываем в переменные w.v[1] = ADRESH; //---Здесь начинается формирование массива данных для фильтрования---// using namespace std; double massiv1[]; for (i = 1; i <= 1000; i++);// задаем начальное значение 1 и конечное значение 1000 с шагом 1 { massiv1[i]= (w.v[1] << 8) + w.v[0]; } //---Здесь заканчивается формирование массива данных для фильтрования---// //---Фильтр---// int i,j,z,k1,k2,hw,n,window; double tmp,input,output; if(fmod(window,2)==0) window++; hw=(window-1)/2; output[0]=massiv1[0]; for (i=1;i<n;i++){ tmp=0; if(i<hw){ k1=0; k2=2*i; z=k2+1; } else if((i+hw)>(n-1)){ k1=i-n+i+1; k2=n-1; z=k2-k1+1; } else{ k1=i-hw; k2=i+hw; z=window; } for (j=k1;j<=k2;j++){ tmp=tmp+massiv1[j]; } output[i]=tmp/z; } //---end фильтр---// w = output[]; return w; }//end ReadPOT После фильтра уже нет старшего и младшего байта,непонятно,как сделать обратное преобразование,поскольку по USB передача идет именно так. Нужно ли вообще это преобразование? И как передаются данные на мк, можно ли отправить весь отфильтрованный массив? void ProcessIO(void) { // если еще не настроено или в режиме сна, то не делать ничего if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return; //Проверить, если мы получили исходящий пакет if(!HIDRxHandleBusy(USBOutHandle)) { //Мы только что получили исходящий пакет. Проверим первый байт, чтобы понять что за команда switch(ReceivedDataBuffer[0]) { case 0x80: //вкл/выкл светодиод mLED_1_Toggle(); break; case 0x81: //проверить статус переключателя sw // проверяем, свободен ли буфер записи, перед тем, как записать туда if(!HIDTxHandleBusy(USBInHandle)) { ToSendDataBuffer[0] = 0x81; //создаем сообщение с информацией о переключателе sw if(sw3 == 1) { ToSendDataBuffer[1] = 0x01; } else { ToSendDataBuffer[1] = 0x00; } //готовим USB модуль для отправки данных хосту USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); } break; case 0x37: //проверить напряжение на АЦП { WORD_VAL w; // проверяем, свободен ли буфер записи, перед тем, как записать туда if(!HIDTxHandleBusy(USBInHandle)) { w = ReadPOT(); //считываем напряжение. функция определена ниже. ToSendDataBuffer[0] = 0x37; //делаем сообщение - напряжение на АЦП ToSendDataBuffer[1] = w.v[0]; //Передаем младший байт ToSendDataBuffer[2] = w.v[1]; //старший байт //готовим USB модуль для отправки данных хосту USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); } } break; } //готовим выходную конечную точку, чтобы хост смог отправить нам еще пакет ифнормации USBOutHandle = HIDRxPacket(HID_EP, (BYTE*)&ReceivedDataBuffer, 64); } }//end ProcessIO main.rar
×
×
  • Create New...