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

artemkad

Свой
  • Постов

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

  • Посещение

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

    13

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


  1. А если делать полный аналог системы команд x51 на AVR, то затраты будут еще больше. ЗЫ. А зачем делать "полный аналог"?
  2. WMP150 пламенно обещают сделать от -30 до +85. Правда они это обещали сделать еще для wmp50 wmp100, но не судьба - полная функциональность у них -20...+55. -40 до +85 - только хранение/ограниченная функциональность.
  3. Нет, не подумали. Это одно из ограничений на которое так и говорят - не используйте при низких температурах. Понимаешь, в Европе -30 гр. - национальное бедствие ;) . Поэтому военка как была на свинцовосодержащих припоях так и остались. Да и США не сильно торопятся перейти на Pb-free... Кстати, кроме военных Pb-free не распространяется на промышленное, авиакосмическое, медицинское и измерительное оборудование. http://www.elinform.ru/news_1221.htm http://www.compel.ru/rohs http://forum.ixbt.com/topic.cgi?id=48:6206-8 .... http://catalog.gaw.ru/index.php?page=document&id=3516
  4. Не совсем аналог. Еще проще. AVR это аналог x51 вообще без единого уровня, но с автоматически взводимым флагом глобального запрета прерываний при вызове прерывания. С уровнями у x51 сложнее - при вызове прерывания определенного уровня МК запоминает текущий уровень и блокирует прерывания этого уровня и ниже. Т.е. для разрешения всех прерываний в прерывании надо не один такт как в AVR, а 4 цикла (на классике - почти 50 тактов).
  5. Начиная от регистрации не с первого раза и кончая умиранием модуля из-за "оловянной чумы" которой подвержены устройства ниже -30 (в меньшей степени - ниже -13), использующие без свинцовые технологии пайки.
  6. По "даташиту" явно не тянут карточки (до -10). Зависит от эксперемента. Если -30 при работающем модуле - то все Ок, если сперва заморозить, а затем включить - вот тут может быть большой Ой...
  7. :) Оригинально, оценил. У разработчиков компилятора возможностей максимально оптимизировать код под возможности платформы гораздо больше, чем у разработчиков камня (!)общего применения(!) оптимизировать систему фич, что-бы всех удовлетворило. Вот что-то типа твоего acall -> reti можно использовать для сброса текущего приоритета прерываний не смотря на то, что разработчиками камня такой фичи аппаратно не предусмотрено. А тут разработчики камня выкручивались обеспечивая очень мощную фичу на спец.регистр (Y), а его используют просто как регистр общего применения. Угу... ЗЫ. Кстати, посмотрел я реализацию контроллера прерываний в ПЛИС - не сказал бы, что он проще умножителя 8х8. А если еще поставить условие принятия решения за 1 цикл, да еще и как в х51 - он получается однозначно сложнее.
  8. Сильно теоретически можно. Мешает та самая приоритетная система прерываний с правилом "прервать текущее прерывание может только более приоритетное". Нельзя прервать даже прерыванием того-же уровня. Теоретически можно поднять приоритет "соседа", но тогда в этом "соседе" надо анализировать собственный приоритет, что-бы не наделать глупостей. Как ни странно, но простота системы прерываний AVR часто и есть его преимущество. :) А плюс заключается в том, что иногда в прерывании можно разрешить прерывания еще до сохранения контекста. Хотя стоит сперва исключить возможность повторного попадания в текущее прерывание. Т.е. прерывания наинизшего уровня как в x51 эмулируются в AVR одной командой разрешения прерывания в начале обработчика (можно даже еще в таблице векторов). А вообще - в любом длинном прерывании чаще всего есть критическая секция которую надо сделать "как можно шустрей" и "все остальное", которое уже можно обрабатывать при разрешенных прерываниях. Ну, это к создателям GCC... Если им лень было учитывать особенности платформы и они предпочли сделать "как в х86", то кто им лекарь. А особенность заключается в том, что X и Y позволяют сделать честный стеки данных, а не играться со стековым кадром на стеке возвратов. Обычно переключателю задач не атомарность SP до лампочки. Переключение задач обычно делают уже в прерывании т.е. при запрещенных операциях со стеком. Не работай с регистрами таймеров в основном цикле программы (не самое удачное решение), не будет тебе этой "проблемы". ;) Если в обработчике появилась SEI, то все, что требовало "приоритетности" там уже выполнено. Остальной код по важности ниже необходимости обработки того-же EE_RDY.... И о таком в т.ч.. Хотя именно так я никогда не делаю. Разве, что тогда, когда меня интересует не само прерывание, а только его флаг. Обычно обработчик делится на приоритетную часть(которую прерывать нельзя) и остальную (после SEI) Не совсем такие. У MCS51 разрулить выполнение прерываний с равными приоритетами - только последовательное исполнение. Поэтому там длинным обработчикам ПРИХОДИТСЯ ставить наинизший приоритет независимо от их важности т.к. разрешить выполнение ВСЕХ остальных прерываний посреди обработчика весьма непросто Ага... Если только это прерывание "какого-нибудь таймера" само не вызвано таким-же способом из другого прерывания ;) . Тогда вызвать прерывание "от аналогового компаратора" повышением его приоритета будет не суждено. Приведу пример на примере обычного декрементирующего таймера. После возникновения этого прерывания необходимо как можно скорее установить новое значение счетчика (т.е. вроде как наивысший приоритет), а затем выполнить кучу работы которая накопилась за время между срабатываниями (пару десятков мс) и эта обработка не срочная и может занять несколько мс (т.е. надо разрешить остальные прерывания). Вот и попробуй выбрать че больше не нравится при использовании х51-й системы прерываний. Зачем? Просто ставь пораньше SEI если не нужна дальше непрерывность кода. А "наименее приоритетные" вообще начинай с этой команды... Не думаю, что это был совсем уж ляп. Скорее всего в погоне за ценой кристалла делали регистры "так как получилось". С переходом на более мелкую норму ресурсы по "устаканиванию" порядка регистров стали более незаметны вот в новых и поправляют. ЗЫ. Как по мне - наиболее неудобное расположение регистров у Mega48(88/168), но у них и наилучшее соотношение цена/возможности.
  9. Не знал, что гибкая настройка системы прерываний (какие хошь прерывания, такие в данном месте и разрешай) это хуже фиксированных 2-х... Где там у старых AVR "одинаковая периферия" кроме портов? Вот когда сделали в новых кристаллах по 5 UART-ов ;) , вот тогда и начали "исправлять"... А кто SPL вообще трогает?! Кто мешает, если уж сильно охота, запретить прерывания?
  10. Ну тут выход достаточно простой - не надейся на прошивку которая приходит в модулях - переписывай модули на хорошо проверенный вариант. Зачем вторую? Поставь хотя-бы одну и он будет корректно работать! Ну как-бы сказать - по факту модуль сам не слабо греется. Так что можешь смело спускать нижнюю планку градусов на 5-10 вниз. ЗЫ. Кстати, очень большую мину под нижнюю температуру подложили "без свинцовые технологии" - пайка менее устойчива к морозам. Супервизор у китайцев есть - при медленном спадании напряжения проблем не обнаружено (самый наихучший режим при отсутствии супервизора)
  11. Не уверен, что у них подразумевается возможность отключения +2,7В которое идет с модуля...
  12. А еще лучше - во внешнем МК ;) ....
  13. А место в карточке для приема SMS есть? Она часом не забита под завязку? А попробуй слегка подождать - возможно не готова СИМ-карта...
  14. Страница 17. Верхний левый резистор подключить к Vext. Резистор под ним - убрать. Иначе ток течет в ногу модуля через коллекторный переход транзистора (транзистор работает в инверсном режиме).
  15. Подозреваю, что по какой-то причине модуль не принял AT+CNMI=2,2,0,0,0 и пытается заграбастать SMS-ки в память СИМ-ки которая заполнена.
  16. Попробуй так: два транзистора BC817 (npn) база каждого через 20кОм...200кОм подключена к STATUS. Эмитер одного на RX модуля, эмитер другого на TX модуля. Коллекторы к соответствующим ногам МК. На ногу RX модуля резистор 10кОм на STATUS, на ногу RX МК 10кОм на +5В. На STATUS резистор 10кОм на массу (на всякий пожарный ;) ) В общем однотранзисторное согласование с ОБ по правильной и инверсной схеме. Честнее было-бы на полевиках, но я на вскидку не помню шустрых полевиков с малыми порогами....
  17. Бери модем. С питанием, обвеской, корпусом и т.д. Ну и что, что минимум раз в пять дороже. Зато кроме RS232 никаких проблем... :-D
  18. Само собой "квадратики". ЮНИКОД подразумевает два байта на каждый символ в т.ч. и английские (первый байт - 00h). ЗЫ. Хотя вообще-то не твой случай...
  19. Проверь заполнение SMS-ками Sim-карты. Если забита под завязку, то принимать и не будет. Естественно на мобилке примет т.к. там можно принять в память мобилки...
  20. Ладно, вопрос снят. Хотя странно ставить 5 мкс задержку при тактовой в 20 мкс...
  21. По подробнее. На какой частоте общаешься с АЦП?
  22. Ну, честно говоря.... В 90% охранных систем если узнать случайно (или не случайно) код, то для снятия с охраны нужны только пальцы ;) .
  23. Да, есть. Но оно еще более золотое чем вариант с памятью.
  24. Действительно умеют. Правда вместо обвеса голосового GSM тракта надо обвешивать процессор внешней памятью ;)
×
×
  • Создать...