; код для квадратурного энкодера ; "Исходник" от Чена http://elm-chan.org/works/smc/report_e.html (исходник smc2 - http://elm-chan.org/works/smc/smc.zip ) ; адаптированный под схему с "искл. ИЛИ" (Арисова Андрея) с одним внешним прерыванием. ; http://electronix.ru/forum/index.php?s=370bfe50ace4d6660364ceb3beb20be6&showtopic=60502&st=120&p=565035&#entry565035 ; и http://www.cnczone.com/forums/showpost.php?p=574303&postcount=28 ; http://roboforum.ru/viewtopic.php?f=2&t=5548&sid=d57224b87e8c653934a0ea8a71a1ea2d&start=15 ; .def _PvEnc = r14 ; предыдущие данные с энкодера .def _PvDir = r13 ; предыдущее направление с энкодера .def _PosH = r12 ; 24-bit счетчик текущего положения .def _PosM = r11 ; .def _PosL = r10 ; =================================================== ; ********* Таблица перехода от прерываний ********** RJMP INT_Encoder ; External Interrupt Request 0 ;--------------------------------------------------------------------------------------------------------------------------------- ; ************** Настройка прерывания от INT0 ************* ldi r16,0b00000001 ; INT0 по любому изменению (Encoder) sts EICRA, r16 ; ldi r16,0b00000001 ; разрешить прерывания от INT0 (B_Int Encoder) out EIMSK, r16 ; ;------------------------------------------------------------------------------------------------------------------------------- ;=========================================================== ; Обработчик прерывания от INT0 - Опрос энкодера ;=========================================================== INT_Encoder: cli push r0 push zl push zh in r0, SREG mov zl, _PvEnc ; старое состояние zl[1:0] clr zh ; Проверить состояние sbic PINC,3 ; входов энкодера (РС3=А, PD2=B_Int) sbr zh,(1<<1) ; и установить соответсвующие sbic PIND,2 ; биты (А=1, B_Int=0) в sbr zh,(1<<0) ; регистре _PvEnc mov _PvEnc,zh ; sub zl, _PvEnc ; Decode motion (zl = zl - _PvEnc) andi zl, 3 ; zl = zl and b11 breq enc_ext ; 00 - нет движения cpi zl, 1 breq enc_inc ; 01 - движение вправо cpi zl, 3 breq enc_dec ; 11 - движение влево ; 10 - неопределено mov zl, _PvDir mov zh, _PvDir ; Count by 2 for previous direction lsl zl ; zl=zl shl 1, bit0 cleared asr zh ; zh=zh shr 1, bit7=const, bit0 -> carry flag rjmp enc_add enc_dec: ldi zl, low(-1) ldi zh, high(-1) rjmp enc_setpvdir enc_inc: ldi zl, low(1) ldi zh, high(1) enc_setpvdir: mov _PvDir, zl enc_add: add _PosL, zl ; новая позиция adc _PosH, zh enc_ext: out SREG, r0 pop zh pop zl pop r0 sei reti /* ============================== Краткий курс - самоучитель микроконтроллеры AVR ATmega ATtiny для начинающих - www.AVR123.nm.ru Самые первые шаги. http://www.roboforum.ru/viewtopic.php?f=2&t=1070 "Си для МК" именно для МИКРОКОНТРОЛЛЕРОВ !!! а не для ПК как в книгах - читайте на стр. avr123.nm.ru/05.htm писать и компилировать программу советую в компиляторе CVAVR 1.25.9 - CodeVisinAVR - как с ним работать и где взять написано на стр. avr123.nm.ru и в задачах avr123.nm.ru/06.htm CVAVR - тоже имеет отличные примеры и хелп. ; ************************************************************ Отлаживать программу удобно в маленьком симуляторе VMLAB 4.3 Mb всего ( взять на www.amctools.com - он бесплатный) рассказано там: avr123.nm.ru/z2.htm avr123.nm.ru/z3.htm avr123.nm.ru/z9.htm дополнительная информация есть в хелпе и в примерах VMLAB ; ************************************************************ Еще посмотрите "супер-пупер" способ отладки устройств на МК - он описан там: avr123.nm.ru/z4.htm /////////////////////////////////////////////////////////////// // Мощнейший симулятор электроники и МК - PROTEUS !!! // Советую скачать - http://www.oProteus.narod.ru /////////////////////////////////////////////////////////////// Рекомендую использовать в работе: CVAVR 1.25.9 есть на avr123.nm.ru всего 2 Мб PROTEUS 7.4 sp3 PRO с лекарством версии 1.6.5 скачать http://www.roboforum.ru/viewtopic.php?f=2&t=2398 Можно использовать модели МК из PROTEUS 7.5 - там скачать http://kazus.ru/forum/topic_13350-600.html ============================== КНИГИ скачать бесплатно по отдельности - библиотека в начале - www.AVR123.nm.ru Сборка 187 книг + диски CD c примерами из книг в торент-раздаче - льётся быстро. http://torrents.ru/forum/viewtopic.php?t=1652142 ============================== AVR Studio 4.16 build 628. Размер: 127 MB скачать: http://www.efo.ru/ftp/pub/atmel/_AVR_MCUs_8bit/AvrStudio/AVR%20Studio%204.16%20628/AvrStudio416Setup.exe */