Jump to content

    

artemkad

Свой
  • Content Count

    1556
  • Joined

  • Last visited

Everything posted by artemkad


  1. Развязка интерфейсов

    Статика это большое напряжение с большим сопротивлением и малой энергией. Делать гальваническую развязку от такого совсем не обязательно. ЦитатаСхему прилагаю, как я это вижу... Отличная схема - сперва делаешь защиту, а потом уже приходится защищать саму защиту...
  2. Цитата(Pat @ Feb 5 2018, 14:45) Можно конечно какими либо путями заказывать семплы, но что то никогда этим не пользовался. Все что делаю произвожу небольшими партиями поэтому стараюсь комплектующие подбирать с возможностью купить потом. Вдруг понадобиться срочно изготовить еще экземпляр. Наверное стоит подвести черту. Полностью того что хотел не нашлось, либо дорого либо не купить. Само собой - это и ожидалось. В наше село завозят комплектующие по остаточному принципу, поэтому сперва стоит поинтересоваться на том-же Имраде чего там вообще есть(т.е. по сути что уже коллеги в этом селе используют) и уже из этого перечня выбирать. Особенно это актуально сейчас когда СБУ наезжает на всех кто занимается импортом из России, что закрывает поставки из крупнейших российских складов.
  3. ЦитатаВсё таки для понимания технического текста нужен уровень гораздо меньший, чем 'носитель языка' Книга, если это конечно не тупой перевод даташитов, это обычно больше чем технический текст. Технический текст это SDK.
  4. Цитата'Большинство присуствующих' должны были подтянуться в английском, иначе очень трудно будет - подавляющее большинство информации именно на английском, и только жалкие крохи переводят на русский, и то с большим опозданием. Подтянуться в английском не сильно поможет. Книга нужна для понимания тонкостей работы, а если она на английском, то понять их таки мешает отсутствие владения языком на уровне носителя. Т.е. пока не знаком с английским на уровне носителя языка разницы между изучением книги и изучением SDK практически нет.
  5. Цитата(XVR @ Jan 29 2018, 14:46) А книги Колбана не достаточно? Книга на английском который для большинства тут присутствующих не родной. При таком положении вещей в исходниках и то проще разобраться чем в книге.
  6. Цитатанапример SST26VF032B (стоит в розницу $1.2) Кстати, а у вас эта(или 26VF064) позиция есть?
  7. Структуры данных

    Цитата(sigmaN @ Jan 21 2018, 13:58) #pragma pack(1) вроде как моветон, на сколько я знаю. Плохо знаешь. Моветон использовать его для рабочих переменных из-за оверхеда в коде при работе на 32 разрядных платформах. А там где надо что-бы было как написано, а не как оптимизатор посчитал нужным, там ему самое место. Цитата(sigmaN @ Jan 21 2018, 13:58) Я приведенные ссылки полностью не читал, но в моем понимании бинарность протокола не исключает нормальной сериализации структур и приведения протокола к стандартному порядку байт... Передавать всё в JSON я не предлагал на маленьком контроллере ) Ну если не JSON, то ваять придется нечто свое. А значит вставлять дополнительные поля в передаваемые данные с метаинформацией и разбирать метаинформацию на приемном конце и все это писать своими руками. И что это поменяет кроме оверхеда в передаваемых данных, оверхеда в коде и оверхеда во времени обработки? Теперь надо особо обрабатывать не только на отдельных платформах, а обрабатывать метаинформацию в рантайме на всех платформах. Цитата(sigmaN @ Jan 21 2018, 13:58) По идее вы должны вместо memcpy() реализовать некий метод serialize() который структуру преобразует в поток байтов в соответствии с принятым стандартом(serialization format). На приёмнике обратное преобразование. И никто не запрещает сделать этот протокол бинарным. Передача чего-то вроде JSON или строк - всего лишь частный случай serialization format. По-моему, у топикстартера как раз работа и состоит в том, что приходит некий поток данных который надо разобрать. Т.е. вашим языком - у него вопрос по реализации самой "deserialize()"
  8. Структуры данных

    Цитата(sigmaN @ Jan 20 2018, 19:57) Ну имеется ввиду, что существуют разные архитектуры процессоров. С разными требованиями по выравниванию данных. И даже с разным расположением байт в многобайтовых интах. Таким образом описанная абсолютно одинаково на языке Си структура будет представлена в памяти совершенно по-разному! Если обе системы и для приёма и для передачи будут применять простое копирование этого региона памяти в линию передачи данных то при неудачном стечении обстоятельств вы прините совсем не то что вам отправляли. Например STM8 big endian - вообще редкость, скажем так. На AVR требований по выравниванию нет и все поля структуры лягут в память по порядку без дыр. На STM32 же между uint8 и uint32 в структуре будет padding т.е. дыра. #pragma pack(1) или __packed для описания структуры вполне спасет от возможных дырок и будет гораздо проще чем заниматься сериализацией. Цитата(sigmaN @ Jan 20 2018, 19:57) И вот что-то нашел https://habrahabr.ru/company/xakep/blog/258959/ По-моему в этом "что-то" как раз написано почему сериализацию лучше не делать. По-моему весьма однозначно: ЦитатаWARNING Если дорожишь эффективностью при передаче данных, то отдавай предпочтение бинарным протоколам (если, конечно, у тебя есть выбор).
  9. Ну тогда как-бы без разницы будет на двери ноль, 220В или 360В. Причем даже в случае с мокрой древесиной разность потенциалов токов растекания между дверью и порогом будет безопасной для человека.
  10. ЦитатаЭто если есть арматура - дом может быть кирпичным, а пол деревянным. Т.е. диэлектриком?
  11. Цитата(wim @ Jan 20 2018, 15:06) Дверь должна быть заземлена, считыватель - нет. Слегка не так. Дверь должна быть соединена с арматурой ЖБ плиты здания(уравниваем потенциалы дверь-пол), а уже арматура где-то в здании заземлена.
  12. Структуры данных

    ЦитатаТут уже упоминали, что для передачи данных правильно применять сериализацию данных вместо простого копирования принятых байтов в union? Например? Особенно по части приема...
  13. Цитата(alexvu @ Jan 20 2018, 11:26) Вот поэтому и не заземляют на приборе. Не так. Провод "заземления" прибора подсоединяется не к заземлению, а к системе уравнивания потенциалов(СУП). Т.е. все проводящие поверхности на расстоянии касания обязаны быть соединены проводником. В системе считыватель-дверь это означает, что считыватель сам или через провод "заземление" прибора обязан быть соединен с дверью, а никак не изолирован от неё. Иначе возможно поражение электрическим током между контактом считывателя и дверью. Цитата(alexvu @ Jan 20 2018, 11:26) С другой стороны, если есть УЗО - то "поймать фазу" не опасно для человека. УЗО это конечно хорошо, но грубо нарушать правила надеясь только на УЗО - чревато.
  14. Посмотрел... Первая и самая главная ошибка - токи самого мощного потребителя(GSM) по массе текут сквозняком через всю плату. Че там делается между разными точками земляных полигонов в момент связи и регистрации - сами догадайтесь. Причем в т.ч. между разными точками подключения массы проца и памяти. В первом приближении улучшить ситуацию можно если в коричневом слое разорвать перемычку слева соединяющую массу центрального полигона массы от остального. Это облегчит ситуацию между SDRAM и imx233. ЗЫ. А вообще, так испаганить многослойку это нужен талант.
  15. ЦитатаЕсли заземлять - то только в одной точке (обычно на центральном приборе), но тогда надо изолировать считыватель от двери. Че за бред?! Собрались поймать фазу между считывателем и дверью? На металлической двери считыватель обязан быть с ней соединен из требований безопасности.
  16. Структуры данных

    ЦитатаЗачем кольцевой? Почему не линейный? Приняли посылку разной длины - разобрали, Пока разбираешь, пару-тройку байт из потока теряешь. Что-бы не терять за время разбора кольцевой буфер и нужен. Цитатаможно принимать в другой буфер, все равно в обоих случаях размер памяти не меняется. Меняется. Кольцевой буфер обычно гораздо меньше основного.
  17. Яндекс так-же блокируют. Впрочем, блокировка там только от честных людей. Другое дело, что хз в чем это открывать... Лучше-бы выложили сюда pdf-ки. >>Используется DC-DC конвертер ST1S10PHR, выходной ток 3А по даташиту Традиционные 2 вопроса: Там часом кондер в обратную связь не засунули? Входы согласовали?
  18. Структуры данных

    Примерно так: Кодtypedef union    //rx_tx_packet_union   {     unsigned char buffer[SIZE_RX_TX_BUFFER];        /// принимаемые короткие     short_rx_input        sh_rx;        // короткая посылка приема     tag_packet_check_struct         tag_check;     tag_packet_prog_struct             tag_prog;            //     tag_packet_password_struct        tag_password;      /// принимаемые длинные     long_rx_input        lg_rx;        // длинная  посылка приема        /// передаваемые короткие     short_tx_output        sh_tx;        // короткая посылка передачи     master_packet_struct             master_send;            // /// передаваемые длинные //    long_tx_output        lg_tx;        // длинная  посылка передачи   }rx_tx_packet_union; Ну и пример парочки структур: Кодtypedef struct    // short_rx_input   {     unsigned char     data[2][3];        //     unsigned char     parity[2][3];    //   }short_rx_input; typedef struct    //tag_packet_check_struct   {     unsigned long     rnd            :8;        //     unsigned long      low_bat        :1;        //     unsigned long      button        :1;        //     unsigned long     cnt            :22;    //     unsigned int     signature;            //    }tag_packet_check_struct;
  19. Цитата(Alexashka @ Jan 17 2018, 08:05) Кстати да, производителям филаментных светодиодных ламп на заметку Можно часть нитей делать светодиодными, а часть - обычные вольфрамовые, драйвер упрощается до 1 диодного мостика и конденсатора. ЕДинственный минус -колбу придётся герметизировать и заполнять энертным газом (в чисто светодиодных я так понимаю это не делают) А светодиодам от горячей нити рядом с ними не поплохеет?
  20. Цитата(варп @ Jan 8 2018, 19:50) Да, тоже стал использовать светодиодные лампы... Светят хорошо..., но вот насколько надёжны - пока трудно сказать... Что поражает - в маломощных лапах на 3-6 Вт используют простейшие конденсаторные БП... Куда катится мир... Конденсаторные это еще что - видел лампы с линейным источником тока.
  21. Цитата(zheka @ Jan 4 2018, 08:40) Сильно сомневаюсь, что на данном участке цепи он могла играть роль какой-либо индуктивности, так что единственное предположение - это предохранитель. Я прав? Так делают? Каюсь, сам так делаю. Правда в местах где предохранитель нужен как последний аргумент который сгорит только после физического сгорания половины платы и в местах предсказуемой защиты от идиотов... ЦитатаИ еще вопрос - желтоватые полосы внизу - это наложение меди. Обращает на себя внимание что оно не хаотично, а идет к ножкам транзистора. Чем это объясняется? Вероятно - особенностями пайки волной. ЦитатаНу и самый главный вопрос - на выходе зарядки 6 вольт 0.5 Ампер. Зная особенности функционирования таких зарядок, на какой ток предохранитель целесообразно поставить во входной цепи? Практически любой. Предохранитель в них выполняет косметическую функцию - защищает от пожара после сгорания силовых элементов.
  22. Цитата(Alt.F4 @ Jan 2 2018, 19:19) wim, а если трансформатор пробьет на вторичку и фаза окажется на GND, с которым контактирует человек, или это исключено?... А если заземление отгорит и фаза окажется на GND. Причем фаза от соседа.... GND, если уж приспичило куда подключать, обязан быть подключен к локальной системе уравнивания потенциалов(которая и обеспечивает равенство напряжений в точках касания), а уж она как-то там на домовом щитке подключена к заземлению. И только в такой последовательности обеспечивается безопасность.
  23. В хидеры включены переменные(и константные переменные в т.ч.), что ошибочно. Всем объявлениям(но не extern-прототипам) переменных, а тем более объявлениям которые используются исключительно в пределах одного файла место только в .с-файле. Если есть желание какую либо переменную сделать глобальной(использовать в нескольких файлах), её прототип в .h-файле надо объявить как extern . Если глобальной хочется сделать структуру, в .h-файле объявляется её typedef, там-же объявляется прототип переменной через extern, а сама переменная структуры и её инициализация объявляется уже в .с-файле. ЗЫ. Кстати, PROGMEM это макрос указывающий атрибут переменной поэтому как по мне лучше его объявить до имени переменной. const byte PROGMEM Home_char[] ={4,10,17,31,21,17,31,0}; //Загружаемый символ домика или даже так: PROGMEM const byte Home_char[] ={4,10,17,31,21,17,31,0}; //Загружаемый символ домика Тогда меньше непоняток в написанном возникает.
  24. Цитата(TOL500 @ Dec 29 2017, 23:52) А СоntactID - это номер звонящего? Нет, это Ademco Contact ID Protocol. Распухший DTMF для сигнализаций...
  25. Цитата(Abell @ Dec 28 2017, 08:18) Основным токоограничивающим элементом в этом БП является конденсатор. Нет, в момент коммутации сопротивление конденсатора можно считать равным нулю. И скачек тока до момента заряда конденсатора обязан ограничить другой элемент(он-же ограничивает в случае появления импульсов). Обычно это резистор(220-330 Ом 2Вт), но может быть и комбинация резистор+NTC. Схема вполне рабочая, проверена на нескольких десятках тысяч устройств. Проблем со стабилитронами не было вообще(я там даже вообще обнаглел и использовал стабилитроны в SOD80). Единственная проблема которую я однажды наблюдал это проблема с конденсаторами одного производителя(TOPMAY). Пришлось даже изъять всю партию и заменить кондер т.к. умирал не сразу и устройства обязаны были работать круглосуточно. Но т.к. ни с какими другими производителями проблем не было вообще, склонен грешить именно на производителя. Цитата(Abell @ Dec 28 2017, 11:42) Ну так посмотрите на свой аттач сами, и увидите индуктивность и емкость на входе - это называется LC-фильтр. Ну, вообще-то не совсем так. Z1 и Z2 это не совсем индуктивность. Это ферритовая бусина которая помогает фильтровать всякую хрень(входящую и исходящую) выше 1MГц. Формально там LC есть, но по-факту он на сильно большие частоты и в ограничении коммутационных перегрузок не участвует.