Softwareseitige Diskussion mit Evaluation einer Schrittmotoransteuerung - stm32f103c8t6

OP #7527446
Lesenswert?

Guten Abend die Mikrosteuerungs-Szene,

Ich habe ein neues zu bewertendes Anliegen an Euch, nachfolgend seht Ihr ein Ausschnitt eines Programms zur Ansteuerung eines Schrittmotors.

Könntet Ihr hier einmal kommentierend "rüber schauen"?

(1) PUL (PA4) soll angesprochen werden (2) DIR (PA5) soll gesetzt werden, je nach Richtung (3) ENA (PA6) soll auf "high" dauerhaft gesetzt werden, ist aber schon werksseitig auf "high" geschaltet lt. Datenblatt

Ich habe zudem einen OPTO-Eingang, den ich einfach freilassen werde, da ich ihn nicht deuten kann.

Nun aber zum Quellcode-Ausschnitt als einfachen Diskussionsstart. Durch ein Umschalten (engl. toggling) soll die Schrittmotorsteuerung angesprochen werden. Könntet Ihr mir hier einmal den Unterschied kurz zwischen ODR und BRR darstellen, ist der hier wichtig, was ich erst einmal nicht so sehe?

Zudem setzen wir dabei im Ausgabe-Register abwechselnd die Pins von "high" auf "low":

1
int main()
2
{  
3
    RCC->APB2ENR |= 0xFC;
4

5
    // PA4, PA5 und PA6 müssen wir als Output deklarieren und "freischalten"
6

7
    GPIOA->CRL = 0x43334444; // Pin-Konfiguration setzen
8
    GPIOA->ODR |= (1<<6);    // ENA auf "high" setzen, Motor freischalten
9
    GPIOA->ODR |= (1<<5);    // DIR möglicherweise setzen, Richtung noch nicht herausbekommen
10

11
  while(1)
12
  {
13
  GPIOA->ODR = 0x0000;    // einfachstes toggling, aber mit Ziel PA4 anzusprechen
14
  delay_ms(1000);  
15
  GPIOA->ODR = 0xFFFF;
16
  delay_ms(1000);  
17
  }
18
}
19

20

21

22
void delay_ms(uint16_t t)
23
{
24
  volatile unsigned long l = 0;
25
    for(uint16_t i = 0; i < t; i++)
26
    for(l = 0; l < 6000; l++)
27
    {
28
    }
29

30
}

Mit besten Grüßen TIMBO

#7527467
Lesenswert?

Timbo2023 schrieb:

Mit besten Grüßen

Die Grüsse sind noch das Beste an deinem Eröffnungsbeitrag.

Magic Numbers (0x43334444 etc.)? Nein, das tut man nicht! delay_ms mit einer Zählschleife? Nein, das tut man nicht!

Timbo2023 schrieb:

Könntet Ihr mir hier einmal den Unterschied kurz zwischen ODR und BRR darstellen

Einfach mal das Datenblatt / User Manual lesen, da steht so etwas drin.

OP #7527470
Lesenswert?

Naja, ich habe aufgrund meiner akademisch-studierten Erfahrung die neuen Bundesländer wohl überschätzt im Mikrosteuerungs-Gebahren und den fundierten Antworten -

Bei uns im Westen "macht man" eigentlich eher, das hat uns imperialistisch groß gemacht ...

Eventuell könnten Sie aber noch einmal zu "macht man nicht", "macht man", als Beitragsform fundierter werden...

Ich bin faktisch gesehen, noch nicht einmal auf die Aussage an, die Pins 4-6 als Ausgang zu setzen, vielmehr auf die Programmbeschreibung des "Umschaltens".

#7527471
Lesenswert?

Timbo2023 schrieb:

Ich habe zudem einen OPTO-Eingang, den ich einfach freilassen werde, da ich ihn nicht deuten kann.

Eingang f. Referenzschalter? Eine Bohrspindel braucht sowas nicht, eine Kugelumlaufspindel für einen Transportschlitten schon.

Zum Code fällt mir nur ein, daß es sich im Laufe der Zeit auszahlt, wenn man die Operationen des untersten Levels in Macros oder Unterprogramme mit sprechenden Namen auslagert, so wie es in delay_ms() ja auch gemacht wurde. Das spart viel Zeit bei der Fehlersuche.

Gruß Klaus (der soundsovielte)

#7527517
Lesenswert?

Timbo2023 schrieb:

Ich habe ein neues zu bewertendes Anliegen an Euch, nachfolgend seht Ihr ein Ausschnitt eines Programms zur Ansteuerung eines Schrittmotors.

Könntet Ihr hier einmal kommentierend "rüber schauen"?

Wenn Du andere Kommentare als die aktuellen haben möchtest, solltest Du die Karten auf den Tisch legen. Im Moment sieht es für mich aus wie das großspurige Gehabe eines armen Schweins, das eine um zwei Nummern zu große Aufgabe aufgedrückt bekommen hat und nun zu verbergen sucht, daß es keine Ahnung hat, indem es irgenwas zusammenkopiertes zur Diskussion vorschlägt. Das ist aber nur mein Eindruck, nicht die Behauptung, daß es tatsächlich so ist.

Die einzig harte Info war bisher "Schrittmotorsteuerung" und "STM32F103c6t8". Alles Andere sollen wir raten.

Also: Welche HW soll verwendet werden. Welche Entwicklungssoftware soll verwendet werden. Welche Frequenzen sollen erreicht werden. Wozu soll das Ganze dienen (damit wir sehen können, ob was fehlt!!!)

Gruß Klaus (der soundsovielte)

#7527664
Lesenswert?

Timbo2023 schrieb:

Könntet Ihr hier einmal kommentierend "rüber schauen"?

Timbo2023 schrieb:

Naja, ich habe aufgrund meiner akademisch-studierten Erfahrung die neuen Bundesländer wohl überschätzt im Mikrosteuerungs-Gebahren und den fundierten Antworten -

Wieviel Sylvester hast Du denn stukkatiert?

Was mich jedoch am meisten interessieren würde: welche Hochschule war das denn? Und ich hoffe, dass Du dort keinen Abschluss erhalten hast.

Gast #7527983
Lesenswert?

Timbo2023 schrieb:

Eventuell könnten Sie aber noch einmal zu "macht man nicht", "macht man", als Beitragsform fundierter werden...

Schau dir mal die Quelltexte anderer Programmierer an, dann siehst du schon, was gemeint ist. Zum Beispiel: http://stefanfrings.de/stm32/stm32f1.html

Ich werde mir jedenfalls nicht die Mühe machen, deine Hex Codes in die Namen der Bits/Flags zu übersetzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren