Forum
- Schrittmotor-Ansteuerung - (Elektronik)
Hallo,
ich versuche in einem Assembler-Programm den PUL-Eingang einer Schrittmotorsteuerung (Leadshine, Typ DM422C) durch einen STM32F103C8T6 anzusprechen.
Nachfolgend der Code:
-------------------------------------------------------
.syntax unified
.text
.global __main
.global function
.thumb_func
.equ RCC_BASE, 0x40021000
.equ RCC_APB2_ENR, 0x40021018 // STM32f103C8T6 - Adresse von RCC_APB2ENR - 0x18
.equ GPIOA_BASE, 0x40010800 // GPIOA-Basisadresse nach "memory-map", Datenblatt
.equ GPIOA_CRL, 0x40010800 // GPIOA_CRL ist das Konfigurationsregister
.equ GPIOA_ODR, 0x4001080C // GPIOC_BASE + 0x0C ist das Ausgaberegister (Rerenz-Handbuch, Seite 194)
.equ GPIOAEN, 1 << 2 // Seite 141, Referenz-Dokumentation
.equ CRH_OUT_SET_1, 0 << 23
.equ CRH_OUT_SET_2, 0 << 22
.equ CRH_OUT_SET_3, 1 << 21
.equ CRH_OUT_SET_4, 0 << 20 // CNF1, CNF0, MODE1, MODE0 festlegen, (Referenz-Handbuch, Seite 161)
.equ STEPPER, 1 << 2 // PA2 - PUL-Eingang Schrittmotorsteuerung
.equ COUNTER, 1000000
__main:
// Setzen der Uhr im Programm
LDR R0,=RCC_APB2_ENR
LDR R1,[R0]
ORR R1,GPIOAEN
STR R1,[R0] // Absatz beschreibt das Freischalten der Uhr mit dem Bus für Port C
LDR R0,=GPIOA_CRL
LDR R1,[R0]
LDR R2,=(CRH_OUT_SET_1|CRH_OUT_SET_2|CRH_OUT_SET_3|CRH_OUT_SET_4)
ORR R1,R2
STR R1,[R0] // Konfiguration-Register setzen
LDR R2,=GPIOA_ODR // ODR-Register wird in R2 geladen
function:
Blink:
MOVW R1,#STEPPER
STR R1,[R2]
LDR R3,=#COUNTER
BL delay1
MOVW R1,#0
STR R1,[R2]
LDR R3,=#COUNTER
BL delay1
B Blink
delay1:
SUBS R3,R3,#1
BNE delay1 // BNE, BX
BX LR
-------------------------------------------------------
Angehangen der Versuchsaufbau als Bild.
Der Schrittmotor ist "fest", dreht sich jedoch nicht.
Kann jemand "Input" hier liefern?
Mit besten Grüßen
TIMBO 2023
Gesamter Thread: