Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Everything posted by Petka


  1. Я написал загрузчик

    Ответ автору топика: выражаю огромный респект, что бы ни говорили шифрование по ГОСТ более криптоустойчиво, нежели DES и прочие аналоги, ибо ГОСТ строится на теории элиптических кривых, да и сами профессионалы криптоанализа не видят в DES будущего... P.S. а вскрытие XOR было в одной из задач студенческиой олимпиады по программированию, 2 команды решили задачку за 40минут. (разумеется если не XOR'ить c "одноразовым блокнотом").
  2. Touch Memory, чтение

    Цитата(OLEG_BOS @ Mar 2 2006, 19:27) Цитата(Petka @ Mar 2 2006, 19:28) Цитата(san822 @ Mar 2 2006, 15:21) Уважаемые! Может кто знает что надо подключить между МК и считывателем ключа, чтобы защитить МК от воздействия электрошокера ? Я на телесисе(www.telesys.ru) посмотрел схемы - там всё просто, по-моему эти схемы не имеют защиты от воздействий электрошокера или я что-то просмотрел ? тебе надо поставить схему "грозозащита". обычно это газовый разрядник, варистор, и быстрый стабилитрон. Быстрый стабилитрон это хорошо, но может не выдержать. Вместо него можно использовать более мощные стабилитроны, которые могут выдержать большие мощности 200Вт-1200Вт (есть и выводные, есть и СМД). Так называемые трансилы или супрессоры. Читаем ВНИМАТЕЛЬНО! я же написал "газовый разрядник" + "варистор" + "быстрый стабилитрон" в таком случае стабилитрону ничего не "грозит" =)
  3. Touch Memory, чтение

    Цитата(san822 @ Mar 2 2006, 15:21) Уважаемые! Может кто знает что надо подключить между МК и считывателем ключа, чтобы защитить МК от воздействия электрошокера ? Я на телесисе(www.telesys.ru) посмотрел схемы - там всё просто, по-моему эти схемы не имеют защиты от воздействий электрошокера или я что-то просмотрел ? тебе надо поставить схему "грозозащита". обычно это газовый разрядник, варистор, и быстрый стабилитрон.
  4. ATmega16(L) Fast PWM

    Легко. Если частота кварца 8Мгц, то натраиваем таймер, например так: Код// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 125,000 kHz // Mode: Fast PWM top=FFh // OC0 output: Non-Inverted PWM TCCR0=0x6B; TCNT0=0x00; OCR0=0x7C; Расчёт таков, если установи предделитель тактовой частоты равным 64, то таймер будет тикать 8МГц/64=125кГц т.е. один такт таймера 1/125000=8мкс, для того, что бы насчитать 1мс, надо сделать 1мс/8мкс тактов таймера, т.е. 125 шагов, для этого надо в регистр OCRx записать значение 125 минус 1. т.е. 7Сh
  5. Проблема с LPT портом

    Вероятно стоит обратиться к автору AVREAL. кстати он на форуме часто бывает =) Есть ещё варианты. Например если LPT сдох не полностью, а только некоторые линии, то можно использовать оставшиеся живые, в свежих AVREAL, как я помню можно почти произвольно использовать разряды порта. Больше ничего на ум не приходит.
  6. 16 разрядные fast PWM на Т1

    Код// Timer/Counter 1 initialization // Clock source: System Clock // Mode: Fast PWM top=ICR1 // OC1A output: Non-Inv. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x82; TCCR1B=0x19; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x80; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; например так.
  7. 256 градаций на AVR

    Цитатаyest variant pozvolyayusiy delat korrekciyu i s 8 razryadnim PWM i daze s mensim kolichestvom razryadov, imeya pri etom te ze 256 gradaciy yarkosti . Да кстати никто не запрещает использовать всякие "dithering" методы. вот и получите видимые 256 ступенек при 8 битах и гамма коррекциию.
  8. 256 градаций на AVR

    Цитата(_LD @ Jan 24 2006, 23:36) Цитата(Petka @ Jan 24 2006, 22:07) P.S. считается что средний глаз различает ВСЕГО 64 оттенка серого, при условии что он их одновременно охватывает сразу все. Наверное, в этом вопросе готов поспорить. А что значит "охватывает"? Боковое зрение считается? Спорить не надо. Я имел ввиду то, что глаз такой прибор, что при определённых условиях он может ощущать даже отдельные фотоны!!! НО! это совсем не значит что разрешающая способность глаза 1 фотон! гля глаза очень важно иметь некий "эталон", например яркость соседнего обьекта, если обьекта всего два, глазу очень легко подстроиться и сравнить их, а когда глах "охватывает" все обьекты сразу, то 64различных яркости - предел =(. Наверное всё-таки не стоит лезть так глубоко... и вообще, если взять два фонарика, настроить на разную яркость, то есть 2 случая: либо на глаз эта разница будет заметна, либо назаметна. Вопрос: зачем делать столько ступенек яркостей, что глаз их не заметит? В случае, когда фонарик цветной, точность может быть ещё меньше, т.к. вряд ли получится 1) точное сведение 3х цветов, поэтому пятно, которое по идее должно быть белым будет, с одного края немного зелёным, с другого красным, с третьей, немного синим, и где-то в какой-то одной точке может быть белым =) 2) глаз цвета различает ещё хуже чем яркости =) P.S. В продаже есть такие игрушки - "волшебные палочки", которые периливаются всеми цветами радуги, стоят копейки. Внутри там 3 светодиода, батарейки, и бескорпусная микросхема управления. Вроде никто не жаловался что такая "палочка" не даёт 16млн цветов. Так вот предложение: купите одну такую, разберите и посмотрите какой сигнал подаётся на светодиоды, какой частоты, сколько ступенек. и пр.
  9. 256 градаций на AVR

    Цитата(_LD @ Jan 24 2006, 21:19) Цитата(Kovrov @ Jan 24 2006, 07:44) делаем шим например изменение состояния по OCR - 8 бит на выход нч фильтр (типа кустарного цапа) после опреционником делаем преобразователь напряжение ток и вуаля - диппазаон регулирования "зрительный" намного сместился в большую сторону и это реально видно, а не то что гдето только в конце даппазона можно чтото различить... Попробуем формализовать утверждения. Первая схема. Берем ШИМ с частотой ~100 Гц (чтобы глаз не замечал моргания), задаемся номинальным током через светодиод, и пропускаем/не пропускаем этот ток через светодиод, как велит ШИМ. Число позиций ШИМ - 256. Вторая схема. Берем тот же ШИМ, интегрируем его (получая напряжение от 0 до Vcc), подаем напряжение на линейный преобразователь напряжение->ток (0 вольт соответствует ток 0 ампер, Vcc соответствует номинальный ток светодиода), ток пропускаем через светодиод. Утверждается, что зависимость видимого свечения светодиода от значения ШИМ будет иметь совершенно разный характер для этих двух случаев? Не совсем так. В первом случае (если частота ШИМа не очень большая) формальная "средняя" яркость будет изменяться линейно. Доказать это элементарно, если исходить из предположения что время переходных процессов (то есть время зажигания и время гашения) занимает ничтожный процент от всего цикла работы. А это верно для небольших частот ШИМа. Во втором случае яркость тоже зависит линейно, ЕСЛИ предположить что светодиод ВСЮ мощность на себе преобразует в свет. т.к. W=U*I, а U якобы константа при различном токе... Очевидно первый способ более прост и надёжен в реализации при ТЕОРИТИЧЕСКИ одинаковых результатах. Однако человеческие органы чувств устроены таким образом, что человек оценивает ЛОГАРИФМ величины. т.е. что бы человек думал что яркость изменяется линейно, надо яркость регулировать по экспоненциальному закону. Кстати это касается и звука тоже. Знающие люди подтвердят, что "звуковые" потенциометры нелинейны. Так что если надо сделать RGB фонарик, то не стоит заморачиваться с операционниками, а применить ШИМ "в лоб". При этом не забыв значение яркости регулировать экспоненциально. По поводу светодиодных матриц 16*16*3, кто то сказал что 768ШИМ каналов это много, а теперь подумайте, 768 операционников + те же 768 ШИМов(или ЦАПов) это не много? P.S. считается что средний глаз различает ВСЕГО 64 оттенка серого, при условии что он их одновременно охватывает сразу все.
  10. у вас фильтр 141 тап. на отсчёт т.е. всего 141*1000=141000 операций умножения и сложения в секунду, думаю AVR с такой задачей справится без проблемм. при частоте 14Мгц, получается около 100 тактов на умножение и сложение и выборку с хранением =) хватит за глаза и за уши =). тока как только этот фильтр вас перестанет устраивать что то более мудрёное вы вряд ли сможете на АВРке сделать. придётся всё целиком менять и процессор и среду разработки и железо - ВСЁ. так что может сразу заложитесь на нечто более мощное?
  11. настройка uart для мега

    приведите свои исходники.
  12. Цитата(Serega Doc @ Jan 9 2006, 15:29) Вот и возникает вопрос как оценить надежность если вы хотите действительно точно и верно оцнить надёжность, то должны: 1) сформулировать критерий надёжности. 2) построить мат. модель в которой будут необходимые параметры для расчёта надёжности. 3) смоделировать работу мат. модели. 4) получить надёжность. выбор 1 пункта должны сделать вы и только вы. напимер, для одних задач похождение 50% пакетов это надёжно, для других и прохождение 99,999% пакетов ненадёжно. Если у вас будет протокол с пересылкой плохо переданных даных, то в надёжность будет ещё входить и время прохождения пакета, с учётом вероятной пересылки его... и в том же духе. 2 пункт вы будете строить из статистических данных линии передачи, т.е. вероятность помехи, её длительность, отсюда выводится вероятность помехи в 2х битах.... и.т.д. т.е. большая работа. 3 пункт можете реализовать чисто математически. или же моделированием на компьютере "в лоб " с составлением последующей статистики. 4 пункт совсем элементарен. полученные цифры сверяете с пунктом 1! И только после этого вы сможете понять НАДЁЖНО ЛИ ВАШЕ устройство в заданных условиях. все советы типа "надёжно будет так-то" или "так будет ненадёжно" безсмыслены в общем случае. т.к. даются обычно без учёта всех условий. а учитывать все условия кроме вас никто не будет =) откуда я знаю будут ли рядом с вашей линией радиостанции? или откуда я могу знать что линия связи 1км, и экспуатироваться будет непросыхающими электриками, окончившими 9 классов. ясно, что даже самый "надёжный" способ связи в моём понимании будет ненадёжным для вас.
  13. Понимаю, что вам хочется по-надёжнее, но задайтесь вопросом: так ли на самом деле нужна надёжность? Задумайтесь, если вы используете механизм передачи, который допускает ошибки, а вам они не нужны, зачем вам такой механизм передачи? програмные средства коррекции и учёта ошибок это уже последняя возможность поправить дело в уже готовом проекте. Мой совет: если у вас чистый UART работает с ошибками, навесьте на него 485й. на мой взгляд хватит примитивной програмной проверки на целостность пакета, например XORа всего пакета. если XOR не сошёлся, просто игнорируйте пакет. да, и не забудьте так организовать протокол передачи, что один пропущенный пакет ни на чём серьёзно не скажется. (например стоит пересылать абсолютные значения величин, а не события их увеличения/уменьшения)
  14. Цитата(Георгий @ Jan 9 2006, 10:51) Если нескромно, то моя прога не хуже, правда выборки через 10 мкс, и два канала всего. Но лично мне этого хватало. И писать могу до 30 минут выборок. И главное бесплатно. Георгий, не скромничайте и дайте ссылку на вашу программу, да и ссылку на железо, с которым она работает.
  15. помогите чайнику

    Цитата(александр_в @ Jan 7 2006, 20:18) Обясните пожалуйста чем отличается команда BRCS от BRLO только записью. опкоды генерируются одинаковые. на последующий вопрос "зачем" отвечу так: для того, что бы можно было построить более читаемый(осмысленный) код. мол тут(BRLO) мы проверяем математическое соотношение некоторых операднов. а тут(BRCS) мы проверяем конкретный бит...
  16. WinAvr gcc

    Цитата(картошка @ Jan 5 2006, 05:58) Спасибо "Petka" . Я уже все перепробовал : и обьектник дизассемблировал, чтоб хоть убедится что ни он портачит. Мои мысленные допуски по поводу нулевых адресов на командах JMP и CALL в обьектном модуле подтвердились, ведь это дело линковщика адресса расставлять. Но проблема не в том, что линковщик их не расставляет, а в том что он их расставляет с искажением OPCODE. Попробуйте написать маленькую програмку, а потом залинковать. Примеры скрипта в этом разделе темы, наверху. Я этот же вопрос задал на AVRFREAKS , может действительно проблема, или будут смеятся. Вчера написал утилиту автоматической шлифовки ассемблерного, листинга c avr-gcc -S на удобовоспринимаемый ассемблером из AVR STUDIO с которым я уже долго работаю. Из WINAVRа буду использовать только avr-gcc с опцией -S для выдачи ассемблерного файла и все (линковать не прийдется ) . А ассемблировать avrasm32.exe из AVR STUDIO. Так сказать нерешенных проблем нет. Програмы шлифовки как доработаю то выложу на Моя веб-страница в поставке WinAVR есть каталог exapmles\demo . там есть пример makefile файла. т.е. заходите в этот каталог и наберите 'make' будут созданы bin и hex файлы, вот как раз bin файлы и надо дизассемблировать. по аналогии компилируйте и свои проекты.
  17. WinAvr gcc

    скажу сразу что с вопросом не разбирался... просто хочу подкинуть пару мыслей перед тем как вы окончательно уличили линковщик... Картошка: а вы зачем дизассемблируете ОБЬЕКТНИК? обьектный файл не содержит ОКОНЧАТЕЛЬНОГО кода. по идеологии обьектного файла адреса внешних функций ДО линковки (т.е. на стадии обьектного файла) НЕИЗВЕСТНЫ. известны лишь символьные имена меток. а для того, что бы вызывались конкретные адреса (а не текстовые строки) в коде могут оставляться опкоды "пустышки", которые на стадии линковки дополняются. можно "запудрить" линковщик до такой степени, что он так и оставит эти "пустышки" в конечном коде, но если делать как общепринято, такого не случится.
  18. Проблема с TWI

    Цитата(bodja74 @ Jan 3 2006, 14:51) Petka Ну Вы мне скажите зачем слейву проверять промежуточное значение F8,если оно имеет место когда TWIN=0, а если TWIN=0 то и прерывания нет ,а если пошло то F8 там и не пахнет. Тоже и по $00 ,если ошибка на шине слейв ничего не определит,а если определит он все равно не сможет ничего сделать. Если эти проверки нужны то только для мастера,он заведует шиной и решает что с ней делать. Не зря Atmel приводит описание этих кодов. Повторяю: пока я в СЛЭЙВЕ (на mega16)не добавил обработку $F8 у меня зависала шина на фазе передачи. 2James D: вы добавили обработку $F8 в обработчик прерываний второго слэйва?
  19. Проблема с TWI

    почему в проге "слейв2" не обрабатываете события $00 и $F8 ? я же говорил что это делать необходимо, иначе шина зависает. не наступайте на мои грабли.
  20. а трансформаторы применить религия не позволяет?
  21. Проблема с TWI

    при событии 0xF8 надо просто выйти из прерывания НИЧЕГО не делая.
  22. Проблема с TWI

    Добавьте в код слэйва в обработчик прерываний обработку слудующих событий: case 0x00: TWCR=0b11010101; case 0xF8: // No relevant state information available; TWINT = "0"
  23. Проблема с TWI

    Цитата(James D. @ Dec 21 2005, 16:30) Кстати, в даташите (в приведенном там примере) стоит ожидание "1" - после посылки START. Какой вы упёртый =) цитата из даташита: "while (!(TWCR & (1<<TWINT))); // Wait for TWINT flag set. This indicates that the START condition has been transmitted"
  24. Проблема с TWI

    Цитата(James D. @ Dec 21 2005, 14:25) Я делаю так - передача одного байта (без обработки ошибок), пусть меня поправят, если я не прав: 1. Мастер производит установку скорости передачи (TWSR, TWBR); 2. Посылает сигнал START: (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); 3. Ожидает, когда бит TWINT в TWCR установится в "1"; ВОТ ГДЕ ОШИБКА!!! надо ждать не "1" а "0". ибо: "The TWINT flag must be cleared by software by writing a logic one to it" если флаг "cleared" - "by writing logic ONE" значит флаг имеет ИНВЕРСНУЮ логику! исправляйте ошибку, будем дальше дебажить =)
  25. Проблема с TWI

    Цитата(IgorKossak @ Dec 21 2005, 13:10) Цитата(m16 @ Dec 21 2005, 12:06) а чем ,простите, шит не устраивает . имхо все доходчиво Ну, например, на русский его перевести. Хотя, ести перечитать всю эту тему, то это уже сделано. Уважаемый Games D.! Вы задаёте вопросы на которые ЕСТЬ однозначные ответы в datahsheet на AVR (если быть точнее в разделе "Two-wire Serial Interface"), поэтому у меня есть конструктивное предложение: задавайте вопросы в таком виде "в пункте таком-то даташита написано что надо делать так-то, что бы получить то-то а у меня выходит сяк-то.". просто практика показывает что если делать, как рекомендуется в datasheet, то всё работает с первого раза и с минимальными временами на отладку. для общего ознакомления с I2C можно прочитать это (на русском).