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

maik-vs

Участник
  • Постов

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

  • Посещение

Весь контент maik-vs


  1. Код так код. Вот: ; ;=============================================================================== biphali: /////////// bi-phase driver /// calls from main in fast cycle /// /// 0 forward 1-0-2 /// 1 2 backward 2-0-1 /// 3 so, incr/decr nodes shifted in space. Can be stored in bits 0,1 of biphase /// until 2->3 or 3->2 to remove this shift. .equ CT_B1 = $80 .equ CT_B2 = $40 ldi tmp1,CT_B1 | CT_B2 sbis BIPORT-PIN,BIPHA cbr tmp1,CT_B2 sbis BIPORT-PIN,BIPHB cbr tmp1,CT_B1 eor tmp1,biphase ; <1> = BaBb 0 0 0 0 0 0 cpi tmp1,CT_B2 brlo biret;/// return if B1B2 readed same as prev. saved eor tmp1,biphase ; restore <1> lsr biphase lsr biphase or tmp1,biphase cbr tmp1,3 mov biphase,tmp1 ; aabbcc00 phase history lds tmp2,bico cpi tmp1,$48 brne bidro; 01-00-10 00 102 forward lds tmp1,biforw add tmp2,tmp1 rjmp bdsa bidro: cpi tmp1,$84 brne biret; 10-00-01 00 201 backward lds tmp1,biforw sub tmp2,tmp1 bdsa: sts bico,tmp2 biret: ret biphali вызывается часто, чаще, чем крутится енкодер. Изменяет bico (байт). Чаще, чем переполняется bico нужно вызывать подпрограмму которая это bico прибавляет к счётчику (у меня 4-байтный) и обнуляет bico.
  2. Вычитанием 50000,10000,5000,10000 и т.д. hex в Yh:Yl результат в регистрах tmp1..tmp3 работает довольно быстро //; hex16tobcd hex2utobcdf:; Y -><1:2:3> 6:55:35 max clr tmp1 clr tmp2 clr tmp3 ; 159 циклов в худшем случае (59999) cp2i Yh,Yl,50000 ; 65 в лучшем (0) brlo hxl50k subi tmp1,-5 sub2i Yh,Yl,50000 hxl50k: cp2i Yh,Yl,10000 brlo hxl10k inc tmp1 sub2i Yh,Yl,10000 rjmp hxl50k hxl10k: cp2i Yh,Yl,5000 brlo hxl5k subi tmp2,-$50 sub2i Yh,Yl,5000 hxl5k: cp2i Yh,Yl,1000 brlo hxl1k subi tmp2,-$10 sub2i Yh,Yl,1000 rjmp hxl5k hxl1k: cp2i Yh,Yl,500 brlo hxl5c subi tmp2,-5 sub2i Yh,Yl,500 hxl5c: cp2i Yh,Yl,100 brlo hxl1c inc tmp2 sub2i Yh,Yl,100 rjmp hxl5c hxl1c: cpi Yl,50 brlo hxl50 subi tmp3,-$50 subi Yl,50 hxl50: cpi Yl,10 brlo hxl10 subi tmp3,-$10 subi Yl,10 rjmp hxl50 hxl10: or tmp3,Yl ret .MACRO CP2I ///CP2I r1,r2, 1234 compare <1:2> with 1234 push r26 cpi @1,low(@2) ldi r26,high(@2) cpc @0,r26 pop r26 .ENDMACRO .MACRO SUB2I /// SUB2I Yh,Yl,1234 ; <@0:@1> - 1234 --> <@0:@1> subi @1,low(@2) sbci @0,high(@2) .ENDMACRO
  3. Как-то сложно всё у ваc в 20м сообщении. Нельзя просто записать константу в DDR? По приведённому куску кода я вижу инверсию ЧЕТВЁРТОГО бита DDRB, если он был "1" в r16 до "andi r16". А третий (и все, кроме четвёртого) бит в DDRB не изменился.
  4. AVR+MAX232E

    Такэта... Смотреть осциллоскопом сигналы, сравнивать времена-напряжения. Такой же случай: прибор ВКТ-7, RS232, от компа связь есть, от usb/rs нет. А он берёт напряжение с RTS для питания своего гальванически развязанного RS'a. Вот и не хватает мощи у USB/RS адаптера (если там вообще есть RTS).
  5. Непрерывную строку пикселов выводить не получается. Между двумя байтами минимальный зазор 1,5 такта spi, на загрузку нового значения. Долго возился в своё время с мегой16 - не получилось. И в даташите в общем так и нарисовано. Разве что переделали SPI в 128-й меге, но вряд ли.
  6. Платы тоже можно заказывать у китайцев, здесь ссылки и там вокруг почитайте, человек заказывал.
  7. Не вижу, чем ijmp отличается от goto? ну хорошо, goto (label+index) "IJMP: ...jump to the address pointed to by the Z pointer register ..."
  8. ATMega16 + AT45DB16

    Это всё зависит от параметров сигнала и чего бояться. Все входы контроллера подключены через 2 диода к питаню и земле. Ток через эти диоды не должен превышать 1 ма. У вас этот ток ограничивается R3. Если иметь в виду сетевую наводку от прикосновения к XW1, то ничего не сгорит, но входное напряжение АЦП может превысить опорное и результат оцифровки будет непредвиденным. Можно поставить стабилитрон параллельно С4, но его нелинейность будет влиять. ШИМ должен усредняться фильтром R4C5? Тогда нужно добавить резистор параллельно С5, через который С5 будет разряжаться. Его роль может играть сопротивление нагрузки на XW2, но тогда это сопротивление должно быть известным и приемлемым. Что будет подключено к XW2? Если стрелочный прибор, то решение приемлемое. Если что-то менее инерционное, то плохо отфильтрованная частота ШИМ может давать интересные результаты. Можно увеличивать ёмкость С5, чтобы лучше фильтровать переменку. Тогда возрастёт инерционность, напряжение на С5 будет отставать от быстрых изменений скважности ШИМ (если они есть).
  9. ATMega16 + AT45DB16

    Пара замечаний по схеме. Конденсаторы около кварца указаны 0.022мкф, а надо 22 пф. Очевидно, просто описка, на такой частоте с 0.022 генератор контроллера просто не начнёт работать. В блоке питания стоит стабилитрон КС509, очевидно, для защиты от перенапряжения по входу. Тогда нужно добавить предохранитель последовательно с VD1, чтобы он сгорал раньше, чем стабилитрон.
  10. Я не путаю, я плохо помню тонкости. Прошло время, подзабылось. Помню принципиальную причину зависаний, которые побоорол только обоюдными таймаутами. Помню, что такие же проболемы былы и у других людей. Ответил! По окончании 8-го импульса он выставил ACK низким уровнем на линию данных. И ждёт 9-й импульс, по его окончанию он снимет этот свой АСК. А не дождётся: пропал импульс, сгинул в дороге. Здесь точно не помню, но опять-таки, если мастер и слейв сбились в подсчёте импульсов, то может возникнуть ситуация, когда слейв выдаёт нулевые биты, мастер ставит свой NAK, но в это время слейв передаёт 0. Слейв видит АСК и может держать линию данных как угодно долго, ожидая синхроимпульсов. Мастер, наверное, должен проверять свой собственный NAK, установился ли (через какое время? ёмкость линии никто не отменял). Не установился, что ему делать? Предлагают передать 9 синхроимпульсов и молиться. Я всё о наболевшем: слейв держит линию данных и не отпускает, какой стоп? Кстати, если всё прекрасно, откуда взялось понятие "Soft reset" ?
  11. Что значит "во время 9 импульса"? В жизни он увидел окончание 8 импульса и поставил свой АСК. Это в талмудах только данные так красиво меняются посерединке между синхроимпульсами.
  12. проблемы с usbasp

    Что я делаю не так, как все? Ни разу не ловил подобной бяки. Всегда сначала прочитаю фьюзы, в даташите написано, какие прошиты на заводе. Там уже понятнее становится, где инверсия - где не инверсия... Ну и меняю их по одному, не все гамузом сразу. Потому что например АВРка работает с кварцем больше 8МГц емнип только если ckopt установлен на полную амплитуду. Значит, сначала ставим ckopt потом cksel.
  13. И что же, я не могу передать несколько рестартов? Могу. Кто из них тогда "старт" а кто "рестарт"? Нет разницы. И без "стопа" можно спокойно обойтись.
  14. Это вряд ли. Я тогда искал как сделать, чтобы окно, сделанное в MFC С++ оставалось "живым" на длинных операциях и как покрасить строку в листбоксе. Весь в компе/интернете, только ноги наружу торчали :) Ещё про IIC. Совершенно непонятно, зачем им сущность "рестарт". Ну старт и старт, нет, надо обозвать одно и то же разными словами. И неприятный глюк, про который аппноты молчат. Например, мастер пишет в слейв. И пропал один синхроимпульс. Слейв выставляет свой АСК, а мастер уже обмен закончил. Всё, линия данных заблокирована. Или наоборот, мастер читает со солейва. Помеха прибежала, лишний синхроимпульс. Слейв может никогда не увидеть NAK от мастера, останется в цикле чтения и засадит шину данных в 0. Словом, любая рассинхронизация счётчиков битов мастера и слейва может привести к катастрофическому зависанию. Поэтому вторая версия протокола предусматривает ограничение скорости обмена снизу, или проще говоря тайм-ауты, которые должны бдить все устройства на шине. Нет синхроимпульсов в течение заданного времени - работу долой, шину освободить, ждать старта.
  15. Проблема с AVR Studio

    Там же два симулятора - simuator1 и simulator2. Вот первый и не поддерживает вочдога и много чего ещё. Выберите второй ( но он не позволяет внаглую менять биты в регистрах TWI, SPI и т.п. Вообще-то не представляю, как симулировать wdog. Он работает асинхронно, медленно, поэтому может вылезти в любом месте программы, ну перестартует. Что там отлаживать? Поставьте точку выполнения на старт вручную - вот вам и wdog. Его надо просто выключать при отладке. Могучая конструкция #define debug - #ifdef debug ... переключит всё, что надо одной кнопкой.
  16. Посмотрите, как устроены телевизоры/мониторы, и вам станет легче. Не для лишней мороки Филипс изобрели IIS, уж поверьте. Вовсе нет, круг знаний больше - больше и граница незнаемого. Просто ваши вопросы были бы не очень понятны beginner'ам :) Зачем?!! Вы что-то должны протеусу? Любой симулятор - всего лишь модель. "Работать должно в корпусе, а не в принципе" - вот фраза, выкованная жизнью. Как мастер вытаскивает данные со слейва, написано,например, в документе UM10204 "I2C-bus specification and user manual". Мастер посылает слейву старт, потом адрес с признаком чтения и гонит снихроимпульсы. Слейв подставляет данные, а если не успевает, может "прижать" синхроимпульс, тогда мастер ждёт. После каждого байта мастер даёт АСК, а когда наелся - NAK. Вот и всё. Из мануала: "For additional information, please visit: http://www.nxp.com"
  17. Стадартный ход - купить зарядник для мобильного. Или есть даже блоки питания в таком же форм-факторе. Про 50 вольт непонятно.
  18. Стадартный ход - купить зарядник для мобильного. Или есть даже блоки питания в таком же форм-факторе. Про 50 вольт непонятно.
  19. Только что общался с одним таким же родственничком... Поэтому отвечаю. Чтобы сделать с нуля на АВР идёте на сайт atmel.com там есть описания всех АВР контроллеров - читайте, оттуда загрузите АВРстудию - программируйте. Находите в интернете протоколы работы СИМ карт. Схемы рисуете, программы пишете. Пока невозможно понять, что вообще надо... "... посредством загорания ... выбирается..." Посредством загорания, дорогой друг, показывается. Выбирается посредством нажимания/поворачивания... Походу точно - курсач/диплом... Причём настолько нет мысли его ДЕЛАТЬ, что даже нет желания сформулировать, о чём, собственно. Тот мой родственник имеет диплом из проплаченных экзаменов, поэтому по специальности не умеет, а на работу попроще идти не хочет: он, оказывается, "дипломированный специалист". PS буду рад ошибиться.
  20. Осциллограф - это хорошо. Вот я смотрю осциллографом на COM порт компьютера и вижу: _____--__--__--____----_________ ___ это -12 вольт, --- это +12 вольт. На терминалке жму цифру "5", то есть передаётся 0х35. Первый импульс - стартовый, дальше 01010011 То есть компьютер передаёт младшим битом вперёд. У вас передаётся -------___---____________---------, да? А тогда то, что выделено красным - не старт ли и 0x80, только на другой скорости? Может надо было попробовать с другими числами? 0x5, 0x86 например?
  21. В EEPROMе пусть хранится набор данных с возможностью проверки (CRC, две копии и т.д.) Читаем из EEPROM в RAM когда юзер начал пользоваться прибором, или там вызвал меню. Если такого события нет, то раз в десятки минут - часы. Если данные повреждены, восстанавливаем их из FLASH, где лежит дефолтный набор. Настройки обнуляются - сбой серьёзный, но не смертельный. Если основная программа содержит SPM, проверяем её CRC при включении питания. Не сходится CRC - уходим на бут-лоадер, если он есть, и бесконечно мигаем индикаторами. У меня бывало, слетали и флеш и епром, при больших неприятностях по питанию - например, резко клинит большой коллекторный движок, или лопается мощная галогеновая лампа. Тогда происходят разные электромагнитные процессы, горят предохранители, срабатывают защиты, ну вылетал флеш пару раз...
  22. В бинарнике, разумеется. Какое расширение имеет файл в "ч/б формате"? Я переназову. Открывая в фотошопе raw можно задать ширину, высоту картинки, количество каналов (3 канала - RGB, 4 - CMYK) и глубину цвета 8 бит или 16 бит. А то, что нужно - один бит на пиксел, такой глубины нету. Вот я и спрашиваю, "поподробнее". Потому что хотелось бы. Пока вижу 2 способа: либо переназвать в .bmp и присобачить заголовок с двумя цветами и соответствующими размерами, или написать собственную программу. Я писал на visual basic, отталкиваясь от примера для bitblt. Но у фотошопа возможностей поболее :).
  23. А можно подробнее? Там ведь не байт, а бит на пиксел? И как?
  24. Значит, разбонзали кассовый аппарат? Это какой, что на атмеге? Знакогенератор, мне кажется, находится с 1d0 в бинарнике, по 20 байт на символ, до 1800. Если уверены, что шрифты не упакованы, напишите программу, переводящую биты прошивки в пиксели на экране (лучше 2х2 пикселя или пользуясь "экранной лупой") с заданной шириной колонки. Подбирая ширину, увидите буквы.
  25. >>для чего это может быть нужно - >>например, нужно отладить периферию, проверить сигналы, а переходник на сериал не предусмотрен схемой... Чью периферию? Чьи сигналы? С чего на что переходник?! Речь идёт о мысли подоткнуть компьютер к неотлаженной "периферии"? Сделайте "переходник на сериал" в виде АВРки с аппаратнымspi в сторону периферии и RS232 в сторону компьютера. Там и гальваноразвязку можно сделать, и скорости согласовать через какой-никакой а всё ж буфер в ОЗУ контроллера, и лампочку "spi fault" и кнопочку...
×
×
  • Создать...