Перейти к содержанию

Bugrim

Members
  • Постов

    235
  • Зарегистрирован

  • Посещение

Информация о Bugrim

  • День рождения 28.09.1980

Информация

  • Пол
    Мужчина
  • Город
    г. Запорожье, Украина

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    Микроконтроллеры Microchip
  • Оборудование
    Паяльная станция - Yihua 936, Программаторы - PicKit2, PicKit4

Посетители профиля

6 724 просмотра профиля

Достижения Bugrim

Экспериментатор

Экспериментатор (5/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме

Последние значки

3

Репутация

  1. Спасибо всем. Применил схему с емкостным делителем, работает.
  2. а дальше? Мне известные DC DC микросхемы до 40В на входе (а здесь 51).
  3. Доброго времени суток. Есть, на первый взгляд, простая задача, однако меня ставит в затруднительное положение. Есть напряжение 36АС, необходимо получить 5DC 0,3А. Классика (диодный мост и кренка) не подходят. Для кренки входное напряжение будет высоким, да и рассеиваемая мощность будет велика. По габаритам хочется компактности. Миниатюрный трансформатор, с моей точки зрения, 36В на 7В было бы идеально, но не знаю где взять небольшое железо под него. Может кто другой вариант предложит, буду признателен.
  4. Доброго времени суток. Подскажите, просто бесит разбивать выражения, чем отличается запись: *slovo1=(*(data+temp)>>4+0x30); от *slovo1=*(data+temp)>>4; *slovo1+=0x30; С моей точки зрения обе записи эквивалентны, однако желаемый результат дает второе. Может я что то не понимаю. Использую MPLABX v5.3, XC8 v1.33, PIC18F67K22.
  5. Bugrim

    MicroC (Pro)

    Убедили. Это потому что я не опытный или этот совет всем полезен?
  6. Bugrim

    MicroC (Pro)

    Согласен. Однако, почему то по душе иметь одну функцию с "расширенными" параметрами, нежели две функции.
  7. Bugrim

    MicroC (Pro)

    Места жалко. А для функций можно написать подсказки, что бы высвечивались при записи аргументов (за что этот аргумент отвечает и какие значения может принимать). Или описание функций в комментариях самой функции писать?
  8. Bugrim

    MicroC (Pro)

    не знаю правильно ли, но работает другой вариант: void myGreatFunction(char par1, char *par2, char par3) { myVeryImportantVariable = par2; if (par1 =6) {myVeryImportantVariable = (char)&(*par2)}; ....... } void myGreatFunction(6, 0x72, 2); это больше мне нравиться
  9. Bugrim

    MicroC (Pro)

    Понял, не так представлял, но как выход. Спасибо.
  10. Bugrim

    MicroC (Pro)

    пример можно?
  11. Bugrim

    MicroC (Pro)

    Доброго времени суток. Прошу подсказать как в си в функцию, аргумент которой указатель передать число без сторонней переменной. То есть: Есть функция вывода данных/команд на ЖКИ: void LSD_zapis(unsigned char F_LSD_data_comand,unsigned char *F_LSD_data, unsigned char F_LCD_kol_polubayt); где: F_LSD_data_comand- выбор передачи команды или данных; *F_LSD_data - указатель на массив данных; F_LCD_kol_polubayt - длина массива в полубайтах. при выводе массива данных проблем не возникает так как данные расположены в массиве, а вот при выдаче команды часто приходится выдавать просто один байт, сейчас это делаю так: temp_data=0x73; LSD_zapis(1,temp_data,2); Но хочется без temp_data , указывать число 0х73 как аргумент, то есть так: LSD_zapis(1,0x73,2); Как возможно это сделать? Использую компилятор XC8. Да я понимаю что тема не для этого компилятора, но принцип, я думаю, должен быть одинаков. За ранее спасибо.
  12. Разобрался. Регистр ANSELH не был настроен. При запуске устанавливался в единицы (аналоговые входы). При правильной настройке, правильно и макетка (до этого не совсем корректно) и протеус заработал. Всем спасибо.
  13. Доброго времени суток. Подскажите что делаю не так. Необходимо настроить внешнее прерывание на RB0. Proteus на изменение RB0 совсем не реагирует. Решил промоделировать в живую на макетке. Прерывание срабатывает однако флаг прерывания не сбрасывается (наблюдаю в пошаговом выполнении). Камень PIC16f886, программатор/отладчик PicKit4, среда разработки MPLABX IDE v5.3, proteus 8.4 SP0. void main(void) { nastroyka(); F_bili_izmeneniya=1; while (1) { // ekran(); ADC_start(); ADC_read(); __delay_ms(50); __nop; } } void nastroyka(void){ //******Настройка прерываний******** //******GIE=1 PEIE=1 T0IE=0 INTE=0 //******RBIE=1 T0IF=0 INTF=0 RBIF=0 INTCON=0b11001000; IOCB=0xff; BCLIE=1; //ULPWUIE=1; // ANS12=1; //*******Настройка порта A TRISA0=1; //вход ***Вход АЦП TRISA2=1; //вход **Вход Uref- //*******Настройка порта B TRISB0=1; //***********Настройка АЦП*********** // Настройка времени обрабатки АЦП = 32*Tosc ANS0=1; ANS2=1; ADCS0=0; ADCS1=1; ADFM=1; //Правое выравнивание результата //*****Подключение канала 0 CHS0=0; CHS1=0; CHS2=0; CHS3=0; //****Подтяжка Vref+ к внутренниму + VCFG0=0; //**** Vref- к внешниму источнику (AN2)) VCFG1=1; //Включить АЦП ADON=1; //***********Настройка PORTC*********** TRISC=0x18;////RC3 and RC4 Input (SDC and SDA) TRISC5=1; //вход кнопки //***********I2C*********** SSPADD=0X09; SSPSTAT=0X80; SSPCON=0X38; } void interrupt interr(void){ volatile char temp; if(RBIF){ temp=PORTB; RBIF=0; } } Почему флаг прерывания не сбрасывается? Что делаю не так? Подскажите протеус адекватный к внешним прерываниям.
  14. ПИД регулятор. Контроль температуры. Хочется: 1 частота опроса 25 Гц для каждого канала. 2 каналов - 3 3 датчик температуры - термопара К типа - 3 шт. 4 динамическая индикация 5 разрядов. 5 органы управления - 4 кнопки. В первом приближении так. В вычислениях предполагаю использовать такой формат. 16 бит: 5 разрядов - дробная часть, 10 - целая, 1 знаковый. Расчет примерно так ( ещё обдумываю): U = K * ( Err + (1/Ti)*Int + Td*dErr ) Eo = E; Нам нужна прошла ошибка. Ошибки — по 16бит E = Y-X; Вычисляем новое рассогласование. 16bit Int = Int + (E+Eo)/2; Интегрируем ошибку. При этом считаем полусумму разности (разностная схема). 32bit = 32bit + 16bit cI = Int * (1/Ti); Считаем интегральный вклад — 32bit * 32bit => 32bit cD = Td * (E-Eo); Считаем диф вклад — 16*16 => 32bit PID = E + cI + cD; Подскобочное; 16+32+32 => 32bit U = K*PID/256; Коэфф; 32*16/8 bit => 40bit. Будет ли успевать на частоту 25Гц, или изначально снизить надо. Источник вдохновения - https://m.habr.com/ru/post/145991/
×
×
  • Создать...