Guten Tag alle zusammen,
ich bin, was software angeht eine ziemliche niete. Mein Aufgabe/Projekt
besteht aus den folgenden Sachen:
Ich muss eine Programm in C schreiben. Die Hardware habe ich soweit
fertig und lässt sich auch programmieren. Ich habe ein STm32f103
controller benutzt.
Funktion:
Ich möchte mit der Platine, mittels eines Stromwandlers die Aktivität
verschiedener Geräte (zbsp. Pumpe) aufzeichen. Das ganze soll mit einem
RTC geschehen. Ich muss jeweils die Uhrzeit, in der das gerät aktiv war,
aufzeichnen und auf eine microsd karte abspeichern ( und über usb auch
drauf zugreifen können). Zudem wird der controller noch über eine
Batterie versorgt, damit die zeit weiterlaufen kann.
Ich habe keine ahnung wie ich da dran gehen soll (softwaretechnich). Ich
kann grade mal die Grundlagen von C.
Könnte mir einer da helfen?
Vielen Dank im voraus.
Software Engerie logger schrieb:> Ich> kann grade mal die Grundlagen von C.
Und warum musst du dann so etwas machen? Das Vorhaben ist doch dann
eigentlich schon zum Scheitern verurteilt.
Und wenn dir hier jemand helfen soll, dann müsstest du schon ein
bisschen mehr zu Hardware schreiben (was ist wo bzw. wie angeschlossen).
Ein (grober) Schaltplan wäre da ganz nett.
Hi
>Ich denke, dass ein Anfänger mit dieser Aufgabe doch etwas überfordert>ist.>Warum wählt man so ein Projekt?
Ich glaub, wir haben alle mal auf einer Schulbank gesessen und unseren
Eltern erklärt, warum die schlechte Note in einem Fach ganz plötzlich
aufgetaucht ist.... "Wir haben eine Aufgabe bekommen, auf die wir nicht
vorbereitet wurden......." Ist doch verständlich, oder ?
Es ist einfach unglaublich, das immer wieder versucht wird, durch sich
dumm stellen, andere die Arbeit machen zu lassen. Nix desto trotz,
unabhängig von der Software, versuch doch bitte erst einmal eine
Programmstruktur hinzuzaubern. Frei nach em Motto: Was braucht das
Programm:
Eine Eingabe, wofür auch immer und weil eine Eingabe schon mal prellt,
gleich eine Entprellung dafür
Einlesen von Analogwerten und Ablegen für weiterverarbeitung
Einen Timer initialisieren, einen Timer braucht man immer
Einen UART initialisieren, vieleicht sollen Daten an PC gesendet werden
Ein paar LED, soll ja auch etwas fürs Auge sein und eine persönliche
Note tragen
Ein Display, die Kurven lassen sich schlecht mit LED's anzeigen
So, und nun mach, das das geht. Bau dein Programm mit einzelnen Modulen
auf und mach erst weiter, wenn das angefasste Modul läuft. Die
Reihenfolge ergibt sich schon. Und wenn du dann Fragen hast, dann hört
sich das nicht so an: "Ich hab keinen Plan, könnt ihr mir das mal machen
....."
Man, an was für eine Schule gehst du eigentlich, das noch nicht einmal
das Einfachste, das Erstellen eines Ablaufplanes als Grundlage
beigebracht wird. Das ist absolutes Basiswissen. Wie willst du denn ein
Programm schreiben nach solch einer lächerlichen Anfrage?
Gruß oldmax
bin als aushilfskraft als Elektrotechniker in der Entwicklung tätig.
Habe mit studium ET angefangen bin aber erst im 2ten semester und habe
noch kaum erfahren was softwareprogrammieren angeht. Kann mit hardware
besser umgehen. Leider kann ich den schaltplan nicht hochladen, wegen
Datenschutz meiner Firma usw.
wir sind im studium noch nicht soweit. Wir programmieren zurzeit
adjacencListen und Matrixen und so weiter. Das Hardwarebezogene
Programmieren kommt erst in den nächsten Semestern.
Zwei Möglichkeiten:
1. Geh zu deinem Vorgesetzten und sag ihm, dass du nicht die
Anforderungen erfüllst die nötig sind, um die dir gestellt Aufgabe zu
erledigen.
2. Wenn du Zeit hast: Eigne dir das Wissen an.
Es ist auch hilfreich, wenn man sich nicht von der scheinbaren
Komplexität der gesamten Aufgabe blenden lässt und dasitzt, wie das
Kaninchen vor der Schlange.
Auch Software wird nicht an einem Abend in allen Details geschrieben,
sondern ensteht schichtweise aus Bausteinen. Lass dich nicht davon
verrückt machen, dass du JETZT nicht weißt, wie du Schritt 35
programmieren sollst. Fang erst mal mit Schritt 1 an. Halte allerdings
im Hinterkopf wo die Reise schlussendlich hingehen soll, damit du dich
nicht verläufst.
Du sollst also feststellen, ob Verbraucher eingeschaltet sind. Wie
machst du das, wie hast du dir das hardwaremässig vorgstellt? Und da
programmierst du dir jetzt erst mal was dazu. Wenn dein Verbraucher
eingeschaltet ist, soll von mir aus vom µC eine LED eingeschaltet
werden. Ist der Verbraucher aus, soll sie wieder ausgehen.
Das wäre mein erster Schritt.
Wenn das dann klappt, mach ich den nächsten Schritt: Du sollst im
Endeffekt ein Zeitprotokoll abliefern. Dazu brauchst du eine Uhr. Also
widme ich mich im nächsten Schritt nur dieser Uhr. Wie wird sie
gestellt, wie läuft sie, wie kann ich die Uhrzeit wieder abfragen?
Dann wäre eine Displaymöglichkeit nicht schlecht. Also wird losgelöst
von allem andern ein Display in Betrieb genommen. Ob das LCD oder über
UART ein Terminalprogramm auf dem PC ist, ist erst mal nicht so wichtig.
Hauptsache ich habe eine Ausgabemöglichkeit.
Hmm. Tatsächlich wär das sogar was, was ich als allererstes angehen
würde. Denn eine Ausgabemöglichkeit kann man immer brauchen.
Dann kommt der erste größere Schritt in Richtung Projekt: Jetzt werden
die 3 unabhängig voneinander 'erforschten' Bereich zusammengeführt. Wird
der Verbraucher eingeschaltet, soll nicht mehr eine LED angehen, sondern
es wird von der RTC die aktuelle Zeit ausgelesen und zusammen mit einer
entsprechenden Meldung auf meiner Anzeige ein entsprechender Text
ausgegeben.
Und so geht das dann weiter und weiter bis irgendwann das
Komplettprojekt fertig ist. IN SCHRITTEN!
Und plötzlich ist das alles nur noch halb so wild, weil jeder SChritt
für sich überschaubar ist und eine relativ simple Aufgabenstellung
beinhaltet. Auch hat man Suchbegriffe, mit denen man im Web suchen kann
und sich das eine oder andere absehen kann.
Mein Lob an Karl Heinz, der es im Gegensatz zu den ganzen Vorpostern
(die besser gar nichts geschrieben hätten) drauf hat auf den TE
einzugehen, ohne dabei herablassend/beleidigend oder flapsig zu sein.
Find ich wirklich gut.
koocky schrieb:> Mein Lob an Karl Heinz, der es im Gegensatz zu den ganzen Vorpostern> (die besser gar nichts geschrieben hätten) drauf hat auf den TE> einzugehen, ohne dabei herablassend/beleidigend oder flapsig zu sein.> Find ich wirklich gut.
Ich verstehe einfach nicht, wie man bei der Menge an strandenden
C-Analphabeten und Software-Jongleuren (1) die Zeit findet, alles zu
beantworten, und (2) dabei noch die Nerven zu behalten.
Meine These: Karl Heinz ist ein Roboter, programmiert auf Freundlichkeit
und Antworten. Grüße ;)
Hi
>Meine These: Karl Heinz ist ein Roboter, programmiert auf Freundlichkeit>und Antworten. Grüße ;)
Schöne These... aber so ist's nicht. SChließlich hat er nur mit
freundlichen Worten nochmal aufgelistet, was ich vorher, wenn auch mit
etwas "Härte" aufgezählt habe. Vielleicht sollte mann die Posts immer
bis zum Schluß lesen, aber, Asche auf mein Haupt, ich tu's auch nict
immer.
Ich kan verstehen, das jemand, der eine solche Aufgabe lösen soll und
das Basiswissen (noch) nicht hat, wie der Ochse vorm Berg steht.
Allerdings, so eine Aufgabe kommt doch nicht von ungefähr. Da gibt es
(mindestens) eine Vorgeschichte. Und ich wiederhol es auch noch mal: es
ist egal, in welcher Sprache ein Programm verfasst ist. Wenn der
Programmierer nicht in der LAge ist, schon mal eine komplexe Aufgabe in
kleine Teile zu zerlegen, wird er es nie begreifen. Das ist
Voraussetzung zum Erfolg. Und diese Auflistung hat KH und auch ich
vermißt. Aber egal, ich hoffe "Software Engerie logger" findet zu sich,
denn wie kann man einen solchen Nicknamen nehmen, wenn da nicht die
Bohne hintersteckt. Oder soll das bedeuten, das er sich mit seiner
Aufgabe vollends identifiziert? Ich bezweifle das.
Gruß oldmax
oldmax schrieb:> Schöne These... aber so ist's nicht. SChließlich hat er nur mit> freundlichen Worten nochmal aufgelistet, was ich vorher, wenn auch mit> etwas "Härte" aufgezählt habe.
Sagen wirs mal so.
Ich wollt ihm noch eine 2-te Meinung geben, die bestätigt, dass das der
Weg ist, den er gehen muss.
> Ich kan verstehen, das jemand, der eine solche Aufgabe lösen soll und> das Basiswissen (noch) nicht hat, wie der Ochse vorm Berg steht.
Das haben du und ich nun wahrlich oft genug hier im Forum gesehen. Und
es ist auch logisch, das muss so sein.
> Allerdings, so eine Aufgabe kommt doch nicht von ungefähr.
Ganz genau. So eine 'komplexe' Aufgabe fällt nicht einfach vom Himmel.
Das ganze Geheimnis, die Komplexität zu beherrschen, besteht darin sich
die Dinge in weniger komplexe Teile runterzubrechen. Und dann eben noch
mal und noch mal. Bis man bei Einzelteilen angelangt ist, die man
überblickt und beherrscht. So kriegt man komplexe technische Systeme in
den Griff.
ok ich gehe jetzt schritt für schritt vor.'Ich habe nun erstmal eine LED
angebaut an meine elektronik. Nun möchte ich mal die LED blinken lassen.
Aber ich weiß nicht wie ich die Ports ansprechen soll. Ich habe einen
Stm32f103 Controller und meine LED ist an GpioB Port 12 angeschlossen.
"Blinky" in den Beispielen ist da dein Freund.
Allerdings kann man sich da nur Anregungen holen. Wie man etwas genau
oder vielleicht auch anders macht, als man zunächst dachte. Das
Basiswissen muß aber vorher da sein. Also mußt du das Usermanual lesen;
hier alles, was mit GPIO zu tun hat. Kommst du eh nicht drum rum. Sonst
ist die nächste Frage, wie du die LED wieder ausschaltest. Oder die
Frequenz veränderst. Oder asymetrisch blinken läßt. Oder ...
Da du ja Hardwarewissen hast, wirst du die LED ja sicher auch mit
Vorwiderstand betreiben?
ich habe ein vorwiderstand. Habe in den port auf open drain gestellt und
habe im internet diese befehlszeile gefunden
"
GPIOB->BSRR = GPIO_Pin_12; // LED On
delayloop();
GPIOB->BRR = GPIO_Pin_12; // LED Off
delayloop ();
"
Weiß nicht wie ich das zum laufen bekomme
Software Engerie logger schrieb:> ich habe ein vorwiderstand. Habe in den port auf open drain gestellt und> habe im internet diese befehlszeile gefunden
Tja.
Es liegt in der Natur der Sache, dass die Dinge meistens nicht so
einfach sind, dass man mit ein paar 'im Internet gefundenen
Befehlszeilen' etwas erreichen kann.
Zumindest in ein komplettes C-Programm wirst du das wohl einbetten
müssen.
Da du ja über rudimentäre Kentnisse in C verfügst, wäre es daher nicht
so schlecht da zb ein main() drüber zu stülpen und den Port auch mal zu
initialisieren.
Lutz sagte es schon mittels
""Blinky" in den Beispielen ist da dein Freund."
Um das Studium (und das Verstehen) anderer Leute Code wirst du nicht
herumkommen. Mit 'im Internet gefundenen Codestückchen' hat noch nie
irgendjemand ein funktionierendes Programm auf die Beine stellen können,
ohne nicht wenigstens die Basisdinge vorher gelernt zu haben.
Sorry, da führt kein Weg daran vorbei. Sonst wär das ganze nämlich
watscheneinfach und man bräuchte keine Profis, die sowas jahrelang
lernen, sondern es könnte jede Putzfrau (soll keine Beleidigung des
Berufsstandes sein) zwischendurch mal ein Computerprogramm schreiben.
ports und sowas ist alles initiallierst. Ich benutze die Programme
meiner firma ich brauche nur eingeben ob es eingang oder ausgang ist und
vom welchen typ. Also initialisierung der Ports sowie der main und der
clocks etc. ist komplett fertig. Ich muss mich tatsächlich nur noch mit
der main beschäftigen :)
oldmax schrieb:> Aber egal, ich hoffe "Software Engerie logger" findet zu sich,> denn wie kann man einen solchen Nicknamen nehmen, wenn da nicht die> Bohne hintersteckt.
Es steckt zumindest dahinter, daß er krampfhaft vermeidet, selbst
Geschriebenes wenigstens einmal Korrektur zu lesen.
Als Programmierer darf man keine Schreibfehler machen, eine CPU führt
auch den größten Blödsinn aus.
Daher ist es eine gute (Programmier-)Übung auch Menschen gegenüber
sorgsam zu schreiben.
Und man drückt damit auch Achtung bzw. Geringschätzung seinem Gegenüber
aus. Der Tonfall der Antworten belegt das recht eindeutig.
Peter
>Das ganze Geheimnis, die Komplexität zu beherrschen, besteht darin sich>die Dinge in weniger komplexe Teile runterzubrechen. Und dann eben noch>mal und noch mal. Bis man bei Einzelteilen angelangt ist, die man>überblickt und beherrscht.
...und schließlich all diese Einzelteile, entsprechend ihren
Abhängigkeiten, logisch richtig zu einem Gesamtsystem zusammenfügt.
Grüsse
naja ist egal. Auf so eine Hilfe kann ich gern verzichten. Dann kriege
ich es alleine sogar besser hin ! Unter einer Community verstehe ich was
anderes, aber nicht das, was ihr hier von euch gebt. Thread ist
geschlossen/kann gelöscht werden. Von mir kommt nichts mehr.
Ps: LED ist programmiert und funktioniert wie sie funktionieren sollte !
Software Engerie logger schrieb:> naja ist egal. Auf so eine Hilfe kann ich gern verzichten.
Ich (und offensichtlich auch andere) habe(n) den Eindruck, das du
eigentlich gar keine Hilfe willst, sondern eine schnelle Problemlösung.
Abgesehen davon, das die von dir preisgegebenen Informationen sehr
dürftig sind, besteht Hilfe manchmal eben nicht darin, jemandem seine
"Probleme" zu lösen, sondern ihm aufzuzeigen, wie er sie selbst lösen
kann.
Aber was soll's. Es geht auch ohne beleidigte Leberwürste!
MfG
Ernie