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

murmur

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

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

  • Посещение

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


  1. Понятия не имею что за режим использует FTDI драйвер. Могу сказать лишь, что скорость USART 256 кбод. Длина кабеля сантиметров 20 будет. То есть можно экранированный кабель из 3-х проводков (у меня питание FTDI осуществляется от схемы, а не от компа) - и все? Вот кабель - один его конец с корпусом разъема - а надо ли другой его конец соединять с землей схемы через резистор и конденсатор?
  2. Есть плата, на ней FT232RL. Сам разъем будет закреплен на корпусе и соединяться должен посредством кабеля. Возникает вопрос - а как быть с линией shield ? Вообще, насколько я знаю корпус разъема соединяется с землей посредством резистора и конеднсатора. Казалось бы, можно протянуть 5-й провоодк от корпуса разъема на плату, где имеется резистор и конденсатор, а дальше на землю. Но вот у меня в руках кабель для дополнительного USB разъема обычного компьтера. Там всего 4 проводка. НИкакого экрана. А корпус разъема, понятное дело, напрямую соединен с корпусом компьютера и стало быть, землей. Так как же быть? У меня корпус пластиковый.
  3. Вопросик. Трассирую плату. Плата узкая и длинная. Расположение компонентов критично. ТРансформатор и клеммы сетевого питания внизу, тиристоры вверху. Между ними: Atmega32 AD595 - Аналоговый усилитель термопары ADS1100 - АЦП Дорожка должна пройти на нижней стороне платы под одной из этих или вблизи одной изх этих микросхем. Для какой микросхемы будет меньше вреда? Или может быть сделать перемычку из толстого провода в экране?
  4. рассматривала и двухканальный ацп, но по совокупности плюсов и минусов все е остановилась на двух однокональных.
  5. да... лучше я куплю еще один АЦП, 180 рублей всего. А этот еще где-нибудь пригодится.
  6. AD595<------К-термопара | АНАЛОГОВЫЙ КОММУТАТОР---->ADS1100-->>ATMEGA8 | AD595<------К-термопара
  7. у....может лучше посоветуете коммутатор аналогового сигнала? Я собираюсь этим АЦП оцифровывать аналоговое напряжение с выхода микросхемы AD595 - усилитель термопары. МОжет мне проще использовать 1 ацп, коммутируя его вход на 2 разных выхода AD595 ?
  8. что конкретно вы подразумеваете под переключением микросхем? Как вы предлагаете это осуществить?
  9. ок, господа, допустим, я цепляю один ацп на SDA и SCL, другой на PORTA.0 и PORTA.1. Далее делаю так: #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x1B;PORTA .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> // Declare your global variables here void main(void) { // 2 Wire Bus initialization // Generate Acknowledge Pulse: Off // 2 Wire Bus Slave Address: 0h // General Call Recognition: Off // Bit Rate: 400,000 kHz TWSR=0x00; TWBR=0x0C; TWAR=0x00; TWCR=0x04; // I2C Bus initialization i2c_init(); while (1) { // Place your code here i2c_start(); i2c_write(0b10000000); i2c_read(1); i2c_write(0b00000000); i2c_read(1); i2c_write(0b00111111); i2c_read(1); i2c_stop(); }; } Ну и в теле главного цикла операции чтения TWI, пока еще не разобралась с ними. Будет работать? Напоминаю остальным, чтобы не отвлекаться от темы - есть два устройства с одинаковым адресом. Как их рулить одним микроконтроллером без конфликтов?
  10. ADS1100. Точнее ADS1100A0 Судя по даташиту адрес зашивается на фабрике. А все-таки что это за зверь такой - TWI, который вроде бы аппаратен, но позволят изменить назначение ножек? Можно ли эту способность исплользовать? Я уже однажды комбинировала аппаратный и программный SPI прокатывало, нельзя ли здесь такой трюк провернуть?
  11. В чем разница между TWI и i2c? Коллеги ни разу не сталкивалась ни с тем ни с этим. Хотела глянуть пример кода и залез в Project Wizard от CodeVision. Вкладка I2C дала такие строки в примере кода: #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x1B;PORTA .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> // Declare your global variables here void main(void) { // I2C Bus initialization i2c_init(); while (1) { // Place your code here }; } вкладка 2-wire(i2c) дала такой код: #include <mega32.h> void main(void) { // 2 Wire Bus initialization // Generate Acknowledge Pulse: Off // 2 Wire Bus Slave Address: 0h // General Call Recognition: Off // Bit Rate: 400,000 kHz TWSR=0x00; TWBR=0x0C; TWAR=0x00; TWCR=0x04; while (1) { // Place your code here }; } Обращает на себя внимание то, что в первом примере можно назначать пины для SDA и SCL. Это что - что-то типа программного i2C? Во втором примере пины не назначаются, то есть работать будут аппаратные SCL и SDA.. Я почему спрашиваю - лоханулась при покупке АЦП - купил два с одинаковыми адресами. В связи с чем хочу поинтересоваться, могу ли я все же их исполользовать, повесив их на разные линии, с одной общаяясь по i2с, с другой по 2-wire(i2c)? Или же купить АЦП с другим адресом?
  12. К чему Ваш пост, если я уже все решила? Опять-таки, к чему Ваш пост, если я не просто спросила, как сделать, а сделала, выдала результат, описала конкретную проблему и спросила совета? Воистину, слово "погуглить" самый хороший подарок для снобов. Последний вопрос был задан про паразитное питание. Не можете ответить - идите мимо.
  13. Проблема решилась - оказалось датчик не хочет рабоать в паразитном режиме. Причем он работает, когда нога VDD вообще висит в воздухе!!!!!! Это может быть связано с самим датчиком? Я не проектирую устройство с нуля, я заново переписываю прошивку для уже готового устройства, в котором сгорел контроллер, а прошивки нет...
  14. У вас какой-то странный код. Что за ответ "готовности от чипа"? ДЛя чего контроль ножки на PORTA?
  15. Получилось, но хоть ты тресни, показывает 85 градусов. Блокирировала прерывания на время измерения - индикаторглючит - выводит по очереди цифры, но все равно видно что 85 градусов. Подключала как по классической схеме, так и по паразитному питанию. ЧТо не так? #asm .equ __w1_port=0x08 .equ __w1_bit=1 #endasm #include <mega48.h> #include <stdio.h> #include <delay.h> #include <ds1820.h> #include <1wire.h> unsigned char cur_digit; unsigned int Temp; unsigned char dig[4]; flash char DIGITS[] = { 0b11001111, 0b00001001, 0b11010101, 0b01011101, 0b00011011, 0b01011110, 0b11011110, 0b00001101, 0b11011111, 0b01011111, 0b00010111 }; /* maximum number of DS1820/DS18S20 connected to the 1 Wire bus */ #define MAX_DEVICES 8 /* DS1820/DS18S20 devices ROM code storage area */ unsigned char rom_code[MAX_DEVICES][9]; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { PORTD=0x00; if (cur_digit==3) cur_digit=0;else cur_digit++; PORTB = 0xFF &(~(1<<cur_digit+2)); PORTD=DIGITS[dig[cur_digit]]; } void main() { unsigned char i,j,devices; int temp; DDRC.0=1; DDRD=0xFF; DDRB=0xFF; PORTD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 8000,000 kHz // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x03; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x01; //devices=w1_search(0xf0,rom_code); w1_init(); devices=w1_search(0xf0,rom_code); #asm("sei") dig[3]=0; dig[0]=11; PORTB=0x00; PORTD=0x00; while(1) { // #asm("cli") Temp=ds1820_temperature_10(&rom_code[0][0])/10; // #asm("sei") //dig[1]=devices; dig[1]=Temp/ 10; dig[2]=Temp % 10; } }
  16. Что-то не получается... время обработки прерывания вышло 42 мкс. Не много ли? Не замусорит ли такое прерывание данные из DS1820? На какую частоту настраивать прерывание? #include <mega48.h> #include <delay.h> #include <ds1820.h> #asm .equ __w1_port=8 .equ __w1_bit=1 #endasm unsigned char Temp,temp, cur_digit; unsigned int interval; flash char DIGITS[] = { 0b11001111, 0b00001001, 0b11010101, 0b01011101, 0b00011011, 0b01011110, 0b11011110, 0b00001101, 0b11011111, 0b01011111, 0b00010111 }; /* maximum number of DS1820/DS18S20 connected to the 1 Wire bus */ #define MAX_DEVICES 8 /* DS1820/DS18S20 devices ROM code storage area */ unsigned char rom_code[MAX_DEVICES][9]; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { PORTC.0=1; PORTB=0b11110111; PORTD=DIGITS[temp/10]; delay_us(1); PORTD=0x00; PORTB=0b11101111; PORTD=DIGITS[temp%10]; delay_us(1); PORTD=0x00; PORTB=0b11011111; PORTD=DIGITS[6]; delay_us(1); PORTD=0x00; PORTB=0b11111011; PORTD=DIGITS[11]; delay_us(1); PORTD=0x00; PORTC.0=0; } void main() { unsigned char i,j,devices; int temp; DDRC.0=1; DDRD=0xFF; DDRB=0xFF; PORTD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 8000,000 kHz // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x02; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x01; //devices=w1_search(0xf0,rom_code); w1_init(); #asm("sei") while(1) { // #asm("cli") Temp=ds1820_temperature_10(0); // #asm("sei") temp=(Temp>>1); } }
  17. Коллеги, посоветуйте. Есть индикатор семисегментный о 4-х разрядах, сегменты соединены для динамической индикации. PORTD управляет сегментами, а PORTB.2-5 - разрядами. Есть датчик DS1820. Естественно, динамическая индикация должна коммутироваться постоянно. А датчик требует продолжительное время для считывания информации. ПРиведенный код заставляет его моргать, пока чтается информация с датчика. Как организовать одновременное управление индикаторои и опрос датчика? #include <mega48.h> #include <delay.h> #include <ds1820.h> #asm .equ __w1_port=8 .equ __w1_bit=1 #endasm unsigned char Temp; unsigned int interval; unsigned char DIGIT(unsigned char dig) { // 7 6 5 4 3 2 1 0 , // e d h g c a f b if (dig==0) return 0b11001111; if (dig==1) return 0b00001001; if (dig==2) return 0b11010101; if (dig==3) return 0b01011101; if (dig==4) return 0b00011011; if (dig==5) return 0b01011110; if (dig==6) return 0b11011110; if (dig==7) return 0b00001101; if (dig==8) return 0b11011111; if (dig==9) return 0b01011111; if (dig==11) return 0b00010111; else return 0x00; } /* maximum number of DS1820/DS18S20 connected to the 1 Wire bus */ #define MAX_DEVICES 8 /* DS1820/DS18S20 devices ROM code storage area */ unsigned char rom_code[MAX_DEVICES][9]; void main() { unsigned char i,j,devices; int temp; DDRD=0xFF; DDRB=0xFF; PORTD=0xFF; devices=w1_search(0xf0,rom_code); while(1) { interval++; if (interval >10000) {Temp=ds1820_temperature_10(&rom_code[0][0]);interval=0;} PORTB=0xFF; delay_us(1); PORTB.3=0; PORTD=DIGIT(0); delay_us(5); PORTD=0x00; PORTB=0xFF; delay_us(1); PORTB.4=0; PORTD=DIGIT(9)|0b00100000; delay_us(5); PORTD=0x00; PORTB=0xFF; delay_us(1); PORTB.5=0; PORTD=DIGIT(6); delay_us(5); PORTD=0x00; PORTB=0xFF; delay_us(1); PORTB.2=0; PORTD=DIGIT(11); delay_us(5); PORTD=0x00; }
  18. Два вопроса 1. Как расчитать период? видела формулу 1.4*R*C, но она была для обычного мультивибратора на транзисторах. ПОдойдет ли сюда? Сопротивление в Омах, емкость в Фарадах, время в секундах - я правильно поняла? 2. Где у этой чудо-мирокросхемы первая ножка?
  19. rx3apf, вы моей иронии не поняли. Это устройство предназначено для автомобильного индикатора, для замены кнопочного переключения режимов работы на автоматическое, раз в 15-16 секунд. Так что требования никакие...
  20. Хех... в качестве источника питания имеется аккумулятор от КАМАЗа. Частота 0.0625 Гц. Только не говорите, что не потянет ))))
  21. Ах, да, забыла сказать - ее выход должен быть совместим со входом AVR (5 вольт)
  22. Коллеги, нужно очень срочно присобачить к одному устройству мультивибратор. Раньше помню, собирала при необходимости такие на микросхеме 561 ла7. Все прекрасно понимают, про какой мултивибратор я говорю - про тот, который собран на 2-х элементах НЕ , либо ИЛИ-НЕ, И-НЕ с закороченными входами. В общем мне сейчас нужно срочyо что-то подобное, но импортное, ибо корпус нужен поменьше типа SOIC. Посоветуйте 5-вольтовую логику, в которой есть, или из которой можно слепить 2 элемента НЕ. Самое главное, чтобы эта микра была хорошо распространена, дабы ее можно было купить в самом захудалом магазинчике. Спасибо.
  23. Почему сложновато намотать? В два слоя по 5 витков. В чем сложность? Поймите, я не спорю, я смиренно вопрошаю. Ну и желательно обосновать. Мне вот почему-то хочеться верить автору программы, которая не только сообщает о недопустимых параметрах сердечника но и конкретно пишет - выскоая плотность тока, высокая температура трансформатора. Так вот эта программа вещает о 160 Вт. И вам тоже хочется верить, думаю что ваши эмпирические прикидки основаны на опыте. Так где же правда, брат? ( (с) Данила Багров )
  24. хм... значит программа хреновая? Она выдает диаметр провода 0.9 мм ____________.rar
×
×
  • Создать...