Jump to content

Jozef

Members
  • Content Count

    35
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Jozef

  • Rank
    Новенький

Информация

  • Город
    Пермь

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    Радиосвязь КВ, охота на лис
  1. Согласен. Три имевшихся под рукой 303А работают одинаково, режим меняется в пределах сотых вольта, 303Б аналогично. Пока оставлю Е и докуплю в запас, мало ли куда ещё пригодятся.
  2. Всех приветствую. Непривычно заходить после 12 лет отсутствия на форуме, столько всего поменялось и накопилось, но зато нашлась тема, вопрос которой в точности мой. Вернулся к активному паянию, собиранию и бегу по лесам, и для разминки колдую сейчас над приёмником прямого преобразования для охоты на лис на 3.5 МГц. Конструкция гибридная - УВЧ, смеситель и гетеродин от Полякова с заменой настройки на варикап (Радио 1982 №№ 4, 7 или Юный радиолюбитель, издание 8), НЧ тракт от Радио-87ВПП. Так вот, дело в следующем. Схема УВЧ прилагается, воспроизведена без ошибок. При 9В питания не удаётся подать на затвор КП303А смещение больше 0.5В, и не совсем пойму по ВАХ - он получается закрыт или наоборот, загнан в насыщение? Проблему для себя решил установкой КП303Е, который по крутизне и шумам выгоднее, а заодно и по рабочим токам - при сохранении номиналов (сейчас R3 560 Ом, а не как в схеме, ещё предстоит поподбирать до оптимального усиления) - чувствительность сразу подскочила от 200 мкВ/м до примерно 60 мкВ/м, и аппарат, выставленный в проём окна на 16 этаже, стал слабенько слышать любительские станции даже на рамочную антенну. Контур и рамка настроены на 3.6 МГц. Можно ли здесь добиться нужных параметров на 303А?
  3. а вот с точками я сам понять не могу толком... у меня индикаторы на порте D висят, точка подключена на PORTD7, при индикации в нужном разряде засылаю в бит значение. здесь у меня вариант для фиксированного положения точки во 2 разряде void indicate_one(unsigned char digit, unsigned char symbol) { PORTD=~symbol_2_bin(symbol); switch(digit) { case 0:PORTB=0x01;break; case 1:PORTB=0x02;break; case 2:PORTB=0x04;break; case 3:PORTB=0x08;break; case 4:PORTB=0x10;break; case 5:PORTB=0x20;break; } if(digit==1)PORTD=(0<<(7)); n=0; while(n<50)n++;// задержка символа на индикаторе } конкретно, не могу сообразить, что за переключатели на порте C что-то сегодня моск не туда работает
  4. а, забыл написать... разбивать на цифры надо где-нибудь перед индикацией всего сразу, не в функции. например: ... while(1) { ... number=123456; // здесь разбивка на цифры for(i=0;i<=5;i++) { ind[i]=number%10; number/=10; } // здесь индикация indicate_all(); }
  5. а зачем делфи? есть же си? немногим может посложнее, в силу хитростей с синтаксисом
  6. #include <mega8.h> unsigned char ind[6]={0,0,0,0,0,0};// отображаемые знаки // кодировка символов // параметр - символ unsigned char symbol_2_bin(unsigned char symbol) { unsigned char result; switch (symbol) { case 0: (result=0b00111111); break; case 1: (result=0b00000110); break; case 2: (result=0b01011011); break; case 3: (result=0b01001111); break; case 4: (result=0b01100110); break; case 5: (result=0b01101101); break; case 6: (result=0b01111101); break; case 7: (result=0b00000111); break; case 8: (result=0b01111111); break; case 9: (result=0b01101111); break; } return result; } // вывод одного символа в данном разряде // параметры - номер разряда, выводимый знак void indicate_one{unsigned char digit, unsigned char symbol) { char i; switch(digit) { case 0:PORTB=0x01;break; case 1:PORTB=0x02;break; case 2:PORTB=0x04;break; case 3:PORTB=0x08;break; case 4:PORTB=0x10;break; case 5:PORTB=0x20;break; } PORTD=~symbol_2_bin(symbol); i=0; while(i<50)i++;// задержка символа на индикаторе } // вывод на индикатор всего содержимого массива ind[] void indicate_all(void) { char i; for(i=0;i<=5;i++) { indicate_one(i,ind[i]); PORTB=0x00;// гасим индикатор PORTD=0xff; } } void main(void) { DDRD=0xff; DDRB=0xff; while(1) { ... } } у меня лично эти три функции в отдельном файле .h и везде, где надо, идут уже шаблонно, еле вспомнил, что есть что здесь а разбить число на цифры можно следующим образом (применительно к 6-разрядному индикатору, число тоже должно быть шестиразрядным.) unsigned number; unsigned char ind[6]={0,0,0,0,0,0}; unsigned char i; ... i=0; for(i=0;i<=5;i++) { ind[i]=number%10; number/=10; } если исходное число вещественное, то стоит домножить его на 10 в какой-нить степени, чтоб получить шестизначную целую часть.
  7. Вот честно скажу, сегодня впервые сделал асм-вставку в код: понадобилось точно выставить задержку по числу тактов.
  8. 1. кодируем символы, которые должны выводиться. у меня на порте сегменты a..h соответствуют выводам порта 0..7. так удобней программировать, но не очень иногда разводку платы делать. не страшно 2. индицируем символ на данном разряде индикатора, для этого подключаем к питанию нужный разряд с помощью ключа, а на сегменты подаем код символа. Задерживаем на небольшое время, потом гасим этот разряд индикатора. Перебираем все разряды, попутно выводя на них соответствующие символы. То, что должно быть на индикаторе, удобно занести в массив, где каждый элемент соответствует одному разряду. Главное будет, правильно выполнить разбиение числа на цифры (в нужном порядке), но это легко.
  9. Датчики применяются: термопары, проволочные термометры сопротивления. А точность измерения 0,1 градус обеспечивается точностью измерения напряжения/сопротивления датчика. Недавно появились несколько приборов с точностью 0.01 градуса, но в серию их вроде не пустили, разработали штучно для опытов. Похоже, точность избыточная.
  10. допустим, задача: Прибор. Измеряет температуру по N каналам, точность 0.1 градус, тип датчика - любой из существующих, контроль за обрывом датчика. Регулирует ее по тем же каналам, предел регулирования вводится на клавиатуре прибора. Заносит инфу в архив объемом порядка 1 Мб, попутно выводя ее на ЖК-индикатор. Архив можно считать компом или просмотреть на приборе. Приборы завязаны в сеть по RS-485 и каждый имеет в сети свой адрес от 0 до FF. плюс всякие настройки типа часов и т.п. На ассме стабильно пишется только самая малая часть прошивки прибора, сколько замечал.
  11. Виндовз на МК... хм... МК с объемом Flash 2 Гб, EEPROM 256 Мб и быстродействием 1,5 ГГц? оригинальная была б штука. Особенно если б из его возможностей использовались бы только MSOffice, как обычно бывает
  12. Насчет брака не знаю. Но бывают странности, к примеру, в меге нарушена работа прерываний. То есть они работают, но не могут обрабатывать глобальные переменные. Еще был случай, когда ATmega16 не могла прошиться. Где-то, по видимому, во FLASH-памяти проблемы. Проверка на трех разных схемах программаторов дала один и тот же результат - чтение/стирание в норме, запись - только первые 18 байт. Насчет статики тоже не очень знаю. Но судя по даташитам, на входах стоят полевики. Диоды на входе, конечно тоже есть, но обычно не рискую. По крайней мере, на моей памяти (точнее, на моей совести) два выбитых статикой AT89C51RC. Так что применяю браслет и заземленный паяльник 24 В.
  13. Зато дал возможность еще более массового распространения профессии, как и все прочие языки высокого уровня. Как было сказано, двигатель прогресса - это лень. Хотя и приводит это к росту неприспособленности человека. Между прочим, ЯПВУ пошли задолго до С, так что не на Страуструпа нам бочку катить. Первые языки, конечно, были узко специализированы, взять тот же FORTRAN. Билл Гейтс послужил популяризации программирования, ибо создал Basic, являющийся до сих пор (местами) стартовой площадкой для программистов. Отпала просто серьезная необходимость лезть непосредственно в работу процессора и его окружающих. Прогресс...
×
×
  • Create New...