Forum

Einloggen | Registrieren | RSS  

TIMBO 2023(R)

01.12.2023,
19:54
 

- 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

NochEinGast

01.12.2023,
20:53

@ TIMBO 2023

- Schrittmotor-Ansteuerung -

» 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
»
»


Die F Serie ist ein M4. Wenn man den in Assembler programmiert, dann passt was nicht im Konzept.

Der HAL vom Cube ist schlank und ganz gut.

TIMBO 2023(R)

01.12.2023,
22:19

@ NochEinGast

- Schrittmotor-Ansteuerung -

(1)
Was meinen Sie mit - da passt etwas nicht im "Konzept"?

(2)
Ich möchte an PUL und DIR jeweils ein "high" anlegen in Assembler, dann müsste der Motor doch schon verfahren?

Thomas Kuster(R)

02.12.2023,
10:23

@ TIMBO 2023

- Schrittmotor-Ansteuerung -

Hallo TIMBO 2023
hast Du ENA(ble) wirklich nicht angesteuert ?
Mit vielen freundlichen Grüssen Thomas