Простейшая программа для экспериментов с биполярным ШД

шаговики, многофазники, постоянного тока и т.д.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

http://radiohlam.ru/program/bipolar_step_motor_prg.htm

Написано:
Во избежание затирания калибровочных констант, алгоритм заливки этой прошивки в контроллер следующий:
1. Считываем память контроллера.
2. Записываем значение последнего слова программного кода (слово по адресу 03FF) - это калибровочные данные генератора.
4. Открываем прошивку, которую мы хотим залить, в программе программатора и меняем в ней биты калибровки генератора на считанные и записанные значения.
5. Заливаем исправленную для конкретного экземпляра PIC12 прошивку в контроллер.
Но у меня нет адреса 03FF. Самый последний 03F8 Или я не туда смотрю?
И какие "конфигурации" выставлять?
Вложения
РїСЂРѕРіСЂ.GIF
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение rhf-admin »

03F8 - адрес первого слова в последней строке, но кроме него в этой строке ещё 8 слов. Адрес последнего байта в последней строке как раз 03FF, соответственно калибровочная константа 3434.
Конфигурации нужные откроются из файла с прошивкой (бог его знает, что я там наставил, но скорее всего в данном случае только PWRT).
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

Вроде прошил с горем пополам. А как проверить прошивку МК не подключая его к драйверу? Может подать на МК питание и нажимая кнопки посмотреть что будет на его "выходных" ножках осциллографом?
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение rhf-admin »

Можно и так.
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

А здесь ножки МК не пронумерованы

Изображение
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение rhf-admin »

Зато подписаны, можно в доке посмотреть. :)
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

Он "крутится" маленькими шажками! :lol:

А можно сделать чтобы он нормально вращался и была регулировка скорости?
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение rhf-admin »

Всё можно сделать. Скорость фактически определяется частотой смены шагов. В проге есть процедурки Forward и Backward. Из них вырежи паузы и вызывай их с определённой частотой. Эта частота и будет определять скорость вращения вперёд и назад. Соответственно, частоту эту можно менять (хоть кнопками, хоть по тому же UARTу передавать) и будет меняться скорость вращения. Вызов процедур с определённой частотой можно организовать встроенными таймерами или просто процедурами задержки.
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

Можешь считать что напечатал такой ответ для столба :mrgreen:
Какие "паузы"? Те две что я выделил?
Как "процедурки" вызывать?
Куда "UART" передавать?
Где встроенный таймер?

Код: Выделить всё

;-- http://radiohlam.ru - собери сам, помоги собрать другу
;------------------------------------------------------------------
 list    p = 12f629
 __config 01FC4h          ;  01111 11 1 0 0 0 100 - (7,8)защиты памяти нет, (6)сброс по питанию разрешен,
                          ;  (5)GP3/-MCLR работает как -GP3, (4)PWRT включен, (3)сторожевой таймер - выключен, (2-0)генератор - внутренний
;********* Переменные ************************************
         CBLOCK 0x20      ; Начальный адрес блока пользовательской памяти
         Step1
         Step2
         Step3
         Step4
         Counter1
         Counter2
         StepNumber
         ENDC             ;
;******** Константы ***************************************
Status     equ         03h         ; Регистр выбора банка.
GPIO       equ         05h         ; Регистр управления защелками порта. (банк 0)
Cmcon      equ         19h         ; Регистр Cmcon - компаратора (банк 0)
TrisIO     equ         05h         ; Регистр выбора направления работы выводов порта. (банк 1)
INTCON     equ         0Bh         ; Регистр разрешения(1)/запрета(0) прерываний (любой банк)
OSCCAL     equ         10h         ; Регистр хранения калибровочной константы (банк 1)
T1         equ         .255
T2         equ         .255
INDF       equ         0h          ; регистр косвенной адресации
FSR        equ         04h         ; регистр адреса при косвенной адресации
;********************************************************
; Пусть у нас GP0 - выход на En1, GP1 - выход на EN2, GP2 - выход на IN1,IN2
; GP4 - вход кнопки, GP5 - вход кнопки
;********************************************************

          org 0
;******************************************************************************************
;******** КОНФИГУРИРОВАНИЕ КОНТРОЛЛЕРА ********************************************************
;*** Необходимо помнить, что калибровочные константы стираются при программировании, **********
;*** поэтому их надо сохранять, OSCCAL хранится по адресу 03FFh,  биты калибровки схемы BOR - *
;*** 12-й,13-й биты слова конфигурации (в моем случае BOR - 01, OSCCAL - 3458)*****************
;****** Калибровка Генератора *****************************************************************
start       bsf         Status,5         ;
            Call        3FFh             ; Загрузить калибровочную константу в w
            movwf       OSCCAL           ;
;********* Запрет прерываний ************************************************
           clrf         INTCON           ; запретить все прерывания
;******** Установка направления работы ног ******************************
            bcf         Status,5         ; перейти в банк 0
            clrf        GPIO             ; инициализация защелок (все выходы равны нулю)
            movlw       .7               ; биты 0..2 поднять
            movwf       Cmcon            ; компаратор выключен, GP0, GP1, GP2 - цифровые вх/вых
            bsf         Status,5         ; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).
            movlw       b'00110000'      ; настройка выходов (GP4,GP5 - входы)
            movwf       TrisIO           ;
            bcf         Status,5         ; перейти в банк 0
;******************************************************************************************
            movlw       b'00000001'
            movwf       Step1
            movlw       b'00000010'
            movwf       Step2
            movlw       b'00000101'
            movwf       Step3
            movlw       b'00000110'
            movwf       Step4
            clrf        StepNumber
;******************************************************************************************
;****** РАБОЧАЯ ЧАСТЬ *********************************************************************
;****** Сканирование кнопок ***************************************************************
wait        btfss   GPIO,4
            call    Forward
            btfss   GPIO,5
            call    Backward
            goto    wait
;******************************************************************************************
Backward ;-------------------------------
           decfsz StepNumber,1
           goto Next
           movlw .4
           movwf StepNumber
Next  movlw  1fh
      addwf  StepNumber,0
      movwf  FSR
      movf   INDF,0
      movwf  GPIO
           call [b]pause[/b]
      clrf   GPIO
           return
Forward  ;-------------------------------
           btfsc StepNumber,2     ; если StepNumber=4, то обнулить
           clrf  StepNumber
           incf  StepNumber,1
      movlw  1fh
      addwf  StepNumber,0
      movwf  FSR
      movf   INDF,0
      movwf  GPIO
           call [b]pause[/b]
      clrf   GPIO
           return
;-----------------------------------------
pause             movlw   T2
                  movwf   Counter2
pause2            movlw   T1
                  movwf   Counter1
pause1            nop
                  decfsz  Counter1,1
                  goto pause1
                  decfsz Counter2,1
                  goto pause2
                  return
 end
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Простейшая программа для экспериментов с биполярным ШД

Сообщение БАРС »

Короче ну всё в топку. Тема закрыта.
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Ответить