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

artemkad

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    12

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


  1. Ахренеть... А это зачем?

    В GSM-ке от Альтоники помнишь как надо было заполнять номера в нужные ячейки записной? Вот видать кто-то хочет еще раз пройтись по этим граблям.

  2. И если Вы ставите внешний проц с линукс-системой и пишите туда охранную сигнализацию или жпс-трекер, то сколько бы вы не пыжылись, кроме улыбки, это ничего не вызовет.

     

    Скажите, а что делает охранная система внутри модуля когда исчезает GSM-регистрация в сети? А сколько проработает GPS-треккер работающий как закладка от автономного питания? Скажите, если требуется контролировать аналоговый 3-х координатный акселерометр с частотой хотя-бы по сотне выборок в секунду на канал плюс 2-3 аналоговых величины - и как Ваш внутренний АРМ с этим справится?

     

    ЗЫ. Это ведь простые задачи - 3-5 аналоговых входа, потребление на уровне десятка и меньше микроампер, независимая работа от наличия связи. Есть еще такая обычная задача для систем защиты - реакция на событие за единицы мкс.

     

    ЗЗЫ. Что касается Линукс-системы во внешнем проце, такое решение принимают тогда, когда нужен пользовательский интерфейс и работа с дисками и сетевыми устройствами. Т.е. когда очередной раз повторять интерфейсы к типовым устройствам нет времени и желания.

  3. Или достаточно соединить всего пару-тройку ног модуля с землей на плате (например, рядом с антенным выходом)?

    Земляные ноги возле антенны - там протекает больше всего ВЧ токов. Использовать их для цепей питания - подкладывать себе большую свинью с которой потом будете героически сражаться.

    Аналогично с цепью массы возле микрофонных цепей - ни в коем случае нельзя допускать даже возможность протекания тока питания модуля через эту ногу. Иначе с репением микрофона будете сражаться долго упорно и мало результативно.

     

  4. Даже на двухслойке - никаких проблем. Главное тянуть две линии параллельно, не цеплять землю где попало, обязательно конденсаторов емкостью до 100рF (10 и 33pF) и если микрофон выносной обязательно заблокировать сам капсуль мелким конденсатором.

     

    Может кто показать схему, как правильно подключить хотя бы микрофон но не в дифференциальном включении а так чтобы один из выводов микрофона был на массе.

    Никак. С вероятностью близкой к 100% в Вашем исполнении такая схема приведет к неустранимым помехам. Весь фокус в том, что массы бывают разные и на один правильный вариант есть десяток неверных.

  5. 2) А если на против Bluetooth модуля сделать вырез , по размерам сопоставимый с самим модулем , так что бы если смотреть с наружи модуль был "утоплен" в вырезе на 5мм ?

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

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

  6. Как-то натыкался на взаимовлияние каналов. Лечилось или полным отказом от sleep-режима или холостым преобразованием при переключении канала. Последнее как по мне проще всего делать выключением АЦП в начале прерывания, а затем включением при запуске. Тогда АЦП делает полный цикл в 25 тактов, что эквивалентно первому выброшенному.

    Что-то типа такого:

     

    #define ADCSRA_ON     (1 << ADEN)|(1 << ADIF)|(1 << ADIE)|(1<<ADSC)|(1<<ADPS1)    
    #define ADCSRA_OFF     (1 << ADIF)    // выключение АЦП    
    
    __interrupt void ADC_INT (void)
    {
      unsigned int adc = ADC;            // Считываем значение
    //.....
      ADCSRA = ADCSRA_OFF;                //полное отключение АЦП
    //.....
      {
    //.....
        ADMUX = MUX_12V_IN;
    //.....
      }
    
    //.....
        ADCSRA=ADCSRA_ON;
        return;
    };

     

     

    // Read the AD conversion result

    word read_adc(byte adc_input)

    {

    ADMUX=adc_input;

    // Delay needed for the stabilization of the ADC input voltage

    delay_us(10);

     

    // Start the AD conversion (ADSC)

    ADCSRA|=0x40;

     

    // Wait for the AD conversion to complete (ADIF)

    while ((ADCSRA & 0x10)==0);

     

    ADCSRA|=0x10;

     

    // Обнуляем мл. бит

    return ADCW&0xFFFE;

    } // read_adc

     

    Функция read_adc сгенерирована генератором кода CvAVR. Я её не менял.

    Зря не меняли. Она оставляет работать АЦП после преобразования и при этом не стирает бит флага прерывания при запуске нового преобразования.

    Откуда уверенность, что это:

    // Wait for the AD conversion to complete (ADIF)
    while ((ADCSRA & 0x10)==0);

    ловит результат этого преобразования, а не предыдущего - уже готового на момент входа в процедуру???

  7. У меня как раз всё упирается в выбор опорного напряжения, т.к. датчик еще не готов и будет "затачиваться" именно под ИОН АЦП. Хотелось бы добиться максимальной точности в АЦП.

    Дык вроде все понятно написано - сигнал и опорник не выше 2,4В. В т.ч. и усиленный сигнал (что вроде и так понятно). Иначе линейность и точность накрываются большим медным тазом...

    Если выход датчика абсолютный - используй внутренний 1В, если относительный - Vcc/1.6 .

  8. а включать BOD - тоже не вариант, потребление от батарейки возрастает почти на порядок

    В новых AVR (PA) используйте коммутируемый BOD. Или прежде чем писать EEPROM проверяйте АЦП хватит ли питания для записи.

  9. А эту ситуацию устранили? и каким образом? тупо многократным чтением EEPROM?

    Мы небыли связаны с производителем этих систем. Поэтому устранили самым простым способом - перестали закупать эти модели... :twak:

  10. А можно подробнее про это.

    Подробнее - двусторонний брелок системы Pantera XS-3300....

     

    Дело в том, что в устройстве, которое я сейчас делаю (пока работает одно, всего собираюсь сделать пять штук) я тоже читаю EEPROM только при подаче питания.

    А как правильно?

    Правильно - регулярное обновление. Как вариант - выбрать некоторое событие (нажатие на кнопку или к примеру выключение зажигания) по которому устройство проводить через RESET - с полным обновлением памяти (кроме статусного регистра флагов) и битов портов.

    ЗЫ. Ну и естественно если читать EEPROM однократно, то при любом RESET (в т.ч. и по WDT), а не только при подаче подаче питания.

    ЗЗЫ. А вообще - если переменная в EEPROM не вижу смысла ее хранить в другом месте.

  11. Ладно, пусть я не умею правильно обращаться с еепром (писать программы, разводить платы), но дело в том, что и в промышленных устройствах я несколько раз сталкивался с тем, что данные в eeprom портились. Учитывая, что я имел дело с очень небольшим количеством устройств, то проблема наверное все таки есть.

    Причин может быть воз и маленькая тележка. Причем 99% - вина разработчика.

    Думаете в RAM долговременно хранится лучше чем в EEPROM?

    Я не знаю, предполагаю, что лучше, но сомневаюсь, поэтому и спрашиваю.

    Неправильно предполагаете.

    Я лет пять назад столкнулся с ситуацией в которой устройство (брелок охранной автосигнализации) через несколько недель непрерывной работы (батарейка постоянно включена) терял некоторые данный в RAM(сериальный код блока). Разработчики этого устройства, которое выпускалось десятками тысяч штук сделали бредовую ошибку - читали содержимое EEPROM однократно, только при подаче питания.

     

    Это вроде бы это у первых AVR были плохие внутренние супервизоры, а в новых вроде бы нормальные.

    У первых - супервизоров не было вообще.

     

  12. Я чаще всего использую LM2931.

    :D Не на много лучше 78L05 . Требует на выходе минимум 50мкФ иначе начинает звенеть и потребляет больше 11мА при низком входном напряжении.

    ЗЫ. Топикстартеру - на будущее. Крайне плохой тон ставить на выходе стабилизатора емкость больше чем на входе. Это грозит обратным напряжением при выключении устройства и как следствие - выходом из строя некоторых типов стабилизаторов.

  13. Если бы вообще устройство не работало возможно это бы и помогло. а получается что работает только на чтение.

    Именно так и работает когда BOR выше питания... Сигнатура и фьюзы читаются, а вот стирания и записи никуда нет.

    ЗЫ. Сам на эту особенность неделю назад напоролся. Ругался долго и заковыристо ;) .

  14. Насколько я понимаю, вероятность порчи данных в eeprom AVR большая

    Не правильно понимаете. Вероятность самопроизвольной порчи - крайне низкая. Порча происходит при попытках записи в условиях недостаточного питания или при банальнейших глюках ПО (к примеру при попытке чтения EEPROM в прерывании, без защиты содержимого служебных регистров, в момент ее записи в основном цикле)

    При включении прибор читает копии уставки из еепром и если есть больше половины одинаковых, то проверяет лежат ли они в допустимых пределах, если да, то эта уставка присваивается переменной в RAM и дальше прибор с ней работает.

    Думаете в RAM долговременно хранится лучше чем в EEPROM?

  15. Вроде capture работает по фронту импульса.

    Работает по обоим фронтам (какой укажешь и можно менять по ходу дела) и по результату компаратора. Измерить длительность нуля - очень просто. Ловишь падающий, меняешь в прерывании каптура на нарастающий и запоминаешь текущее. В следующем прерывании вычитаешь текущее от запомненного = измерили.

    Плюс можно компарами ставить ограничения на допустимые пределы длительности нуля/импульса.

  16. Т.е. Вы предлагаете так сделать?

    2928290.gif

    Запитайте МК не от зарядки, а от основного DC/DC плюс диод от АКБ на выход DC/DC.

    Кстати затворы ключей прямо к контроллеру можно подключать? 3,3 В хватит для полного открывания?

    Нельзя. Для правильной схемы (с p-канальными полевиками) для открывания хватит, а вот закрыть не сможете. Для нарисованных n-канальных транзисторы будут в линейном режиме и на выходе будет не более 2,5В (схема - общий сток).

  17. ILYAUL, считайте что хотите.

    Чем вам не понравилось слово прямоугольный, не понимаю.

    Наверное тем, что когда речь о "0" и "1" или о протоколе, они все прямоугольные... Это не информативно.

    Надо знать как передается эти "0" и "1". Это может быть просто уровень, это может быть скважность, это может быть период(частота), это может быть что-то еще. Вариантов там воз и маленькая тележка.

    И вообще, что Вы знаете о сигнале кроме того, что он прямоугольный?

    ЗЫ. А вообще, самый разумный был совет - используйте запоминающий осциллограф или логический анализатор и внимательно рассмотрите сам сигнал. Пока половина советов тут сводилась к попытке сделать простейший лог. анализатор подручными средствами...

  18. наверное Вы хотели написать ждать активности на ноге TXD модуля =).

    :blush: ... угу...

    Там эта активность начианает проявляться до появления STATUS и если ответить этой активности(определенным образом) - модем уходит в доунлоад моде.

    Не начинается. Для перехода в режим программирования обмен в первые 50мс после подачи питания на модуль начинает внешнее устройство байтом синхронизации. Если байта нет, то модуль и не дергается...

    Служебная последовательность “00 49 49 49 49 FF FF FF FF” проходит уже после Status-a. А если выключить автоопределение скорости, то можно ловить вполне вменяемый RDY ...

  19. Включили модуль импульсом на поверкей и ждем STATUS.

    Для тех, кто любит экономить ноги - можно ждать активности модуля на его RxD Никто ведь не мешает включить приемник USART-а и ожидать служебную последовательность в качестве признака успешного включения модуля...

  20. Диаграммы с временами. Там все понятно.

    Р-р-р... Китайцы опять вернулись к неточным диаграммам включения. Лучше взять более старый вариант. Там отличие в том, что Delay считается от переднего фронта а никак не от заднего. Иначе по этой диаграмме получается, что пока не отпустишь Powerkey, Status не увидишь.

  21. вижу что статус поднимается на очень короткое время (после процедуры включения), а потом опять падает в ноль и больше модуль не отзывается, только полный рестарт, со снятием питания и помогает. После снятия и подачи питания, все нормально происходит, все стартует, но вот после выключения никак. Уже второй вечер сижу ломаю голову

    А модуль часом при этом не ругается - например на низкое питание? Или на высокое питание - если стоит в цепи обратной связи основного стабилизатора лишний кондёр.

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