Jump to content

technik-1017

Members
  • Content Count

    62
  • Joined

  • Last visited

Community Reputation

10 Обычный

About technik-1017

  • Rank
    Осваивающийся

Электроника

  • Стаж в электронике
    Более 20 лет

Recent Profile Visitors

511 profile views
  1. Делал как то несложное устройство на PIC16F628A, контроль работы электропогрузчиков на PIC16F628A (компилятор HI-TECH C PRO for the PIC10/12/16 MCU family V9.60PL2). Сигнал подавался с трансформатора тока через оптрон, индикатор показывал время зарядки электропогрузчика, когда погрузчик был отключён - показывал "- - - -". Исходник во вложении. Может для начала пригодиться. В вашем случае надо сделать две переменные (например t1 и t2), подсчёт времени интервала идёт в переменной t1, индикатор показывает значение из переменной t2, после останова двигателя t2 = t1 и t1 = 0, после включения двигателя t++ (в секундах, например). Есть программа Proteus в ней можно и схему нарисовать и работу программы проверить до реализации в железе 1.zip
  2. можно просто погуглить и почитать, вопрос отпадёт сам собой если решили бороться с помехами, то можно попробовать поставить фильтры: посмотрите подавление синфазных, кондуктивных... помех. Но это мне кажется лишнее нагромождение, когда можно просто питание сбросить. https://www.compel.ru/lib/ne/2013/4/3-sluzhba-podavleniya-pomeh-resheniya-kompanii-sumida https://www.compel.ru/lib/ne/2014/5/6-sinfaznyie-drosseli-kompanii-sumida-dlya-poverhnostnogo-montazha можно ещё подключить особым образом жилы в кабеле для подавления помех, получается фильтр из жил самого кабеля (активное экранирование, журнал Радиохобби 3/2009, стр 26)
  3. личный опыт эксплуатации в течении 18 лет датчиков DS1820, DS18S20, DS18B20
  4. скорее всего это не поможет, т.к. датчики DS18B20 имеют свойство зависать (скорее всего от помех, причём DS18S20 этим не страдали). Необходимо снимать питание с датчика после опроса и подавать перед опросом. Мы ставили для этих целей LP2985-5.0, ну и конечно необходимо корректировать ПО контроллера для управления питанием датчика (LP2985-5.0).
  5. можно номер канала передать в массив, как индекс, а на выходе получить маску канала что то вроде этого const unsigned char mask[] = {0x01,0x02,0x04}; и использование PORTB = 0xFF & mask[kanal];
  6. я для hd44780 сделал так https://ru.files.fm/u/cf4jjthd#/list/ если подойдёт, то по этому же принципу можете сделать и для ht1611
  7. выложите минимальный проект для компиляции. у вас функция ADC_Change_in() не inline?
  8. Функция даст больше контроля над данными, чем макрос. Макрос лучше использовать там где с функцией не все получается так как надо. Я бы помог компилятору и всё же добавил бы inline. В возвращении функцией одного значения не вижу ничего плохого.
  9. прошивал FlashPro4 но вам нужен программатор Silicon Sculptor (он поддерживает серию MX и указан в datasheet https://www.mouser.com/datasheet/2/523/MX_DS-516396.pdf) https://www.microsemi.com/product-directory/programming/4979-silicon-sculptor
  10. Приходилось перепрошивать другие актеловские чипы, всё вроде как по инструкции.
  11. https://www.youtube.com/watch?v=R-ldmA7JYtE https://www.microsemi.com/product-directory/programming/4977-flashpro#documents http://coredocs.s3.amazonaws.com/Libero/11_7_0/Tool/flashpro_ug.pdf
  12. Данная ПЛИС однократно программируемая https://actel.ru/item/mx программные средства https://actel.ru/rubric/programmnye-sredstva программаторы можно посмотреть здесь https://actel.ru/rubric/apparatnye-sredstva Вообще Actel (Microsemi) это оборонка (американская) с хорошей защитой данных. Скорее всего попадает под санкции (двойное назначение), может и не удастся приобрести чип
  13. Для начала давайте сделаем так #define SHCP_TALL PORTC |= (1 << 0) // Высокий уровень на выходе синхронизации #define SHCP_LOW PORTC &= ~(1 << 0) // Низкий уровень на выходе синхронизации #define STCP_TALL PORTC |= (1 << 2) // Высокий уровень на выходе защёлки #define STCP_LOW PORTC &= ~(1 << 2) // Низкий уровень на выходе защёлки #define DS_ON PORTC |= (1 << 1) // Высокий уровень на выходе Данных #define DS_OFF PORTC &= ~(1 << 1) // Низкий уровень на выходе Данных void init_74HC595 () // Инициализация { DDRC |=((1<<0)|(1<<1)|(1<<2)); // Настраиваем пины на выход PORTC&=~((1<<0)&(1<<1)&(1<<2)); // Настраиваем пины в ноль } поставил скобки и проверьте соответствует ли у вас задержки между выдачей сигналов (сейчас у вас их нет совсем) и всё таки лучше сформировать импульс STCP, чем удерживать лог.1 в течение 500 мс и тут скобок не хватает Out_Register(1<<1|1<<4); Out_Register(1<<5&1<<6);
  14. а почему STCP не переводите на низкий уровень перед очередной последовательной загрузкой (STCP_LOW)?
×
×
  • Create New...