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

Eddy71

Свой
  • Постов

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

  • Посещение

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


  1. Пол дня продолбился, пытаясь смоделировать звук колокольчика ("Дзинь..") и что-то никак. Пробовал ШИМом уменьшать к концу звучания заполнение, игрался со скоростью "спада" - всё равно похабненько получается. Кто уже воевал с похожим делом? (дошло до смешного - переслушал у друзей на машинах, у родни в холодильниках незакрытые двери - галимо как-то всё..)
  2. По ходу обучения писанию на Си возник глупейший вопрос: ... Извиняюсь, вопрос снялся. Таки вспомнил.. :)
  3. Попробовал разные варианты компиляции, похоже PCW не делает различий между static const и просто const. Поглядел в результаты компиляции - и так и так правильно. В заголовочный файл вытаскивать вычисляемую константу (пока) смысла не вижу. Когда её значение подбирается (на этапе "вылизывания" процедур) её удобно держать перед глазами (и править, если что-то не так). Я прикрутил компилятор к любимому MPLABу, а он после компиляции открывает заново main.c и после перешивки контроллера и "мучании" платы если надо подкорректировать значение константы это удобнее сделать тут же. Тем более константы (пока их в программе 4 у меня глобальные и используются в нескольких процедурах) расположены в начале файла и их тут-же можно подправить не переключаясь между файлами.
  4. Исчерпывающий совет. Одно не совсем понятно. Почему константу еще и static надо усугублять? Ведь константа по-определению не меняется в процессе исполнения программы..
  5. Мне переприсваивать не надо. У меня читается АЦП И затем сравнивается со значениями Max и Min. То есть с константами, которые никоим образом не меняются при работе программы. Понимаю, что проблема яйца выеденного не стоит, тем более работают оба варианта одинаково, просто хочется разобраться с логикой работы компилятора, чтобы потом глупых вопросов не задавать. Вот это код: #define VoltageMax (2.5/(4.18/1024)) volatile unsigned int16 ChargeMax = VoltageMax; преобразовался в: 0160: MOVLW 64 0161: MOVWF 2E 0162: MOVLW 02 0163: MOVWF 2F Зато в случае с константой значения выплыли только при сравнении: value>ChargeMax превратилось в 00E7: MOVF 34,W 00E8: SUBLW 01 00E9: BTFSC 03.0 00EA: GOTO 0F2 00EB: XORLW FF 00EC: BTFSS 03.2 00ED: GOTO 0C3 00EE: MOVF 33,W 00EF: SUBLW 64 00F0: BTFSS 03.0 00F1: GOTO 0C3 В предидущем случае в том же кусочку вместо movlw шли movf и размер кода рос. Так что определение значений : const unsigned int16 ChargeMax = (unsigned int16)(1024 * 2.5/4.18); Оказалось самым правильным. :)
  6. Вротмненоги!... Хотел показать - откомпилировалось без ошибок. Правда аномалия: const unsigned int16 ChargeMax = (unsigned int16)(1024 * 2.5/4.18); const unsigned int16 ChargeMin = (unsigned int16)(1024 * 2.5/4.10); после такого пишет Memory Usage: ROM38% RAM30% А после такого варианта: #define VoltageMax (2.5/(4.18/1024)) #define VoltageMin (2.5/(4.10/1024)) volatile unsigned int16 ChargeMax = VoltageMax; volatile unsigned int16 ChargeMin = VoltageMin; Memory Usage: ROM39% RAM36% Непонятно..
  7. Сейчас пытался дефайном вставить - ругается, зараза.. Сам дефайн "съедает". А вот потом присвоить переменным не выходит. ОЗУ тратить не хочется..
  8. Остановился на этом варианте. Хоть он и "самый длинный", но с учетом того, что я только осваиваю компилятор, он самый наглядный. Хотя и другие варианты откомпилировались без ругани. Интересно, почему писатели юзер мануала не предположили, что кто-то захочет такое вставить в свою программу.. Спасибо большое всем. :)
  9. Возникло желание "попросить" компилятор (PCW) при компиляции рассчитать значение константы (на этапе отладки устройства приходится часто подбирать значение). Пытаюсь вставить такое: const unsigned int16 VoltageMax = 2.5/(4.18/1024); Ругается. Приходится вручную подставлять 612. Если не указываю, что это константа, компилятор напихивает библиотек и прошивка "раздувается". Что я не так делаю?
  10. Блин, сколько написано... А Гугол совсем забыли... Дитчики уровня Обратите внимание на рис.3. Полностью изолированный от "среды" и неподвижный датчик. Похожую штуку в похожих условиях эксплуатации (только объем был малость побольше) в "безумные 90-е" мы с друзьями одному колхозу на свиноферму делали. Делалось из подручных материалов и деталей уже не сильно помнится (по-моему этот "конденсатор" был прицеплен к мультивибратору на 555 и контроллером мерялась частота). Но ОНО до сих пор успешно трудится..
  11. Кабель 8мм еще и длинной 100м - это воплощение мечты о рае (для бомжей-собирателей цветмета). Если не внутри охраняемого помещения (еще и с достаточно порядочным персоналом внутри) я б так не стал рисковать.. В этом небольшая загвоздочка. Хорошие усилители с диф.выходом стоят заметных денег. Поэтому Low Cost не выходит.. Насколько я знаю, до 200м по витой паре бегает без усилителя. Есть одно НО. И на конце передачи и на конце приема надо ставить симметрирующие трансформаторы. Штука стандартная, в продаже бывает часто и стоит недорого. Выглядит как ферритовое колечко с двумя обмотками. Дешево и сердито.
  12. Глупый вопрос: зачем было полевики ставить, еще и экзотику (в закромах у наших торгашей такого даже нет..). Обычные самые-присамые дешевые ВС847/857 в такие места обычно ставят. Эсли биполярный полностью открыт, то на нём практически ничего не падает (во всяком случае осцилом практически не видно). Зато если случайно сдохнут (ну пинцет не туда угодил :) ) так и не жалко будет..
  13. Боюсь сморозить чушь (только начинаю изучать), но я обычно (в асме) работу экрана выношу в отдельную, изолированную от всего функцию. У неё нет входных параметров (кроме отображаемого буфера, в который программа пишет необходимые вещи). По прерыванию вызывается процедура экрана, которая сама через указатель из буфера берет байт, перекодирует и выводит в порт. Указатель на буфер и таймер инкрементируется внутри прерывания и программа (основная) не знает, что там экран делает. То же самое с кнопками.
  14. О май гад... В асме это проще выглядит... ;-) Во всяком случае, мысли впихнуть перекодировку ASCII->LED у меня не возникало.. На семисегментнике ведь много не нарисуешь и в 99% хватает минимума типа Err F-1 F-2.. Постараюсь подумать, как свою мысль перевести на общечеловеческий (Си) язык..
  15. picc pic10f

    Так на майкрочипе нашару С18 можно слить. Студенческая версия полностью работает то ли месяц то ли 2. Потом сносишь/ставишь заново. Халява.. По-идее оно должно работать корректно. Когда одна контора и камни и компилятор под них делает.
  16. Может меня глаза подводят, но я не увидел на схеме напряжение питания. Если там 3 В, то голубые светодиоды если и будут светить, то очень вяло. Если 5в, светить должно как солнышко. Не помню нагрузочную способность Меги, но по-моему схема и без транзисторов должна прекрасно работать. Может "отсечь всё лишнее"? Чем схема проще, тем надёжней она работает. (с)
  17. Иллюстрация на тему "не бывает пьезиков в акселлерометрах" (случайно под руку сегодня попала)
  18. Меня количество смущает. Если 3-5 штук то это мелочи. А вот если (чтобы ВЭД на предприятие не оформлять) 1000 штук.. Несколько лет назад у меня друг на Максиме сэмплов назаказывал баксов на 100. Так его таможенники замучали. Под конец он уже хотел вообще от получения отказаться и плюнуть на всё. (он тогда кардиограф делал "для семьи, для дома", а цены на комплектуху у местного диллера были просто заоблачные). Правда всё в конце концов обошлось несколькими бутылками коньяка + закусь..
  19. Эта мысль в ходе мозгового штурма тоже всплывала. Забанили её по причине, точнее множеству причин. 1) тысячу битых сидиромов найти будет тяжко; :) 2) головки таки разные (жесткость подвеса, параметры катушек); 3) чтобы получить напряжение, с которым можно работать встроенным АЦП нужно усилитель ставить с кУ около тысячи. Для устройства с батарейным питанием это расточительно. Пьезик (из "наколенных" способов измерения) пока самый экономичны. На втором месте грубый аналог начинки акселерометра - емкостной датчик. Благо аппнот по этому поводу сейчас много выложили..
  20. К сожалению, мои тоже. По лёгкому не получается.. :( Чем ближе "час Ч", тем больше я склоняюсь к этой же мысли. Попутно подискиваю альтернативные пути поставок комплектухи. На данный момент рекорд (снизу) по цене, что удалось нарыть 6,5 американских рубля за 2-х осевой акселерометр. Надеюсь, удастся дешевле найти. Откровенно говоря, это была самая первая мысль (не игрушки колупать, а гироскоп). Но цена на него куда выше цены, которую клиент готов платить за целое изделие. На Дигикее нашел акселерометры по 2,75 при партии под 1000 штук. Теперь думаю, как таможня к такому отнесется, если частным порядком покупать.. Летом я на Е-бэе приемничек покупал за 500 и проблем не вознило..
  21. movf x,w subwf y,w bnc дальше { ... } У PICов память в словах. Для того же 628-го 2к слов. 1 такт - одно слово. 4 машинных слова. Это много?
  22. Может вопрос и глупый, но почему не смотришь asc от ведомого? После каждой посылки ведомый отвечает (если он готов к приёму, конечно). Может память сейчас занята (той же записью), а в неё пихают данные без её на то согласие..
  23. Спасибо за ссылки, почитал. Позицию из последней ссылки нам предложили по $20 при количествах до 1000. Это дорого. Зато в процессе поисков узнал, как звать датчики еще: tilt sensor, inclinometer, clinometr. Правда всё довольно кучеряво стоит. Желтенткая коробочка clinometer с разрешением 0,01 градуса стоит аж 400 бакинских.. Вариант с проволочками-веревочками отпал после посещения будущей зоны эксплуатации. Загажено всё жутко. Вариант-прилипала самый оптимальный. Залили продукт в контейнер, поставили контейнер на отстаивание, мастер участка прилепил коробочку. Время пошло. Светодиодик пыхает. Время вышло - загорелся. Ящик уходит на другой участок, коробочку отлепляют и магнитят на следующий контейнер. Если в другую смену кто-то ящик двигал/поднимал - тревожная индикация поможет отшлепать виновного.. Сейчас думаю над вариантом-симбиозом всего увиденного/прочитанного/услышанного. Плоский груз на упругой пластине и емкостное измерение. На встроенном компараторе контроллера генератор в частотозадающей цепи которого этот датчик. тот же PIC10F200-12F629 туда с головой. Осталось придумать, как аппаратно резонансные колебания груза устранить. Получится "неинтегральный" 1-axis акселерометр.
  24. Я даташиты проглядел первые под руку попавшиеся (AD & TI) там емкотные сенсоры. До этого читал (не помню, чьё творение), там датчик был в виде коробка размером со спичечный и нарисованы были 3 пьезо пластинки в ортогональных плоскостях.. Утром глядел, как Panasonic начала для кого-то делать с жидким детектором (там электроды в герметичной колбе и хатрый спирт заплит). Куда-то в автомобили это дело позиционировали.. Пока мне идея с полоской из бронзы нравится по простоте. Правда чувствительность к вибрациям и колебания груза на частоте собственного резонанса остаются. Жидкостной наверное стабильней, но трудоёмкость исполнения больше..
  25. Это была первая мысль. Но знакомство с условиями производства, конструкцией ящиков и культурой обслуживающего персонала привело к мысли о необходимости защитить коробочки и материальных интересов заказчика. Пока жду акселерометры, но мысли всё же крутятся вокруг пьезиков - внутри акселерометров они же и стоят... Только стоят больно много.
×
×
  • Создать...