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

RicLab

Участник
  • Постов

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

  • Посещение

Весь контент RicLab


  1. Добрый день. Вопрос, есть ли способ в одном проекте сделать 2 одинаковые платы?
  2. В промышленности для таких задач используются врашающиеся токосьемники. Вполне надежно в эксплуатации. Только выбирать их надо в соответсвии с задачей и условиями эксплуатации.
  3. извиняюсь за не совсем ясный вопрос. выше упоминалось о библиотеки где собраны переводы документации. Вопрос был про них!
  4. подскажите ссылки на другую документацию.
  5. Подскажите адрес этого самой ftp бибилиотеки. На сайте что-то не нашел? :rolleyes:
  6. в третьем варианте меня смущает отсутствие гальванической развязки по USB.
  7. Добрый день. Необходимо определиться с выбором цифрового осциллографа между следующими моделями. Итак. 1. RIGOL DS1052E 2. Siglent SDS1062CM 3. Hantek DSO-2250 Опыта общения с данными девайсами нет, поэтому прошу совета. Осциллограф необходим для себя т.е. для дома. Круг использования от звукотехники до МК.
  8. Спасибо. Решение было у меня под носом. :smile3046: А что значит &MI_00 ?
  9. в инф файле этот пид уже есть. Ftdi="FTDI" DESC="CDM Driver Package - Bus/D2XX Driver" DriversDisk="FTDI USB Drivers Disk" USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter" USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A" USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B" USB\VID_0403&PID_6011&MI_00.DeviceDesc="USB Serial Converter A" USB\VID_0403&PID_6011&MI_01.DeviceDesc="USB Serial Converter B" USB\VID_0403&PID_6011&MI_02.DeviceDesc="USB Serial Converter C" USB\VID_0403&PID_6011&MI_03.DeviceDesc="USB Serial Converter D" USB\VID_0403&PID_6014.DeviceDesc="USB Serial Converter" SvcDesc="USB Serial Converter Driver" ClassName="USB" Через библиотеку ftd2xx.dll ? И как через неё обратиться?
  10. Добрый день. Возникла проблема с FT232R, после изменения PID через FTprog со значения по умолчанию 6001 на 6010. На устройство не подходят драйвера хотя до изменения PID подходили. FTprog перестала видить FT232R. Есть ли способ сбросить настройки на значение по умолчанию?
  11. ссылку можно найти в сети, переслать по почте не могу так как у меня эта книга в бумажном ввиде.
  12. По внутреннему устройству Tiny2313 можно подробно почитать в книге А.В.Белов <<самоучитель разработчика устройства на микроконтроллерах AVR>> Там по русски всё подробно расписано + обучающий материал на С и Асме. и мк и преобразователя.
  13. Насчёт С1 несогласен, на практике проверено не мешает. Хоть у микрокнотроллера и есть внутренние цепи сброса для надёжности RC не помешает. вы имели ввиду низкий и высокий уровень на входах? Да и какие сигналы ему необходимы? случайно не +24В?
  14. Если не секрет, А что это будет? :rolleyes: Под ПЧ подразумевается преобразователь частоты, а сигналы действительно лучше завести через опторазвязку.
  15. Палыч Спасибо, полностью согласен с вами!
  16. сделал так eeprom int Datamemory=40; // обьявляем переменные int readydata,var; interrupt [TIM0_OVF] void timer0_ovf_isr(void){ readydata++; // в прерывании инкрементируем }; while (1) { if (readydata==392) { // каждые ~ 100мсек readydata=0; if (Datamemory!=var) { // если значение в eeprom не равно текущему значению Datamemory=var; // записываем текущее значение в eeprom }; }; }; } временной интервал проверки уменьшил до 100мсек так как при оном равном 1 сек при выключении питания записывался мусор(при сбросе все нормально ). понимаю что так записывать наверно неправильно, так что жду критики. :smile3046:
  17. eeprom avr

    Добрый день. в проекте необходимо записать переменную изменяемую пользователем в eeprom если она не изменяется в течении ~1сек. Записываю так: eeprom int Datamemory=40; // обьявляю переменную void xxx (void) // функция вызываемая прерыванием таймера if(oldvariable==newvariable){ x++; } else { x=0; }; if (x==3921){ Datamemory=variable; x=0; }; void main()void variable2=Datamemory; запись происходит не всегда и если записывается то мусор. Как правильно организовать запись в eeprom?
  18. таймер Т1

    Добрый день. Суть вопроса такова. Таймер Т1 настроен на сброс при совпадении с OCR1A и генерирование прерывания. Задержки от 5с до 100мс, переменная которая записывается в OCR1A изменяется пользователем в любой момент. При больших задержках таймера он не сразу реагирует на изменение OCR1A. Как можно сбросить таймер в любой момент времени и заново запустить на счёт? Вот настройка таймера при инициализации. // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7,813 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
  19. сильно не ругайте, я начинающий :smile3046: За советы большое спасибо.
  20. тогда пострадает надёжность распознования вращения энкодера. Проверил в железе, бывают ложные импульсы.
  21. заработало но на один щелчок энкодера на выходе 4 импульса. Так и должно быть по алгоритму. Как можно сделать 1 щелчок 1 импульс? Автор статьи писал об этом, но я не совсем понял как это реализовать.
  22. Энкодер

    Добрый день. Алгоритм обработки энкодера взял здесь. Переделал для CVAVR, но заставить работать не получается. К порту B подключены светодиоды, сигналы энкодера A и B подключены к порту D 2 и 3 соответственно. Chip type : ATtiny2313 Clock frequency : 8,000000 MHz Memory model : Tiny External SRAM size : 0 Data Stack size : 32 *****************************************************/ #include <tiny2313.h> int New; // новое значение состояния энкодера unsigned char EncData; // счётный регистр энкодера int EncState; // предыдущее состояние энкодера void EncoderScan(void) { New=PIND&0xC; // копируем в New состояние входов 2,3 switch (EncState) // сравниваем текущее значение New со старым смотря в какую сторону вращение изменениям EncData ++ или -- { case 2: { if (New==3) EncData++; if (New==0) EncData--; break; } case 0: { if (New==2) EncData++; if (New==1) EncData--; break; } case 1: { if (New==0) EncData++; if (New==3) EncData--; break; } case 3: { if (New==1) EncData++; if (New==2) EncData--; break; } } EncState=New; // записываем новое значение предыдущего состояния } // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { EncoderScan(); // запускаем функцию сканирования энкодера } // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0xFF; // Port D initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTD=0x7F; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 1000,000 kHz // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x02; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x02; // Global enable interrupts #asm("sei") while (1) { PORTB=EncData; }; } Где моё упущение? :laughing:
  23. такой задачи у меня не было :rolleyes:
  24. порог инерционности человеческого глаза, в ЭЛТ развертка идет с частотой 50-60Гц. Если бы я делал электронное табло у меня не возникали бы вопросы.
×
×
  • Создать...