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

=AK=

Свой
  • Постов

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

  • Посещение

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

    5

Весь контент =AK=


  1. Непонятно что автор подразумевал под словом "плавно". Может, не "равномерно", а "монотонно"? Может, у него яркость скачет? k почему-то меняется от 30 до 3500; скорость этого изменения (при нажатии на кнопку), похоже, велика; функция delay_us(1) дает непонятно какую задержку. При 50 Гц полупериод 10000 мкс, чтобы все работало монотонно delay_us(1) должна обеспечивать задержку не более 10000/3500=2.85 мкс. Если больше, то после минимальной яркости будет прыжок на максимальную. Если delay_us(1) дает 2.85мкс, то delay_us(30) даст задержку всего в 85.5мкс, и при нажатии на кнопку счетчик k установится в 3500 или отмотает в 30 примерно за 350 мс, считая что полный цикл выполнится примерно за 100мкс. Глазом не успеешь моргнуть. PS: На самом деле все гораздо хуже, т.к. прерывание не отдает управление сразу же, как должно было бы делать, а "держит" до тех пор пока не зажжет симистор. Поэтому время исполнения основного цикла зависит от угла поджига, чем меньше яркость - тем "инерционнее" становятся кнопки. Лучше бы так не делать.
  2. Логично :) | есть общеупотребительный знак для ИЛИ для всех, кто печатает на обычной ПК клаве, и это не связано ни с Верилогом, ни с Це. Бо более адекватного знака для И чем & на этой клаве нет. Иначе знаку V нет подходящего комплемента, ведь ни Л не подходит в качестве И, ни ^. Так что V в качестве ИЛИ только сбивает с толку :) Дело практики, имхо. На то и форум, чтоб спрашивать и получать разумные объяснения, чем долбаться в одиночку. Спасибо. :cheers:
  3. ARM за доллар

    Luminary Micro аннонсировал сверхдешевый маленький ARM, http://www.luminarymicro.com/ http://www.ktvotv3.com/Global/story.asp?S=4684621 Купить в штучных кол-вах за пару долларов можно в Маузере, http://www.mouser.com/index.cfm?&handler=d...d&N=0&crc=false
  4. Тестовый стенд, состоящий из ПК, стабильного (но не особо точного) источника калибровочного напряжения и точного цифрового вольтметра, подключенного к ПК по RS232 . Программа на ПК считывает показания калибруемого устр-ва и показания вольтметра, обрабатывает и записывает результаты в EEPROM калибруемого устр-ва. Стенд не "специальный калибровочный", а универсальный тестовый стенд выходного контроля. Кроме калибровки он заодно тестирует функциональность, присваивает серийный номер устройству, ведет журнал (базу данных), печатает сертификат, и пр.
  5. Интересно было бы найти объективное сравнение производительности разных 8-битных архитектур. Что-то вроде EEMBC Consumer Benchmark, которая для 32-битниых выглядит так: http://www.ptsc.com/images/performance_density.jpg Довольно очевидно, что 51-е ядро вряд ли будет даже в первой десятке, так же, впрочем, как PIC16, HC08 и пр. старые архитектуры. Ядро AVR вполне может оказаться среди лидеров, имхо, хотя тоже не все там идеально, поскольку RISC. Кстати, еще интересно где бы оказался Тесей при таком сравнении.
  6. Единица или нуль. Вот и я подумал, нафиг там 1.0 вольт? :) То есть, в более общепринятой нотации, подразумевалось 1|0 Потому что flt - переменная(а не сигнал!). И изменяясь в ходе процесса она сразу становится доступной дальнейшим операциям процесса. Поэтому последовательное присвоение flt[0]:=Rxd и дальнейший сдвиг целого flt на один разряд приводят к записи в flt[0] нуля(должно же там чтото появиться :) ), Почему 0, а не 1? :) В конечном счете все свелось к тому, как на самом деле работает оператор сдвига sll. По моему, совершенно не очевидно, что он вообще должен хоть что-то присваивать младшему разряду, будь то сигнал или переменная. Тем не менее, мне лучше было бы сдвиговый регистр прописывать одной командой, типа flt := flt(3 downto 0) & Rxd; Здесь нет возможностей для множественного толкования, как в случае с sll Что ж касается filtered, то, получается, вполне можно сделать его не сигналом, а локальной переменной. От этого ничего не должно измениться, только сдвиговый регистр shr надо делать так же, как flt
  7. Дык, какие могут быть проблемы? Неужто в Маузере нет ничего подходящего? Помнится, там было полно недорогих звуковых ОУ от NJR
  8. Нет мажоритарного голосования, я хотел получить триггер, который взводится по трем 1 и сбрасывается по трем 0. В списке должны быть все сигналы, изменение которых сказывается на процессе. Детское объяснение: иначе Квартус ругается :) Что такое 1V0? Почему присваивается flt[0]=0 ? Я не понял, почему это должно происходить?
  9. Пытаюсь делать тривиальный фильтрик на входе UART-а, чтобы короткие выбросы не вызывали ложного срабатывания. Фильтр делаю на сдвиговом регистре flt, первые два каскада используются для подавления метастабильности, последние 3 каскада сравниваю на все 0 или все 1 и, соответственно, взвожу или сбрасываю бит результата shr(0), который затем вдвигаю в другой сдвиговый регистр shr process(clk16x,Rxd) variable flt :unsigned(4 downto 0); variable shr :unsigned(3 downto 0)l begin if rising_edge(clk16x) then flt(0) := Rxd; flt := flt sll 1; if flt(4 downto 2) = "000" then shr(0) := '0'; elsif flt(4 downto 2) = "111" then shr(0) := '1'; end if; shr := shr sll 1; end if; end process; Проверяю на симуляторе - полные дрова, не работает, не фильтрует ни фига. Почему? Переделал подубовее, ввел внешний сигнал filtered, и во второй регистр вдвигаю уже его process(clk16x,Rxd, filtered) variable flt :unsigned(4 downto 0); variable shr :unsigned(3 downto 0)l begin if rising_edge(clk16x) then flt(0) := Rxd; flt := flt sll 1; if flt(4 downto 2) = "000" then filtered <= '0'; elsif flt(4 downto 2) = "111" then filtered <= '1'; end if; shr(0) := filtered; shr := shr sll 1; end if; end process; Проверил на симуляторе - все ОК, работает. Это я чего-то не понимаю, или симулятор глючит?
  10. Вообще-то любой подойдет. Лучше использовать таймер и узел Capture Comparator, который выдает заданную частоту аппаратно. Тогда из всего программирования надо только настроить железо. Если такого узла нет, то проще всего выдавать заданную частоту на программных задержках.
  11. Умный дом.

    Например, вот так RS485 | |--master | |--slave | |--slave | ... | |--slave
  12. Умный дом.

    Хорошее описание некоторых популярных ИК протоколов http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm По поводу интерфейса все намного сложнее. Надо сначала определиться с логикой обмена: 1. Мастер-слэйв, логическая звезда. В сети есть только один мастер, все остальные - слуги. Разговор всегда происходит между мастером и одним из млуг, слуги между собой сами разговаривать не могут. Мастер по очереди опрашивает всех слуг. Если у слуги есть новая информация (например, нажата кнопка), мастер получает ее, затем по своим таблицам смотрит кому она нужна, и рассылает исполнительным механизмам. Достоинства: простая реализация; отсутствие столкновений, легкои надежно делается на RS485 Недостатки: для получения хорошего времени реакции скорости обмена должны быть довольно большими (порядка 100кбит/сек); центральный мастер является критическим звеном, если мастер помрет - ничего работать не будет. 2. Peer-to-peer В каждый момент времени в сети есть один координатор. Координатор по очереди срашивает остальные узлы "тебе нужно управление?". Если да, то узел получает от координатора управление (токен) на какое-то время. После этого узел сам передает другим узлам информацию, по окончании обмена рапортует координатору. Если координатор помирает, то остальные узлы рано или поздно это обнаруживают по отсутствию опроса. После этого они "договариваются между собой" и назначают нового координатора. Достоинства: отсутствие столкновений, легко и надежно делается на RS485; обмен может быть ускорен по сравнению с (1), особенно если надо обмениваться большими пакетами; надежность выше, т.к. обмен не зависит от работоспособности одного узла. Недостатки: довольно сложно реализовать, много возни; скорости обмена все равно должны быть довольно большими, чтобы координатор мог быстро передать токен. 3. Анархия - мать порядка (CSMA) Координатора нет, мастера нет. Кому надо что-то передать - захватывает интерфейс и передает, после этого замолкает. Проблема возникает в тот момент, когда нескольким узлам взбредет передавать в одно и то же время. RS485 для этого не подходит, т.к. не приспособлен для работы со столкновениями. Здесь напридумывано много вариантов, например 3.1. "По фигу, рано или поздно пробьемся" Узел тупо передает свое сообщение и ждет подтверждения приема. Если ответа нет, исполняется псевдослучайная задержка, и передача повторяется. Надежда на то, что два столкнувшихся узла сделают разную задержку. Это вариант довольно гнилой, зато относительно простой. 3.2. Обнаружение столкновений (CSMA/CD) Узлы "слушают" линию во время передачи и обнаруживают, что произошло столкновение. В этом случае происходит "разборка" тем или иным способом, один передает, другой встает в очередь. Примерно так работает LON 3.3. Избегание столкновений (CSMA/CA) Линия работает по принципу "монтажного ИЛИ", один уровень "сильнее" другого. Узлы "слушают" каждый бит во время передачи и обнаруживают, что кто-то передает "сильный" уровень, в то время как они сами транслируют "слабый" уровень. После этого они тихо отцепляются от линии и не мешают "более старшим ребятам" разговаривать (первые биты в пакете задают приоритет). Последний вариант - самый интересный. Так (или примерно так) работают CAN, EIB, C-Bus. При этом физическая скорость обмена может быть очень низкой (в C-Bus, например, всего 5 кбит/сек), а реактивность получается очень высокой, особенно если информация передается не одному узлу (как в том же LON в обычном режиме), а сразу всем, широковещательно (как в EIB, C-Bus и в кривовато реализованном широковещательном режиме LON).
  13. Навороченно как-то получится. Если есть бустер для старта, то почему этот бустер не может работать как основной преобразователь, нерегулируемый? Сделать задающий на 555, потом D-триггером поделить частоту и получить симметричные прямой и инверсный сигналы. Далее обычной логикой "вычесть" из них импульсы 555, чтобы получить гарантированную "мертвую зону". Немного разогнать по мощности (той же логикой), и драйвить этим два NPN транзистора, классический пуш-пулл с двумя первичными обмотками. Достаточно широкая "мертвая зона" позволит использовать довольно медленные транзисторы.
  14. Ведь особая стабильность 32кГц не нужна, она влияет только на высоту звука в звуковой индикации, верно? Тогда можно использовать почти любой генератор. Я бы взял какой-нибудь дешевый мелкоконтроллер со встроенным RC-генератором (хотя бы PIC), и сформировал бы частоту при помощи PWM-выхода, если он есть, или даже чисто программно, если узла PWM нет.
  15. У них два. Есть и свой ISE симулятор, и Моделсим. Надо попробовать пошарить по меню и настройкам... Признаться, я в эту сторону даже не копал, т.к. мне сказали, что в Квартусе функц. симуляция возможна только в платной версии при помощи Моделсима, я и поверил...
  16. Спасибо. Все-таки я что-то не понимаю. Алтера описывает типичный процесс так, как показано на рисунке 1-1 в документе Q51015-5.1.1 "Quartus II Incremental Compilation" (хотел приклеить рисунок, но че-то форум глючит). Там показано, что Timing Analyser запускается в самом конце компиляции, после фиттера и ассемблера. И действительно, Квартус именно в таком порядке и компилирует проект. Исполнение фиттера у меня сейчас занимает 35 минут. У Зайлинкса симулятор запускается независимо от компиляции. Выбрал любой исходник в проекте, и просимулировал его. Или встроенным ISE симулятором, или же Зайлинговской версией Моделсима (последний тоже дается к Веб Эдишн). Еще и тестбенч автоматически сгенерировал, нажав один раз на кнопку. А в Квартусе я что, должен плодить маленькие проектики под каждый модуль, который хочу отладить? Настраивать их, компилировать в какой-нибудь неважно-какой чип, и тогда уж только смогу рассматривать времянку? Или же, назначая top level на какой-то из файлов текущего проекта, я таким образом как-то (неявно?) даю Квартусу знать, что он не должен исполнять фиттер и ассемблер? Моделсим в принципе должен был бы позволить делать в Квартусе то же самое что и в ISE. Но Алтера дает Моделсим только в платной версии Квартуса. Правда, говорят что ISE симулятор не всегда правильно компилирует заданный кусок. Я так понимаю, что у симулятора есть свой "усеченный" компилятор, и он имеет отличия от "основного" компилятора ISE. В этом смысле у Квартуса все "бронебойнее", т.к. используется один и тот же компилятор. Однако до поры мне фиттер и ассемблер нафиг не нужны, как бы их вырубить?
  17. При попытке добавления рисунка появляется такое сообщение: Произошла ошибка при загрузке файла, в связи с тем, что директория 'uploads' имеет неправильные атрибуты. Если Вы получили эту ошибку, просим Вас обратиться к Администратору форума и сообщить об этой ошибке. Несколько дней назад все работало ОК.
  18. Если уровень помех действительно очень велик, то входной буфер может из-за них перегружаться, да и активный фильтр тоже. Я бы поставил полосовой LC фильтр на входе, до буфера. Еще такая мысль: что если в кабель гнать не 32 кГц, а 32768 Гц? Тогда можно было бы попробовать использовать в качестве фильтра часовой кварц, что было бы проще, чем возиться с гираторами.
  19. I2C slave device на PIC16F84A

    Полноценный слэйв? Разве это возможно? Для слэйва времянка слишком строгая, программа не успеет. Мастера можно написать без проблем, а для слэйва лучше юзать что-нибудь вроде PIC16F74
  20. Full Speed USB Solutions http://www.microchip.com/stellent/idcplg?I...USB%20Solutions Communication Device Class (CDC) firmware http://www.microchip.com/stellent/idcplg?I...&param=en022625 The Communication Device Class firmware is the most direct way or migrating a serial port (legacy) application to USB. In fact this firmware provides direct emulation of a serial port on PC running Windows 2K and Windows XP. As the PIC18F4550 is attached to the PC, a virtual COMx port is created. All PC software using a COM1-4 port will work without modifications with the virtual COM port if only at a much higher speed (approx 1Mbit/s) Microchip Custom Driver http://www.microchip.com/stellent/idcplg?I...&param=en022629 Microchip Custom Driver is the ultimate solution for the more advance users. It allows full flexibility and configurability to allow the use of all data transfer modes (control, interrupt, bulk, isochronous) defined in the USB 2.0 specs and provides the highest bandwidth. It requires a deeper understanding of the internal workings of the bus as well as the development of custom interfaces (Windows code development) on the PC.
  21. Непонятно, почему "увеличение толщины намотки в 4 раза"? Ленту же можно взять в 4 раза тоньше, чем толщина медного слоя. Tогда в той же толщине будет столько же витков. Геометрия катушки не изменится, и кол-во витков останется как в медной.
  22. Правильно ли я понимаю, что для Квартуса симулятором является Моделсим, который входит только в покупную версию, но исключен из Веб Эдишн? А у Зайлинкса ISE симулятор входит в состав Веб эдишн, и дается бесплатно. Конечно, в Квартусе можно посмотреть времянки после того как проект скомпилирован. Но меня сейчас стало сильно напрягать время компиляции проекта, по полчаса и более. Хотелось бы отлаживать логику по кускам, для каждого узла по отдельности. Квартус этого не позволяет (или я не знаю как?), а ISE - позволяет, просто и удобно. Возникла нехитрая мысль поставить ISE и отлаживать логику на нем, а готовые куски переносить в Квартус. Кайф в том, что все легально, никакого ворованного софта. Или есть другие варианты?
  23. Если деталь можно заменить идеальным трансформатором - тогда это настоящий трансформатор. "Трансформатор" флайбэка одним только идеальным трансформатором заменить нельзя. Его можно заменить идеальной катушкой индуктивности, параллельно которой включена первичная идеального трансформатора.
  24. Амплитуда импульсов драйвера 15В. На трансформаторе это напряжение будет видно как двойная амплитуда, от пика до пика. Амплитудное напряжение будет зависить от скважности: для короткого полупериода амплитуда больше (зато действует недолго), для длинного меньше. При скважности 2 амплитуда + и - импульсов становится равна. Очевидно, это и будет самым "плохим" режимом для первички трансформатора. То есть, надо считать для двуполярного прямоугольного сигнала амплитудой 7.5В и длительностью + и - импульсов по 50 мкс (частота 10 кГц) Форма тока в первичной треугольная (если нет насыщения) и тоже двуполярная. в конце + импульса ток достигает максимума i+, в конце - импульса ток достигает максимума i-. Cоответственно, ровно в середине каждого импулса ток равен 0, в этот момент направление тока в первичке меняется на противоположное. Значит, чтобы посчитать амплитуду тока в первичке, надо посчитать, насколько изменится ток в ее индуктивности L, если к ней в течении 25 мкс (т.е. четверти периода) приложено напряжение 7.5 В (т.е. половина напряжения источника)
×
×
  • Создать...