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

esaulenka

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. Раз тут пошли "страшные истории"... pragma pack(n) надо обязательно закрывать pragma pack() При включении заголовка с незакрытой прагмой такие интересные косяки проявляются - все структуры в одном модуле сами собой "упаковываются", а в другом - остаются неупакованными, в зависимости от последовательности #include. Пример для наглядности: a.h: #pragma pack (1) b.h typedef struct .... b_struct; a.c #include "a.h" #include "b.h" b_struct A; b.h #include "b.h" b_struct B; Так вот, A и B получились РАЗНЫЕ, хотя этого вряд-ли кто-то добивался :-) Короче, плохая это прагма, не ленитесь писать атрибуты для каждой структуры.
  2. Да, у меня тоже довольно давно RDI не работает. В какой-то версии даже пункта меню такого не было :-) Если что, могу поделиться DLL'кой из какого-то старого дистрибутива (дата файла - 9-й год).
  3. Это как, простите? Явно ж не схемы зарядки, а схемы защиты. Зарядка на такой ток должна обладать катушкой индуктивности или, на крайний случай, здоровым радиатором.
  4. К слову. При работе с современными (да и не современными тоже) м/с импульсных блоков питания надо хорошо представлять себе, что там унутре и как оно работает. При тупом повторении аппноута могут возникнуть грабли, но как их решать, ни в даташите, ни в аппноуте не пишут. Проверено на собственном опыте. Зато теперь я примерно представляю, как посчитать корректирующие цепочки в цепи обратной связи :-) Ну и да, эти китайцы врут с емкостью как минимум в два раза. Пользуйтесь правильными китайцами :-) Много практических исследований можно подчерпнуть у любителей мощных фонарей - они, как правило, пользуются 18650.
  5. В своё оправдание могу сказать только, что у LP падение напряжения меньше - мне это актуально, т.к. питание батарейное и может заметно просаживаться. Но на самом деле майкрочип в тот момент просто не смотрел, спасибо за подсказку. PS а MCP этот куда лучше ложиться на задачу "запитать RTC (макс. 3.3 вольта) от свинцового аккумулятора (6 вольт)" - я туда цепочку из резистора и стабилитрона ставил. Проект помер, но надо будет запомнить...
  6. 5->3.3 это совсем не low drop по нынешним временам :-) Я для low drop поставил LP2981. Когда, наконец, доберётся до серии, в требование "меньше 10 руб" влезет со свистом.
  7. Во-первых, обнулять глобальные (не локальные!) переменные компилятор Си должен согласно спецификации. А во-вторых, если переменная прямо такая важная, её изначально привести в нужное состояние можно и руками.
  8. LEXIS, не мучайте технологов, поставьте везде зазоры 0.2, у Вас места - вагон. И поясок на центральном отверстии ф7 маловат, на мой взгляд. Его можно сделать типа mounting hole и убрать галку plated, если вам не нужна там металлизация. PS У Вас ошибка: у LM1117 корпус надо бы подключать к средней ноге.
  9. Microwatt, берите пример с Alexashka, он сразу меня понял :-) alexvu, за предупреждение спасибо. Но делать полноценную схему балансировки лениво. Если положиться на китайцев, и решить, что аккумуляторы почти одинаковые, всё не так страшно. Главное, на мой взгляд, - не дать дисбалансу накапливаться. Господа, ещё вопрос, раз тут такая обширная дискуссия вокруг входа enable. Схему монитора напряжения посоветуйте, пожалуйста. Что-то не хочется городить источник опорного + компаратор. Супервизор с настройкой порога поискать?..
  10. LPC111x, I2C monitor

    Господа, а кто-нибудь пользовался режимом мониторинга I2C в новых контроллерах? На шине только три устройства - мастер, слейв, и монитор. Пока передаёт мастер, автомат состояний монитора в режиме slave receiver, данные видно хорошо. Когда передаёт слейв, автомат монитора переходит в состояние slave transmitter, и из регистра данных можно прочитать только ноль. Под регистром данных подразумеваются и data register, и data buffer register - разницы нету. Прерываний в программе никаких нету - тупой цикл, который считывает байтики из I2C, пишет их в FIFO, а оттуда перекладывает в UART.
  11. Зато очень сильно меняется эквивалентное сопротивление конденсатора, вокруг которого всё построено. Хотя... да, я не прав - видимо типичные 55 Ом - это сопротивление ключей (плюс десяток Ом от конденсатора 10мкФ). В условиях задачи сказано, что разъем под зарядку менять не хочется, а контактов в нём только два. А вот тут ничего не понял. Поясните, пожалуйста. Или статью какую порекомендуйте...
  12. Наружу - нет. Но разобрать, а потом аккуратно собрать - можно, благо корпус у неё - из термоусадки :-) Особенность схемы в том, что питается преобразователь от одного аккумулятора, а ко второму он подключается только выходом - 5 вольт вполне должно хватить. Миллиамперы жалко, т.к. вручную управлять shutdown-ом неинтересно, а как это сделать "изнутри", я не знаю. И на сайте у техаса она не находится, только даташиты в "левых" архивах. Надо будет на этой 7660 перемычку boost предусмотреть - она частоту увеличивает (а значит, и сопротивление заметно снижает).
  13. Такая задачка. Есть у меня в личном пользовании девайс, у которого внутри пара последовательно соединённых Li-Ion банок (емкость каждой - около 4 Ач, по заверениям китайцев). Наружу из этой батареи торчат только два провода, средняя точка не выведена (и выводить не хочется - это лишние провода будут болтаться). Проблема в том, что штатная зарядка не обладает достаточным умом и сообразительностью, чтобы заряжать аккумуляторы поровну - у меня за пару лет неспешной эксплуатации набралась разница в 0.2 вольта (сколько в мАч - измерять поленился). Делать (покупать) внешнее балансировочное устройство лень - во-первых, нужно выводить разъем, а во-вторых, это дополнительный геморрой при зарядке. И денег оно стоит... Нашёл хитрое включение инвертирующего преобразователя на конденсаторах: ICL7660, рис.2. Выглядит заманчиво - вставляем устройство внутрь батареи (места там чуть-чуть есть), и оно потихоньку перекачивает заряд. Прикинул: емкость аккумулятора 4Ач, неидентичность двух аккумуляторов - ну, пусть 2%. Итого нам надо перекачать 80мАч. При выходном сопротивлении этого преобразователя в 50 Ом и разнице на аккумуляторах 0,1В получаем 40 часов. Двое суток, вполне нормально - у меня типичный цикл заряд/разряд - неделя. Вопрос: почему эти штуки никто не делает, и где я ошибаюсь? :-)
  14. Тут уже пошла серия совсем не про топикстартера. Это серия про шаманские танцы. Странно это. Либо было не так, либо я чего-то не понимаю. С основной проблемой - чтение регистра пина сразу после записи мой вариант успешно справляется. Ну да, неоптимально, с потенциальными граблями при многопоточности, но работать должно. С этим полностью согласен.
  15. Универсальный совет :-D Самая простая и тупая доработка: // было LPC_GPIO1->FIOPIN |= (1<<14 | 1<<15); LPC_GPIO1->FIOPIN &= ~(1<<16 | 1<<17); // стало int tmp; tmp = LPC_GPIO1->FIOPIN; tmp |= (1<<14 | 1<<15); tmp &= ~(1<<16 | 1<<17); LPC_GPIO1->FIOPIN = tmp; При желании (в ущерб удобочитаемости) можно переписать в одну строку. Ну и поддержу более правильные советы - использовать регистры SET / CLR.
  16. LPC1758 и RAM

    Проблема как раз в том, что между двумя областями памяти расположена "дырка". Если б её не было, можно было б объявить память одним регионом и спокойно использовать целиком. То, что физически эти два банка сидят на разных шинах, ни компилятору, ни программисту не видно. Спасибо фон Нейману :) Кстати, вопрос в тему. Если я не пользуюсь DMA, с точки зрения производительности есть разница, в какой именно области памяти лежат данные? Вопрос именно по LPC17xx с его хитрый структурой шин - основной банк памяти подключен к ядру шинами D-bus, I-bus, "периферийные" (название - из "описательной" части даташита) - по шине system bus, на которой вдобавок вся периферия (через соотв. мосты).
  17. Есть там всё. Вот любопытный документ (гугл - наше всё!). Пролистал, вроде б ток утечки со временем даже слегка падает, т.е. на цифру максимума можно не с такой опаской смотреть. Впрочем, я могу всех граблей не видеть - в наших изделиях от этих батареек только часы работают, им много не надо.
  18. Грубо говоря, да. Надо только учитывать, что емкость слегка зависит от потребляемого тока - чем больше ток, тем меньше емкость. Вероятно, это связано с внутренними потерями. GP, в частности, приводит графики: эффект будет сказываться при нагрузках порядка 1..10 кОм. Советик: посмотрите токи утечки этого электролита. Есть вероятность, что он будет потреблять больше, чем всё остальное.
  19. Ищутся желающие, чтобы подать в суд на производителей SPI-флешек. Они незаконно написали в даташите, что их устройства работают по протоколу SPI !
  20. С программными ошибками я погорячился. Тут всплыла следующая... особенность контроллера: при переходе сигнала на входе из 1 в 0 необходимо "высосать" из ножки 0.65 мА тока. Если источник сигнала такой ток не обеспечивает, ножка подвисает "промежуточном" состоянии с уровнем 2 вольта. Это чудо официально документировано - Logical 1-to-0 transition current (Ports 1..4) max -650uA Дальше в статическом режиме всё работает нормально, нужно всего 50 мкА. Привык уже к CMOS, у которых входные токи сильно меньше 1 мкА. И, видимо, не только я привык... :-) Будем разбираться, как приделать туда какой-нибудь триггер шмидта...
  21. Спасибо. Вопрос был в другом - существуют ли третий (четвёртый и т.д.) варианты? Чтобы поискать в софте.. Первые два варианта подозрений не вызывают - их в исходниках банально нет :-) С пуш-пулом и открытым коллектором более-менее разобрался: в режиме обычного порта работает открытый коллектор, в режиме внешней шины подключается верхний транзистор. Схемы нет, но в табличке уровней выходных напряжений это явно прописано. В связи с этим вопрос: каким образом тут включается внешняя шина? Из-за того, что это в даташите не прописано, делаю вывод, что механизм стандартный для всех 51-х. PS если кому-то интересно, документация.
  22. Свалилась тут такая задачка. Есть у нас изделие на w78e516. Продаётся оно уже лет 5, а автор года три как работает в совсем другом месте. Есть у этой штуки датчик, подключенный напрямую на P2.7 контроллера: низкий уровень - нормальная работа, высокий - ошибка. Недавно датчики поменялись, и выход у них стал очень слабый. И вылезла крайне неприятная особенность - после срабатывания датчика 0 -> 1 -> 0 на ноге контроллера появляется подтяжка (?!). Раньше датчик успешно её "перетягивал", всё было хорошо. Теперь его просто не хватает, чтобы установить на ноге устойчивый ноль. Токи не померял, теперь только в понедельник... Вопросы: - как устроен этот вывод ? В даташите только указание, что он двунаправленный с подтяжками, а также может быть верхней частью шины адреса. Я правильно понимаю, что у него есть только один регистр управления (даташит об этом умалчивает, подразумевая, что порт - стадартный для семейства) ? - в даташите есть опечатка - Source current для P2 упоминается дважды - как для push-pull (до 20 мА), так и как для открытого коллектора с подтяжкой (до 0.25 мА). Кто прав? - как переключается этот вывод? Только setb p2.7 и mov p2 .. ? Чтобы понять, что искать в исходниках. - и вообще, возможно ли включение-выключение этой подтяжки в принципе? На практике я её видел, а вот почитал теорию, и начал сомневаться... PS за вопросы прошу не пинать. Железяка эта существовала по принципу "работает - не трогай", и представление о её внутренностях у меня ещё вчера было весьма смутным. Более того, я с 51-м ядром и не работал никогда...
  23. Ну так надо ждать, пока пользователь отпустит клавишу. Или, по-хорошему, вводить алгоритм подавления дребезга. И в третий раз говорю, что в той строчке есть ошибка. Сейчас ввод цифр производится в основном цикле, а математика - в прерывании. Может, не стоит их разносить? Надо не чучуть. По-хорошему, это надо переделывать, ни разу не пользуясь буфером обмена. Если в программе попадается десяток одинаковых (или почти одинаковых) кусков, это большой повод задуматься, как вынести повторяющийся код в отдельную функцию.
  24. Вот зачем, интересно, мы тут кучу советов надавали?.. И ещё раз... Во-первых, терминология неверная. Во-вторых, комментарии "масло масляное по той причине, что оно масляное" э-э... несколько мешают восприятию. Глобальные переменные так называть НЕЛЬЗЯ. Для глобальной переменной из её названия должно быть очевидно, что там внутри находится. Для локальной это не так критично, хотя тоже некрасиво. Ну вот откуда очевидно, что SIMVOL=4 - это восемь, а SIMVOL=6 - это два?! Это явное место для применения дефайнов (или, что лучше, enum'а). Как уже говорили, длительность ЭТОЙ задержки определяется погодой на Марсе. Кроме того, непонятна необходимость этой задержки в принципе. Нет, конечно. Посмотрите на типы аргументов у sprintf. Для этой задачи подойдёт sscanf, но в данном случае проще вычислять значение прямо при вводе.
  25. Диапазон в окрестностях 450 принадлежит нашей доблестной мили.. полиции. Технически его заглушить не сложнее, чем какой-то другой. Но вот юридически... что работать, что просто "шуметь" там... Не надо этого. Впрочем, если тут обсуждается подсматривающее устройство, юридические проблемы авторов явно не волнуют :-) Ответы на вопросы в топике: - передавать картинку, разумеется, можно, законы физики не препятствуют. - готового оборудования нет (точнее, мне оно неизвестно) - gsm телефон в подслушивающее устройство переделать нельзя.
×
×
  • Создать...