Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Шаговый на PIC16F84A-нужна помощь

Непрочитано 22.06.2007, 20:55  
ew3ds
Временная регистрация
 
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ew3ds на пути к лучшему
По умолчанию Шаговый на PIC16F84A-нужна помощь

Кто может,подправте пожалуйта программку.
Все как бы работает нормально но еть одно но...
При нажатии кнопки "Стоп" на некоторых выходах PIC-а
остаются логические 1-цы(при каждом выключениии по разному)а нужны нули.Сам я не силен-надеюсь на вашу помощь.
Код:
;*************************************************  *******
;
;               Stepper Motor controller
;
;                                 Author : Seiichi Inoue
;*************************************************  *******

        list            p=pic16f84a
        include         p16f84a.inc
        __config _hs_osc & _wdt_off & _pwrte_on & _cp_off
        errorlevel      -302    ;Eliminate bank warning

;****************  Label Definition  ********************
        cblock  h'0c'
mode                            ;Operation mode
                                ;0=stop 1=right 2=left
count1                          ;Wait counter
count2                          ;Wait counter(for 1msec)
        endc

rb0     equ     0               ;RB0 of PORTB
rb1     equ     1               ;RB1 of PORTB
rb2     equ     2               ;RB2 of PORTB
rb5     equ     5               ;RB5 of PORTB
rb7     equ     7               ;RB7 of PORTB

;****************  Program Start  ***********************
        org     0               ;Reset Vector
        goto    init
        org     4               ;Interrupt Vector
        clrf    intcon          ;Clear Interruption reg

;****************  Initial Process  *********************
init
        bsf     status,rp0      ;Change to Bank1
        clrf    trisa           ;Set PORTA all OUT
        movlw   b'00100111'     ;RB0,1,2.5=IN RB7=OUT
        movwf   trisb           ;Set PORTB
        movlw   b'10000000'     ;RBPU=1 Pull up not use
        movwf   option_reg      ;Set OPTION_REG
        bcf     status,rp0      ;Change to Bank0
        clrf    mode            ;Set mode = stop
        clrf    count1          ;Clear counter
        clrf    count2          ;Clear counter
        movlw   b'00000101'     ;Set PORTA initial value
        movwf   porta           ;Write PORTA
        bsf     portb,rb7       ;Set RB7 = 1
        btfsc   portb,rb5       ;RB5 = 0 ?
        goto    $-1             ;No. Wait

start
;*************  Check switch condition  *****************
        btfsc   portb,rb1       ;RB1(stop key) = ON ?
        goto    check1          ;No. Next
        clrf    mode            ;Yes. Set stop mode
        goto    drive           ;No. Jump to motor drive
check1
        btfsc   portb,rb2       ;RB2(right key) = ON ?
        goto    check2          ;No. Next
        movlw   d'1'            ;Yes. Set right mode
        movwf   mode            ;Save mode
        goto    drive           ;No. Jump to motor drive
check2
        btfsc   portb,rb0       ;RB0(left key) = ON ?
        goto    drive           ;No. Jump to motor drive
        movlw   d'2'            ;Yes. Set left mode
        movwf   mode            ;Save mode

;********************  Motor drive  *********************
drive
        movf    mode,w          ;Read mode
        bz      start           ;mode = stop
        bsf     portb,rb7       ;Set RB7 = 1
        btfsc   portb,rb5       ;RB5 = 0 ?
        goto    $-1             ;No. Wait
        movlw   d'5'            ;Set loop count(5msec)
        movwf   count1          ;Save loop count
loop    call    timer           ;Wait 1msec
        decfsz  count1,f        ;count - 1 = 0 ?
        goto    loop            ;No. Continue
        bcf     portb,rb7       ;Set RB7 = 0
        btfss   portb,rb5       ;RB5 = 1 ?
        goto    $-1             ;No. Wait
        movf    porta,w         ;Read PORTA
        sublw   b'000000101'    ;Check motor position
        bnz     drive2          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive1          ;Yes. Right
        movlw   b'00001001'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive1
        movlw   b'00000110'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive2
        movf    porta,w         ;Read PORTA
        sublw   b'000000110'    ;Check motor position
        bnz     drive4          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive3          ;Yes. Right
        movlw   b'00000101'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive3
        movlw   b'00001010'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive4
        movf    porta,w         ;Read PORTA
        sublw   b'000001010'    ;Check motor position
        bnz     drive6          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive5          ;Yes. Right
        movlw   b'00000110'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive5
        movlw   b'00001001'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive6
        movf    porta,w         ;Read PORTA
        sublw   b'000001001'    ;Check motor position
        bnz     drive8          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive7          ;Yes. Right
        movlw   b'00001010'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive7
        movlw   b'00000101'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive8
        movlw   b'00000101'     ;Compulsion setting

drive_end
        movwf   porta           ;Write PORTA
        goto    start           ;Jump to start

;*************  1msec Timer Subroutine  *****************
timer
        movlw   d'200'          ;Set loop count
        movwf   count2          ;Save loop count
tmlp    nop                     ;Time adjust
        nop                     ;Time adjust
        decfsz  count2,f        ;count - 1 = 0 ?
        goto    tmlp            ;No. Continue
        return                  ;Yes. Count end

;*************************************************  *******
;             END of Stepper Motor controller
;*************************************************  *******

        end
‹center›
-- Прилагается рисунок: --
‹IFRAME src = "nuke/users_images/22062007/5371739.gif" frameborder="0" name="fr1414819" scrolling="yes" width="470" height="491" align="bottom"›[img]nuke/users_images/22062007/5371739.gif[/img]
‹font color=red›Рисунок не умещается на странице и поэтому сжат!‹/font›
Для того, чтобы просмотреть его полностью, щелкните здесь.

‹/IFRAME›
‹/center›
Реклама:
ew3ds вне форума  
Непрочитано 23.06.2007, 13:27  
EVGENIY1962
Гражданин KAZUS.RUN
 
Регистрация: 27.07.2006
Сообщений: 658
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
EVGENIY1962 на пути к лучшему
По умолчанию

Программу не смотрел,но что вам мешает после нажатия на стоп принудительно обнулить все,что вам нужно.
EVGENIY1962 вне форума  
Непрочитано 23.06.2007, 15:04  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

после трис обнулите порты

Прикрепленный файл: 2171257.rar
urry вне форума  
Непрочитано 23.06.2007, 21:00  
bomjbomj
Прохожий
 
Регистрация: 23.06.2007
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
bomjbomj на пути к лучшему
По умолчанию

Купите нормальный готовый драйвер - www.purelogic.ru.
Вам подойдет PLM004.
bomjbomj вне форума  
Непрочитано 23.06.2007, 23:55  
ew3ds
Временная регистрация
 
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ew3ds на пути к лучшему
По умолчанию

Сообщение от urry
после трис обнулите порты
urry, я в программировании полный ноль,максимум что могу так это прокомпилировать и прошить.
Твой хекс зашил но PIC не заработал
При загрузке хекса в программу программатора заметил что тип генератора установился RC, а нужен HS.
Тут такое дело,порты должны обнулиться даже при первом включении и если можешь убери еще кнопку "Стоп"
В моем назначении она совсем не нужна.
Для bomjbomj: в данной схеме я применяю драйвер FT5764M.Двигатель и драйвер взял от принтера.
----
Александр.

Прикрепленный файл: 2171257.rar
ew3ds вне форума  
Непрочитано 24.06.2007, 00:51  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Я тоже этим когда то страдал.
Zemlyanov вне форума  
Непрочитано 24.06.2007, 11:04  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Простите, плиз, напутал с конфигом. Пробуйте

Прикрепленный файл: 2146037.rar
urry вне форума  
Непрочитано 24.06.2007, 12:02  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Не могу удалить свой предыдущий пост.

Прикрепленный файл: 6070788.rar
urry вне форума  
Непрочитано 24.06.2007, 12:03  
ew3ds
Временная регистрация
 
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ew3ds на пути к лучшему
По умолчанию

Не хочет вообще управляться.Пробовал обнулить перед
трис-управляется но от проблемы не избавился.
Я паралельно открыл тему на микрочип, можешь заглянуть: http://www.microchip.su/showthread.php?p=7386#post7386
ew3ds вне форума  
Непрочитано 24.06.2007, 12:14  
ew3ds
Временная регистрация
 
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ew3ds на пути к лучшему
По умолчанию

Сообщение от urry
Не могу удалить свой предыдущий пост.
Вот это я не пробовал-щас обкатаем-момент...

Прикрепленный файл: 6070788.rar
ew3ds вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по переделке программы с PIC16F84A на PIC16F628A Ivankz Микроконтроллеры, АЦП, память и т.д 14 16.08.2012 14:25
нужна помощь) scvorec492 Автоматика и аппаратура связи 6 12.08.2011 21:43
Нужна помощь!!! ШД -> UNL2003A -> PIC16F84A xxxmonejall Микроконтроллеры, АЦП, память и т.д 10 04.08.2009 00:02
Нужна помощь! Katherine Информация по радиокомпонентам 8 20.12.2006 22:58


Часовой пояс GMT +4, время: 17:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.