Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [pic] 12F675 управление шаговым двигателем


Автор: Текстоплет 25.11.2011, 23:32
Доброго времени суток! 

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

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

Сама схемка 

user posted image


Код

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)