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

shindbad

Members
  • Постов

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

  • Посещение

Сообщения, опубликованные shindbad

  1. а как же глубокий инженерный ум, забота о простых пользователях, банальное внимание и трепетное отношение к чужому времени?

    Это Вы кому и к чему?

    Если там и есть рациональное зерно, то к радиолюбительству оно отношение имеет слабое. Например:

    ...только однократки. Никаких флешей, особенно если топологические нормы кристалла 0,7 мкм и мельче. Избегайте кристаллов с малыми топологическими нормами...

    Здесь вообще сомнительные рекомендации:

    ...

    - Как можно меньше call. Макросы, инклюды - рулез форева пока места хватает. Никаких WDT в теле call.

    - Как можно реже пользовать прерывания. ...

    IMHO из статьи по-ссылке, только на рекомендации по схемотехнике стОит обратить внимание (хотя лично меня бесят фразы типа "кандюки кварца"), но не на программную сторону разработки.

  2. Ну, разве что, кто-то очень смелый возьмётся что-то из журнала "Радио" делать, или переделывать. :) Вот зачем там резонатор - непонятно, это первое, что в глаза бросилось. Если брать прошивку от тахометра, то Вы получите лишь мгновенный расход. IMHO, уж лучше под себя сделать, научитесь заодно.

  3. ...Как лучше всего выпаять их?...

    Вы не пояснили что от чего освобождаете. Ненужные компоненты тупо выкусываются бокорезами, а контактные площадки освобождаются обычным паяльником. Лично я предпочитаю радиодеталями после демонтажа не пользоваться.

  4. ...например, управление реле - что может быть банальнее? но умер МК и на ВСЕ (или часть выходов) попёр плюс...

    У Вас умирал МК? Чтобы вот так, просто взял и умер? У меня ни разу такого не было, за исключением случаев собственного распиз..ва. Электрически МК - такая-же микросхема, как любая другая, логическая, например и имеет свои предельные характеристики, выход за которые и приводит к выходу из строя. Можно поставить хоть 5 штук, но если не озаботиться о входных цепях, о качественном питании, то все 5 однажды "умрут". Увеличение числа компонентов увеличивает и возможность отказа изделия в целом. Так-что, IMHO

    ...два синхронно работающих МК, которые выполняют всё программу такт в такт, иногда синхронизируют/перезапускают работу второго МК...
    это из области чисто радиолюбительского бреда. Почитайте это: http://caxapa.ru/lib..._immunity.html Грамотная разводка ПП, сапрессоры, но не везде, где попало, а там, где нужно, помехоподавляющие конденсаторы по тому-же принципу, что и сапрессоры, не допускать превышения предельных электрических параметров и не надо ни хрена никакой городьбы с дублированием и попыткой предусмотреть все возможные "а вдруг". Для радиолюбительства, IMHO, этих знаний вполне достаточно. О дублировании в промышленных ПЛК, или в военно-космической технике, разумеется, здесь речи не идёт.
  5. ...6 стрелочных приборов:

    1. Тахометр - считаем импульсы от ЭБУ => крутим серво на заданный угол.

    ...и.т.д...

    Для управления сервой нужен ШИМ. У ардуины-мини имеется 6 каналов. ATmega168 имеет аппаратный, но у ардуины ШИМ явно делается программно, 6 каналов всё-таки. Какое там получается разрешение? И насколько быстро меняются параметры ШИМ после их изменения?

  6. Я думал все уже есть в сети, но что-то не нашел...

    Хреново ищете. Вот с первой-же страницы поиска:

    http://www.tweaking4...28j60-ethernet/

    Но, как Вам уже сказали, думать и учиться всё-равно придётся. Если Вы ещё и английского не знаете на техническом уровне, то, тогда уже только за деньги.

  7. ...не думал что так сним все геморно...

    А в чём гемор-то? И при чём здесь программирование? В даташите всё есть. Даже на некоторых 4MHz резонаторах схема начинает работать только с осциллятором в режиме HS, а тут на схеме указано целых 10MHz и в исходнике прописано _HS_OSC. Какой по-Вашему нужно выбирать режим?

  8. У меня было хлеще. БП со светодиодом. Регулярно пропадало питание, но с горящим светодиодом. Сначала заменил оба шнура, попутно исследовав сам ИП на предмет вздувшихся электролитов. Сбои продолжались. Вскрыл ноутбук, пропаял разъём. Без изменений. Вышел на разъём от ИП. Оказалось следующее. На входе разъёма питания стоит что-то вроде короны с лужёными усами загнутыми внутрь, которая этими усами обхватывает внешний минусовой контакт джека при его подключении. От времени эти усы загнулись внутрь и тупо не доставали до контакта, т.е. разъём просто висел на центральном штыре. Пока решил просто. У основания разъёма намотал пару витков мягкого лужёного провода, чтобы увеличить диаметр разъёма и гарантировано создать контакт с "короной" на входе разъёма. Разумеется нужно будет разъём заменить.

  9. IMHO не стОит сразу заморачиваться с 7-ми сегментным индикатором, а ограничиться самой простой индикацией. Достаточно будет взять МК с таким количеством входов / выходов :

    1. Три входа для кнопок пульта управления ( коммутация кнопки на "землю", подтяжка резистором к + питания);

    2. Три входа для оптических датчиков, подключение, как для кнопок;

    3. Два аварийных датчика верх / низ, подключение, как для кнопок;

    4. Три выхода на светодиоды индикации текущего этажа;

    5. Два выхода на аварийные светодиоды;

    6. Два выхода на управление мотором через мостовую схему на ЭМ реле.

    Управлять реле, стОит через ULN, для уменьшения количества компонентов схемы. Запитать всю кухню, не мудрствуя лукаво, от 7805. Итого, кроме вышеперечисленного и МК, в схеме будут светодиоды, кнопки, горстка резисторов и конденсаторов.

    Выбор МК - это уже от наличия / предпочтений / средств разработки / вероисповедания и.т.д. Я-бы как-то так сделал. Написание программы на Си займёт максимум вечер.

  10. ...Кстати доавольно успешно РУ самолеты делали немцы в 1944-45 м...
    А откуда такая информация? Не поделитесь ссылкой? Я понимаю, что садить такой самолёт никто и не собирался, но ему и взлететь ещё надо, и до места добраться. Выглядит маловероятным, гугл молчит, в Википедии про Ю-88 об этом ни слова.
  11. Я так понимаю, это вообще не программатор в чистом виде. Но этот переходник может и без всяких ARM ещё пригодиться, просто для связи PC с периферией какой.

  12. Тут вариантов немного. Нужна либо низовольтная проводка достаточного сечения, либо высокое напряжение пускать по уже брошенному, что в бане не есть хорошо и уже на месте лампы к ЭТ подключать. Насколько безопасно у Вас прокинута проводка, чтобы пустить по ней 220В?

  13. Журнал "Everyday practical electronics" №1 за 2006 г. Вариант с автоматическим, программным определением передачи, без кучи концевиков по положениям рычага КПП, со схемой, исходниками и.т.д. Немного не то, что нужно ТС, но для знакомства с подобными девайсами, почитать будет полезно. Там есть всё, что нужно для повторения: теория, принципиальная схема, рисунок ПП. На сайте журнала, обычно лежат исходники или хотя-бы hex-файл.

  14. СПС получилось !!!

    void interrupt() {

    if ( T0IF_bit ==1){

    cnt++;

    GIE_bit = 1;

    PEIE_bit = 1;

    T0IE_bit=1; }

    ...

    Флаг T0IF_bit не сбрасывается, зато зачем-то взводятся GIE_bit, PEIE_bit и T0IE_bit...

    ...

    да не..е это кто-то мануалы не читает....

    +100

  15. IMHO многабукафф, а где следует, код пропущен. Я-бы сделал как-то так:

    ...
    
    #include <xc.h>
    #include <pic.h> // Лишнее
    #include <pic16f819.h> // Лишнее
    ...
    
    #define _XTAL_FREQ 4000000 // для __delay_us и __delay_ms
    
    //***********************************************************************
    //* ИНИЦИАЛИЗАЦИЯ МК
    //***********************************************************************
    void init(void)
    {
    // обнулить индекс динамической индикации:
    а = 0 ;
    ...
    void interrupt Timer (void)
    { //прерывание по таймеру для динамической индикации
    if( TMR0IF && TMR0IE )
    	 {
    			 TMR0IF=0;
    
    		 // гасим все разряды
    			 dig1=0;
    			 dig2=0;
    			 dig3=0;
    
    			 // Или все разом:
    			 PORTA &= 0b01110011 ;
    
    			 a++;
    			 switch(a)
    	 {	 // Динамическая индикация.
    					 case 1:
    						 // Сначала выставляем символ, потом зажигаем разряд
    						 LED=(LEDS[2]);
    						 dig3=1;
    						 break; // Первый разряд
    
    					 case 2:
    						 LED=(LEDS[1]);					    
    						 dig2=1;
    						 break; // второй разряд
    
    					 case 3:
    						 LED=(LEDS[0]);					    
    						 dig1=1;
    						 a=0;
    						 break; // третий
    	 }
    }
    }
    ...
    // В оригинале функция ничего не возвращала. И наоборот, аргументы ей не нужны
    
    int LinearAPPROX( void ) //функция конвертирования АЦП в температуру нелинейной характеристики резистивного датчика
    {
    int adc;
    
    ADCON0bits.GO = 1; //запускаем ацп
    // Просто для удобочитаемости:
    while (ADCON0bits.GO); // если ацп работает то ниче не делаем
    
    ...
    
    	 adc = ( ADRESH << 8 ) | ADRESL;
    
    // используется оператор "больше либо равно"/"меньше либо равно" Чтобы точно видеть в какой диапазон попадает перемнная adc
    
    	 if( adc < 175 || adc > 897 )
    		 return adc ;
    
    	 if( adc >= 175 && adc <= 675 )
    		 return (-130L*adc+125344)/1024 ; //уравнение от 36.6 до 100
    
    	 if( adc >= 676 && adc <= 836 )
    		 return (-132L*adc+126644)/1024; //уравнение от 15.8 до 36.6
    
    	 if( adc >= 837 && adc <= 897 )
    		 return (-211L*adc+192704)/1024 ; //уравнение от 15.8 до 3
    
    }
    ...    
    
    void convert (void)//функция конвертирования значения температуры в показания на 3 разрядном семисегментном индикаторе
    {
    unsigned int adc,value, d1_1; //
    int tm;
    unsigned char DS,j;
    unsigned char tempLEDS[3]			    ; // масив числа температуры на семисегментном индикаторе
    
    
    	 tm = LinearAPPROX();
    
    	 // Сначала вызываем LinearAPPROX, потом делаем всё остальное
    	 // Или АЦП запускаем здесь, а в LinearAPPROX обрабатываем, но не в двух местах
    
        if ( tm == 1023) //если значение ацп равно 1023 то
    ...
    
    //***********************************************************************
    //* ОСНОВНАЯ ПРОГРАММА
    //***********************************************************************
    void main (void)
    {
    ...
    	 for(i=255;i>0;i--); // для задержки есть макросы __delay_us и __delay_ms
    
    	 //******** ГЛАВНЫЙ ЦИКЛ *****************
    	 while (1)
    ...
    }
    

    Как-то так. Ну и куча ненужных NOP(); Я знаю про RMW, но в данном случае проявление этого эффекта маловероятно, т.к. после установки битов идёт обращение к элементам массива, математика разная и др. Для измерения производительности функций в MPLAB, нужно в симуляторе использовать инструмент Stopwatch.

  16. У PIC16F84 нет ID. Для этого МК даже dat-файл под PicKit править нужно. Так что или МК посвежее возьмите ( тот-же PIC16F84A ) , или пробуйте сразу данные из памяти программ/eeprom считывать. Ну и следом, рассказали-бы про суть затеи.

×
×
  • Создать...