Forum: Mikrocontroller und Digitale Elektronik DAC mit STM32CubeIDE und STM32F411CEU unter Linux


von Timbo2023 (timbo2023)


Angehängte Dateien:

Lesenswert?

Angehangen eine Fehler-Logdatei von einem Kodiertest mit 6 Fehlern.

Hat jemand Ideen? Die Diskussion ist eröffnet?


Gruß
timbo2023

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Heute scheint Freitag der 13. zu sein.

Aber auf jeden Fall ist heute Freitag.

von Harry L. (mysth)


Lesenswert?

Poste ein ZipFile mit dem Inhalt von Src, Inc und der .ioc-Datei!

von Timbo2023 (timbo2023)


Angehängte Dateien:

Lesenswert?

Für eine fundierte Antwort gibt es ein Bier, wenn ich Sie einmal treffen 
sollte...


timbo2023

von Timbo2023 (timbo2023)


Lesenswert?

Zitat Herr Frings von dieser Seite:
"Mittels DMA können die Messergebnisse automatisch ins RAM übertragen 
werden. Dafür habe ich hier kein Beispiel parat."


Wie könnte man diese Aussage auf das konkrete Beispiel adaptieren?

Hieran bin ich auch sehr interessiert und gerne offen für 
Lösungsvorschläge...

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Ich hab die grössten Böcke korrigiert, aber bin mir ziemlich sicher, daß 
du mit deinem Thermelement so keine sinnvolle Werte bekommen wirst.
Das ist allerdings kein Software-Problem.

Zip entpacken und als Projekt importieren!

: Bearbeitet durch User
von Timbo2023 (timbo2023)


Lesenswert?

Fehlerfrei, bis dato,

timbo2023 dankt - wenn ich Sie mal sehen sollte, gibt es eins ...


Bevor ich Ihnen eine angenehme Nacht wünsche, wo und wie lange haben Sie 
Mikrocontroller-Programmierung gelernt oder studiert, würde mich einmal 
als Anfänger interessieren...

von Harry L. (mysth)


Lesenswert?

Timbo2023 schrieb:
> wie lange haben Sie
> Mikrocontroller-Programmierung gelernt oder studiert, würde mich einmal
> als Anfänger interessieren...

Anfänger seit Mitte der 70er ;-)

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Timbo2023 schrieb:
> Wie könnte man diese Aussage auf das konkrete Beispiel adaptieren?
Indem man den Dateneingang mit dem DMA-Controller "verbindet".
Das kann man alles wunderbar in CubeMX konfigurieren.
Dazu sollte man aber schon grundlegende Konzepte der Mikrocontroller 
verstanden haben oder sich zumindest damit auseinandergesetzt haben.

von Stefan F. (Gast)


Lesenswert?

Timbo2023 schrieb:
> Hat jemand Ideen?

Ich würde damit anfangen, mit die ersten Fehlerstelle im Quelltext 
anzuschauen und darüber nach zu denken. Du schaffst das!

uint8_t MSG[16] = {0}; // ist das ein Array von Zeichen ?
sprintf(MSG, "%.3f C", Temp);

Und bevor du eigene Befehle in die main.c einbaust, solltest du die mal 
die Kommentare darin anschauen und überlegen, was das wohl für die 
Platzierung dieses Codes zu bedeuten hat.

Wenn du nicht von alleine drauf kommst, ändere mal irgend etwas in Cube 
und aktualisiere dann damit deinen Quelltext. Spätestens dann wird es 
dir klar.

von Timbo2023 (timbo2023)


Angehängte Dateien:

Lesenswert?

Es handelt sich um ein Kurz-Projekt zur Aufnahme der Temperatur mit 
Thermoelement. Anbei ein Bild und der src- und inc-Ordner mit der 
ioc-Datei (als zip-Datei).

Nun meine Frage, wenn ich das Programm laufen lasse, sehe ich an meinem 
seriellen Port keine Ausgabe auf dem Bildschirm.

(1)
Woran kann dies liegen?

Desweiteren versuche ich mir derzeit eine Möglichkeit einer Kompetenz in 
der STM32-Programmierung aufzubauen. Gibt es hier preisgünstige 
Weiterbildungsmöglichkeiten? Themenfelder GPIO-Initialisierung, 
Speicherung mit Auf- und Abruf, eine Einführung in Register und 
eventuell mit Beispielen für Sensorik und Schrittmotoren?

(2)
Wie kann ich die aufgenommenen Messwerte in einem Speicherabschnitt auf 
dem STM32F411CEU hineinschreiben? Gerne würde ich zudem in diskreten 
Abständen die komplette Abspeicherung überschreiben.

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Am Anfang Include einfügen:
1
/* Private includes ----------------------------------------------------------*/
2
/* USER CODE BEGIN Includes */
3
4
#include "usbd_cdc.h"
5
#include "stdio.h"
6
#include "LM235Z.h"

Und in der main():
1
  /* USER CODE BEGIN WHILE */
2
  float Temp;
3
  while (1)
4
  {
5
      Temp = LM235Z_Read(0);
6
       sprintf(MSG, "%.3f C", Temp);
7
8
       CDC_Transmit_FS(MSG, strlen(MSG));
9
10
       HAL_Delay(100);
11
12
    /* USER CODE END WHILE */
13
14
    /* USER CODE BEGIN 3 */
15
  }

: Bearbeitet durch User
von Timbo2023 (timbo2023)


Angehängte Dateien:

Lesenswert?

Ok, woher wussten Sie das? Dankeschön -

Anbei ein Bildschirmfoto von den laufenden Werten, die aufgenommen 
werden, nach der realen Temperatur sieht das noch nicht aus, aber etwas 
scheint anzukommen...

von Harry L. (mysth)


Lesenswert?

Timbo2023 schrieb:
> nach der realen Temperatur sieht das noch nicht aus, aber etwas
> scheint anzukommen.

Das sind ja auch nur die RAW-Values des ADC.

von Timbo2023 (timbo2023)


Lesenswert?

Sie sprachen von ADC, gibt es hierzu noch einschlägige Informationen?
Auch zur Verarbeitung von Roh-Werten.


Zudem bin ich mir auch bei der Pin-Initialisierung noch unsicher.


    GPIO_InitStruct.Pin = GPIO_PIN_7;

Was bedeutet diese Reihe genau?

PA7 ist doch PIN 17 laut PinOut-Diagramm oder täusche ich mich da 
grundsätzlich?


Abschließend:

Wie kann ich nun 250 Werte in einen Speicher schreiben und 
programmatisch nutzen?

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Timbo2023 schrieb:
> Sie sprachen von ADC, gibt es hierzu noch einschlägige Informationen?

https://www.st.com/resource/en/user_manual/um1725-description-of-stm32f4-hal-and-lowlayer-drivers-stmicroelectronics.pdf

und das Datenblatt und Referenz-manual deines Chip:

https://www.st.com/en/microcontrollers-microprocessors/stm32f411/documentation.html

Sich solche Informationen durch eigene Recherche zu beschaffen gehört zu 
den elementaren Grundvoraussetzungen wenn man mit diesen Bauteilen etwas 
sinnvolles anfangen will.

Timbo2023 schrieb:
> Auch zur Verarbeitung von Roh-Werten.

Datenblatt vom Sensor lesen, verstehen und eine Funktion schreiben, um 
aus den Rohdaten sinnvolle Werte zu errechnen.

Timbo2023 schrieb:
> GPIO_InitStruct.Pin = GPIO_PIN_7;
>
> Was bedeutet diese Reihe genau?

s.o.: HAL User-Manual und das Referenz-Manual zum verwendeten Chip.
Für den Anfang kannst du davon ausgehen, daß CubeMX das erstmal korrekt 
erledigt.

Timbo2023 schrieb:
> Wie kann ich nun 250 Werte in einen Speicher schreiben und
> programmatisch nutzen?

Da wirst du wohl zuerst einmal die Grundlagen von C lernen müssen.
Mit µCs hat das gar nichts zu tun.

Das geht am besten auf einem PC ganz ohne µC.

von Timbo2023 (timbo2023)


Lesenswert?

Dank dafür, mache morgen eine Weiterbildung im Bereich 
HAL-Treiber-Nutzung und Programmierung.

Ist die Bezeichnung im Deutschen überhaupt so richtig?

C versuche ich nebenbei zu vertiefen.

Heute lese ich mir Grundlagen zur FLASH-Speicherprogrammierung durch und 
erarbeite mir diese.


Mit Thermoelementen hatte ich aber sschon zu Studienzeiten zu tun, das 
werde ich mit geringeren Aufwendungen "hinbekommen".



Angenehmen Sonntag
timbo2023

von Sebastian R. (sebastian_r569)


Lesenswert?

Timbo2023 schrieb:
> Mit Thermoelementen hatte ich aber sschon zu Studienzeiten zu tun, das
> werde ich mit geringeren Aufwendungen "hinbekommen".

Wie ich sehe hast du deine "analogen" Probleme von hier noch nicht 
gelöst:
Beitrag "STM32F411CEU + Thermoelement - Erster Versuch eines Datenauslesens -"

von Harry L. (mysth)


Lesenswert?

Timbo2023 schrieb:
> C versuche ich nebenbei zu vertiefen.

C ist die Voraussetzung für alles Weiter, und nix für "nebenbei"

Timbo2023 schrieb:
> Heute lese ich mir Grundlagen zur FLASH-Speicherprogrammierung durch und
> erarbeite mir diese.

Und was soll das?
Ich erkenne nur vollkommen Planlosigkeit.

Timbo2023 schrieb:
> Mit Thermoelementen hatte ich aber sschon zu Studienzeiten zu tun, das
> werde ich mit geringeren Aufwendungen "hinbekommen".

Nein, wirst du nicht, wie man bereits versucht hat, dir in deinem 
anderen Thread zu erklären.

Such dir besser ein anderes Hobby!
Dir fehlen wirklich alle Grundvoraussetzungen inkl. Talent und 
Fantasie.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.