Hey, Bin jetzt im letzten Schuljahr angelangt und habe noch ein letztes Projekt. Muss dafür nen STM32F103RB programmieren. Dafür soll ich unter anderem STM32CubeMX mit der HAL Library verwenden. Mein Problem ist das ich von einem Poti den Wert über einen ADC auslesen soll und damit dann einen Piezo steuern soll. Der STM32F103RB hat zwei davon. Ich muss den ADC2 mit DMA im Scan Mode verwenden. Da sich die beiden irgendwie den DMA teilen muss ich den ADC1 auch aktivieren. Mein Konkretes Problem ist ich weiß nicht genau wie ich die beiden konfigurieren muss das auch die Daten von ADC2 ankommen. Bis jetzt schaffe ich es nur das ein konstanter Ton am Piezo ankommt aber nicht das sich entweder die Tonlage oder die Lautstärke ändert. Mit dem ADC1 und Polling habe ich es schon geschafft aber das ist leider zu weit weg von der Anforderung. Hat da vielleicht jemand noch ne Datei rumliegen wo das konfiguriert ist bzw irgendwelche guten Videos? Finde leider selber nichts was mir weiterhilft. LG saibot007
Zu viel Prosa - zu wenig Code. Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA.
Tobias schrieb: > Mein Problem ist das > ich von einem Poti den Wert über einen ADC auslesen soll und damit dann > einen Piezo steuern soll. Der STM32F103RB hat zwei davon. Ich muss den > ADC2 mit DMA im Scan Mode verwenden. Da sich die beiden irgendwie den > DMA teilen muss ich den ADC1 auch aktivieren. Wenn ich CUbeMX richtig interpretiere dann kann nur ADC1 mit DMA betrieben werden, ADC2 eben nicht. Ansonsten stimme ich Harry L. zu dass viel Prosa daherkommt aber die Situation nicht ausreichend erklärt wird.
Tobias schrieb: > Da sich die beiden irgendwie den DMA teilen muss ich den ADC1 auch > aktivieren Ähh nein musst du nicht. Man kann beide ADCs kombinieren um die Geschwindigkeit zu erhöhen aber das ist hier wohl nicht nötig. Du musst nur einen ADC mit einem DMA verwenden. Wastl schrieb: > Wenn ich CUbeMX richtig interpretiere dann kann nur ADC1 mit DMA > betrieben werden, ADC2 eben nicht. Nein, DMA geht mit beiden ADCs. Aber jeder ADC bräuchte einen eigenen DMA-Channel, wenn man beide ADCs nutzen würde, was hier nicht der Fall ist. Allerdings würde es auch ohne DMA wunderbar funktionieren, besonders weil du ja nur einen ADC-Kanal nutzt und dessen Wert ja direkt verwendest - da hat DMA keinerlei Vorteil.
:
Bearbeitet durch User
Nur der ADC1 hat hat nen DMA Channel. Muss aber explizit ADC2 verwenden. Der hat aber keinen DMA Channel bzw. wird auch in CubeMX keine DMA Settings angezeigt beim ADC2.
Niklas G. schrieb: > Nein, DMA geht mit beiden ADCs. Kannst du auch bitte in CubeMX demonstrieren wie man das konfiguriert?
Tobias schrieb: > Muss aber explizit ADC2 verwenden. Nochmal: Harry L. schrieb: > Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA.
Ups, du hast tatsächlich Recht, der ADC2 kann keinen DMA verwenden. Das ist anscheinend nur bei den uralten STM32F103 so, bei allen anderen STM32's ist mir das noch nicht begegnet... Im RefMan steht's im Kapitel 11.8: "Only ADC1 and ADC3 have this DMA capability. ADC2-converted data can be transferred in dual ADC mode using DMA thanks to master ADC1." Dual-Mode macht hier gar keinen Sinn. DMA macht für den einzelnen Poti-Kanal auch keinen Sinn. Tobias schrieb: > Ich muss den > ADC2 mit DMA im Scan Mode verwenden. Warum musst du ADC2 verwenden? Warum musst du DMA nutzen? ADC1 kann die selben Pins nutzen.
Beitrag #8003825 wurde vom Autor gelöscht.
Harry L. schrieb: > Nochmal: > Harry L. schrieb: >> Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA. Bei Tobias klingt das wie ein Teil seiner Pflichten in der Aufgabe: Tobias schrieb: > Ich muss den ADC2 mit DMA im Scan Mode verwenden.
Tobias schrieb im Beitrag #8003825:
> Das is so vorgegeben daran kann ich leider Nix verändern.
Dann ist die Vorgabe nicht umsetzbar. Man kann zwar ADC1+ADC2 koppeln
und dann DMA nutzen aber dann muss ADC1 auch einen Kanal konvertieren.
Sicher dass du nicht Kanal 2 statt ADC 2 konvertieren sollst?
ADC1_IN2 ließe sich wunderbar per DMA auslesen (auch wenn's unnötig
ist).
:
Bearbeitet durch User
Das ist die Vorgabe von Lehrer. Wollte wahrscheinlich alle möglichen Fälle für die Matura abdecken. Wird sich aber schätze ich nicht angeschaut haben ob wirklich alles so umsetzbar ist.
Im Bild sieht man was ich alles verwenden soll. Hab meinen Account vor kurzem erstellt. Kann deswegen nur 2 Nachrichten pro halbe Stunde schreiben und es dauert immer so lange bis ich antworte.
Na der hat ja keinen Buchstaben zu viel verwendet... Nimm halt ADC1 statt ADC2, funktioniert genau so gut, kann aber DMA.
Ja kann’s mal riskieren und schaun was er nach den Ferien sagt. Is halt sehr interessant das er sowas als Aufgabenstellung gibt obwohls nicht wirklich einfach machbar ist. Auf jeden Fall danke für die Hilfe.
Alexander schrieb: > Harry L. schrieb: >> Zu viel Prosa - zu wenig Code. > > passt doch wunderbar zu CubeMX Schwätzer! Wer keine Ahnung hat, sollte einfach mal die Fr*ss* halten!
Tobias schrieb: > Im Bild sieht man was ich alles verwenden soll. Es sollte doch möglich sein beim Aufgabensteller nachzufragen, ob das alles so seine Richtigkeit hat und ggf. sich auf eine Änderung verständigen.
Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur. Und auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so passt.
Tobias schrieb: > Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur. Und > auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so > passt. Dann mal mit seinem Vorgesetzten "sprechen" .... Es wird ja wohl einen Rektor geben.
Harry L. schrieb: > Wer keine Ahnung hat, sollte einfach mal die Frss halten! Und warum hältst Du Dich nicht daran? Der HAL Initcode wird mit der Maus zusammengeklickert, die generierten Dateien sind ein Roman.
Naja gibt’s zwar schon aber sind ne etwas größere Schule mit fast 1300 Schülern. Den Direktor sieht man nur einmal am Anfang des Jahres und dann wieder am Ende. Und die Lehrer halten sich natürlich auch den Rücken frei. Die letzten zwei drei Jahre schon viel versucht aber hilft leider nichts.
Tobias schrieb: > Naja gibt’s zwar schon aber sind ne etwas größere Schule mit fast 1300 > Schülern. Den Direktor sieht man nur einmal am Anfang des Jahres und > dann wieder am Ende. Und die Lehrer halten sich natürlich auch den > Rücken frei. Die letzten zwei drei Jahre schon viel versucht aber hilft > leider nichts. Um so etwas zu klären benötigt man das Parteibuch der Eltern. Falls nicht vorhanden, einen Anwalt mit der Klärung der Angelegenheit beauftragen.
Tobias schrieb: > Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur. > Und > auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so > passt. Ah die Sorte, kennt man zu genüge. Erfahrungsgemäß achten die dann nicht extrem pingelig auf die Details der Abgabe, weil ihnen die eigenen Details auch nicht so wichtig sind. Die Strategie ist "deal with it", die Aufgabe so lösen dass es funktioniert und dazu ggf. Anforderungen anpassen (z.B. ADC1 statt ADC2). Wichtig ist dass es am Ende im Großen und Ganzen gut aussieht - soll also grundsätzlich die gewünschte Funktion haben. Falls ein Bericht dazu gefordert ist, muss der auch hübsch und im traditionellen Stil sein (z.B. LaTeX). Wastl schrieb: > Dann mal mit seinem Vorgesetzten "sprechen" Kann man da eher vergessen. Aber nochmal... Ist das wirklich die gesamte Aufgabenstellung? Es wird nirgendwo ADC1 noch für was anderes verwendet? Es steht nirgendwo welcher Pin genutzt werden soll und was genau mit dem Ergebnis passieren soll? Ich würde ja einfach ADC1 nehmen und fertig, aber falls irgendwo ADC1 doch noch für was anderes belegt ist...
:
Bearbeitet durch User
An jeder Schule gibt es Vertrauenslehrer, genauso wie es Schülervertreter gibt...
Nein gibt leider keine weitere Aufgabenstellung. Wir haben so ein schul internes System aus mehreren Platinen die von Lehrern früher designed wurde. Auf dem Bild von gestern sieht man was man verwenden soll mehr gibt’s nicht. Der meist gehörte Satz egal von wem in dieser Schule war ,,Das Leben ist nunmal unfair stellt euch nicht so an“. Mehr kann ich da auch nicht mehr sagen
Dr. T. schrieb: > An jeder Schule gibt es Vertrauenslehrer, genauso wie es > Schülervertreter gibt... Weiß nicht wie das in den Alpenländern ist, aber in Deutschland sind Lehrer und Professoren größtenteils Beamte und haben damit Narrenfreiheit. Da kann man selbst "von oben" kaum was erwirken. Die müssten sich schon fast eine Straftat leisten bevor da was möglich ist. Man könnte Schüler der vorherigen Jahre fragen, wie sie die Aufgabe gelöst haben - diese Sorte Lehrer hat typischerweise keine Lust, sich jedes Jahr neue Aufgaben auszudenken. Wesentlich nervenschonender ist der Modus "Ergebnisse liefern", auch wenn man dafür die Aufgabe umbauen muss. Erfahrungsgemäß sind diese Lehrer der "alten Schule" zufrieden wenn sie sehen, dass man brav den Anweisungen gefolgt ist und Arbeit reingesteckt hat ohne aufmüpfig zu sein, auch wenn es sinnlose Arbeit ist. Das sehen sie aber nur, wenn das Ergebnis schön aussieht - Details prüfen ist anstrengend. Könnte man auch als Soldatenmodus sehen - nicht fragen sondern machen... Tobias schrieb: > ,,Das Leben ist nunmal unfair stellt euch nicht so an“. Mehr kann ich da > auch nicht mehr sagen Alles klar, das bestätigt meine Einschätzung! Nimm ADC1_IN2 (Pin PA2) und den ADC1-DMA, fertig. Wenn er tatsächlich nachbohrt sag dass du davon ausgegangen bist dass ADC2 ein Tippfehler war und IN2 gemeint war.
:
Bearbeitet durch User
Schüler der vorherigen Jahre haben wir probiert zu fragen. Diese hatten aber die Art von Aufgaben nie. Hab jetzt das ganze einfach mit dem ADC1 gemacht da geht’s ja ohne Probleme. Falls ihm das auffällt bzw. nicht genügt sein Problem. Kann mit reinem Gewissen sagen das ich’s wirklich probiert habe.
Nö wurde noch nie besprochen was das genau ist bzw. wie der zu verwenden ist. Der Lehrer hat ja immer so schöne Beispiel Programme (funktionieren die halbe Zeit nicht). Die 2 beim ADC wird jetzt einfach ignoriert.
Selbständig weiterdenken und unrealistische Vorgaben umsetzen die nie besprochen wurden ist auch eine Fähigkeit die erlernt werden will.
:
Bearbeitet durch User
Tobias schrieb: > Die 2 beim ADC wird jetzt einfach ignoriert. Gute Entscheidung. Alexander schrieb: > Ich denke der Dual‑Mode ist Bestandteil der Aufgabenstellung. Glaube ich nicht, da müsste man ADC1 ja sinnlos einen Dummy-Kanal konvertieren lassen nur damit ADC2 auch läuft. Ich denke nicht dass der Lehrer so ein Konstrukt gut bewerten würde.
Was sinnlos ist entscheidet der Anwendungsfall. Es gibt durchaus sinnvolle Anwendungsmöglichkeiten. Die Sache so zu konfigurieren erscheint mir eine sinnvolle Übung und Lernaufgabe.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
