while (1)
{
// Der ADC wird gestartet und misst den Wert auf adc1 (PIN A0)
HAL_ADC_Start(&hadc1); // adc1 auf pin PA0 == A0
HAL_ADC_PollForConversion(&hadc1, 10);
// Der Wert von adc1 (Poti) wird ausgelesen und in value gespeichert
value= HAL_ADC_GetValue(&hadc1);
}
Also ADC auslesen in einer Round Robin Struktur und in das Ergebnis in
value speichern habe ich bis jetzt geschaft. Das Problem bei mir ist
Ausgabe des Wandlungsergebnises auf Ports C0-C3.
Aber wenn wir hier schon die Hausaufgaben von anderen machen, können
doch wir alle etwas dabei lernen?
Wie sinnvoll ist das Beispiel überhaupt??
Denke die meisten von uns hätten das jetzt über einen Timer-Interrupt,
drei Bitmasken und einen free-running ADC gelöst, aber was hat das mit
Round Robin zu tun?
Hallo Jan, es ist so gedacht , dass man nur das höchste ,das niedrigste
und Bits 3 und 4 auf entsprechenden Ports (C0-C3) ausgeben mus. Also
nicht das gesamte Wandlungsergebnis. Und ich weiß nicht wie ich das
realieseren soll. Has du vielleicht einen Lösungsvorschlag?
Oleksandr S. schrieb:> Könnte mir bitte jemand mit folgender Aufgabe helfen?
Ich hoffe das niemand jetzt einfach deine Hausaufgabe erledigt und das
Ergebnis präsentiert. Die Beantwortung einzelner Fragen, wie das hier
begonnen wurde, ist der richtige Weg.
Ich hoffe dass dir in deinem Leben auch keiner hilft. Wer bist du um
überhaupt irgendwas hier zu sagen? Wenn du nichts angemessenes zu sagen
hast, spar lieber deine Zeit.
Oleksandr S. schrieb:> Ich hoffe dass dir in deinem Leben auch keiner hilft. Wer bist du um> überhaupt irgendwas hier zu sagen? Wenn du nichts angemessenes zu sagen> hast, spar lieber deine Zeit.
Willst du hilfe, oder was?
Oleksandr S. schrieb:> Ich hoffe dass dir in deinem Leben auch keiner hilft. Wer bist du um> überhaupt irgendwas hier zu sagen? Wenn du nichts angemessenes zu sagen> hast, spar lieber deine Zeit.
Interessant. Mit der Einstellung hast du definitiv keine Hilfe verdient.
Auch nicht von einem Autor, der im Laufe von 25 Jahren zahlreiche Bücher
und Tutorials von Anfang an kostenlos veröffentlicht hat. So viel zur
Frage, wer ich eigentlich bin.
Oleksandr S. schrieb:> Ich hoffe dass dir in deinem Leben auch keiner hilft. Wer bist du um> überhaupt irgendwas hier zu sagen? Wenn du nichts angemessenes zu sagen> hast, spar lieber deine Zeit.
Hier wird eher Hilfe zur Selbsthilfe gegeben. Und Hausaufgaben fuer
andere zu loesen ist hier nicht gerne gesehen.
Moment mal, ich habe niemanden gebeten, meine Hausaufgaben für mich zu
machen, ich hatte nur an einer Stelle dieser Aufgabe ein Problem (siehe
2. Kommentar). Warum ist es jetzt notwendig, wegen einer unauffälligen
Person hier sinnlose Diskussionen zu veranstalten oder habt ihr heute
nichts wichtigeres zu tun?
Oleksandr S. schrieb:> Moment mal, ich habe niemanden gebeten, meine Hausaufgaben für mich zu> machen
Warum kritisierst du dann, dass ich ebenfalls darum gebeten habe, es
nicht zu tun?
Ich dachte wir befinden uns im Forum wo gegenseitig geholfen wird ? Wie
würdest du reagieren, wenn du eine Frage hast und dann komme ich und
sage "Hey Leute , hilft ihm nicht" ? Du hast einfach die Kommentare
nicht aufmerksam gelesen und hast dir gedacht, dass hier jemand meine
Hausaufgaben für mich machen soll, aber das stimmt gar nicht. Ich hatte
eine konkrete Frage, aber naja es ist schon dank dir vorbei.
Du soltest deine Lesekompetenz verbessern!
>"Hey Leute , hilft ihm nicht"
hat Stefan nicht gesagt, ehr so "Heft ihm bei den Teilschritten"
Hättest du Stefans Tutorial gelesen wüstest du wie mann Pins
setzt/löscht.
Aus den bisher gegebenen Informationen meiner Vorredner ist die Aufgabe
eingentlich lösbar.
Bitte deine Lösung hier posten.
Oder wo hast du noch Probleme?
Moin, -
MX_USART2_UART_Init()definiert und nicht benutzt und nicht benoetigt.
Du sollst Port c benutzen?
Wo kommen die Wert des ADC in (int)value?
Gruesse
Th.
Genau ich soll 4 Porte PC0 PC1 PC2 PC3 benutzen, die habe ich auch als
GPIO Ausgänge definiert. Die "value" habe ich beim Kopieren tatsächlich
vergessen. Jetzt habe ich korrigiert.
1
#include"main.h"
2
ADC_HandleTypeDefhadc1;
3
voidSystemClock_Config(void);
4
staticvoidMX_GPIO_Init(void);
5
staticvoidMX_ADC1_Init(void);
6
intmain(void)
7
{
8
/* USER CODE BEGIN 1 */
9
intvalue=0;
10
/* USER CODE END 1 */
11
HAL_Init();
12
SystemClock_Config();
13
MX_GPIO_Init();;
14
MX_ADC1_Init();
15
while(1)
16
{
17
18
HAL_ADC_Start(&hadc1);// adc1 auf pin PA0 == A0
19
HAL_ADC_PollForConversion(&hadc1,10);
20
value=HAL_ADC_GetValue(&hadc1);
21
// Der Wert von adc1 (Poti) wird ausgelesen und in value gespeichert
Oleksandr S. schrieb:> Also der Code wurde kompiliert ,keine Fehlermeldungen
Wenn Dir das reicht, die Daten werden trotzdem am flaschen Port
ausgegeben.
Habe noch nicht fertig...
Guido K. schrieb:> Was ich bei der Aufgabenstellung nicht verstehe ist, was Round Robin da> zu suchen hat.
Vielleicht wird die Round-Robin Struktur in einer Folge-Aufgabe
benötigt.
Stefan ⛄ F. schrieb:> Vielleicht wird die Round-Robin Struktur in einer Folge-Aufgabe> benötigt.
Ja, vielleicht schon, aber ich wüsste jetzt nicht mal wie man bei einem
linearen Algorithmus, also Wert lesen, Wert ausgeben, irgendwie einen
Round Robin einbauen könnte. Es gibt keinen konkurrierenden Prozess, der
Ablauf ist synchron und nicht nebenläufig.
Vielleicht soll er auch nicht auf das Ergebnis warten, sondern den ADC
nur triggern.
Dann kann es passieren dass "jemand" zweites ein ADC Ergebnis haben
möchte, noch bevor das Ergebnis der ersten Messung da ist. Es sollte
also irgendwo ein FIFO geben welches die Anfrager verwaltet und eine
Queue bildet.
So würde ich das interpretieren (und ist im Gegensatz zu dem Teil mit
den Pins auch Praxisrelevant, auch wenn es normal eher eine
Schnittstelle wie SPI o.ä. trifft).