Доброго времени суток!
Занялся разработкой модели в Proteus. Прежде чем заняться большой моделью решил отдельно изучить взаимодействие своего PIC12F675 и шаговика. (понимаю, что так напрямую подключать нельзя, так что это на правах опытов). Хочу добиться не непрерывного вращения двигателя, а чтобы он совершал поворот на определенный угол. Пока программу сделал обобщенно, ориентируясь на таблицу полушагового режима двигателя.
Но в модели двигатель совершал оборот на 180 градусов и останавливался. Подключив осциллограф увидел, что из четырех контактов нормально работал один. Проверил программу, предположил, что неправильно настроил микроконтроллер. Поправил настройки и после этого появились сигналы уже у двух выходов. Но вопрос пока остался - где ещё я мог допустить ошибку?..
Сама схемка

| Код | list p=pic12f675 #include <P12F675.INC> ; настройка слова конфигурации микроконтроллера ; _CP_OFF защита программного кода выключена ; _DEBUG_OFF режим отладки выключен ; _WRT_OFF защита записи FLASH выключена ; _CPD_OFF защита памяти EEPROM выключена ; _LVP_OFF режим низковольтового программирования выключен ; _BODEN_ON сброс по снижению питания включен ; _PWRTE_ON таймер задержки по квлючению питания включен ; _XT_OSC использование кварцевого резонатора на 4МГц __CONFIG _CPD_OFF&_CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
ERRORLEVEL 2 ;Вывод только ошибок
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SIGNAL equ 23h SIGNAL1 equ 24h
org 0x00
;------------------------------------------------------ ; Начальные настройки ;------------------------------------------------------ bcf STATUS,RP0 ;Выбираем банк 0 CLRF GPIO movfw 0x07 movwf CMCON movlw b'00000000' movwf ADCON0
bsf STATUS,RP0 ;Выбираем банк 1 movlw b'00000000' movwf TRISIO movlw b'00000000' movwf ANSEL movlw b'00000000' movwf VRCON bcf STATUS,RP0
;------------------------------------------------------
;------------------------------------------------------ ; Старт ;------------------------------------------------------ PREOBR bsf GPIO,0 bcf GPIO,1 bcf GPIO,2 bsf GPIO,4 call B1
;bcf GPIO,0 bcf GPIO,1 bcf GPIO,2 bsf GPIO,4 call B1
bcf GPIO,0 bcf GPIO,1 bsf GPIO,2 bsf GPIO,4 call B1
bcf GPIO,0 bcf GPIO,1 bsf GPIO,2 bcf GPIO,4 call B1
bcf GPIO,0 bsf GPIO,1 bsf GPIO,2 bcf GPIO,4 call B1
bcf GPIO,0 bsf GPIO,1 bcf GPIO,2 bcf GPIO,4 call B1
bsf GPIO,0 bsf GPIO,1 bcf GPIO,2 bcf GPIO,4 call B1
bsf GPIO,0 bcf GPIO,1 bcf GPIO,2 bcf GPIO,4 call B1
goto PREOBR ;------------------------------------------------------ B1: ;Запускающий счетчик ;Отсчитывает 511 тактов movlw b'00000001' ADDWF SIGNAL,1 BTFSS SIGNAL,7 GOTO B1 BTFSS SIGNAL,6 GOTO B1 BTFSS SIGNAL,5 GOTO B1 BTFSS SIGNAL,4 GOTO B1 BTFSS SIGNAL,3 GOTO B1 BTFSS SIGNAL,2 GOTO B1 BTFSS SIGNAL,1 GOTO B1 BTFSC SIGNAL,0 ;RETURN goto B1 END
|
|