Hallo zusammen, ich suche schon seit Tagen nach einer Lösung, wie ich eine Stoppuhr realisiere. Ich habe ein kleines Programm in C geschrieben, für den ATmega16, mit drei Tastern, einen für Start, einen für Stopp und einen für den Reset.Dazu habe ich ein Display mit eingebunden, welches mit den lcd_routines läuft. Jetzt möchte ich aber gerne noch eine Stoppuhr mit einbauen, welche mit den genannten Tastern gestartet bzw. gestoppt und resetet wird. Die Zeiten will ich mir am Display anzeigen lassen, in Sekunden, hundertstel und tausendstel Sekunden. Vielleicht kann mir ja jemand hier behiflich sein, wo ich soetwas finde, denn dies ist ja bestimmt keine Neuerfindung. Falls niemand hier bescheid weiß, wo es soetwas in der Art gibt, dann wäre ich natürlich auch sehr froh darüber, wenn mir einer Anhaltspunkte gibt, wie ich dies realisieren könnte.
Nimm einen ATmega16 mit Tastern und Display, und schreibe dann ein Programm dazu. Wenn Du lieber etwas fertiges willst, dann kaufe eine fertige Uhr. Kostet sicher nicht mehr als 10 Euro.
Alfred Flöckchen schrieb: > Jetzt möchte ich aber gerne noch eine Stoppuhr mit einbauen, welche mit > den genannten Tastern gestartet bzw. gestoppt und resetet wird. Die > Zeiten will ich mir am Display anzeigen lassen, in Sekunden, hundertstel > und tausendstel Sekunden. > > Vielleicht kann mir ja jemand hier behiflich sein, wo ich soetwas finde, > denn dies ist ja bestimmt keine Neuerfindung. Wie wärs mit selber programmieren? So eine Uhr ist ja nicht gerade Raketentechnik. Sobald du mit einem Timer umgehen kannst und auf ein LCD ausgeben kannst, ist die Sache gebongt. FAQ: Timer AVR-Tutorial: Uhr AVR - Die genaue Sekunde / RTC
Na, wie erwartet bekommt man hier wieder tolle Antworten. Wie schon geschrieben, habe ich ja schon ein Programm mit Tastern und Displayausgabe geschrieben. So, und wenn ich jetzt noch wüsste, wie man die Stoppuhr selbst programmiert, dann müsste ich ja auch nicht so doof fragen. Ich schrieb auch, dass ich über Anhaltspunkte sehr froh bin, um zu erfahren, wie man diese Stoppuhr selbst programmiert.
Alfred Flöckchen schrieb: > Na, wie erwartet bekommt man hier wieder tolle Antworten. Na, was erwartest du? Eine Stoppuhr IST trivial, wenn man mit Timern umgehen kann. Also musst du dich mit Timern beschäftigen. Der ist dein Zeitgeber. Und ab dort ist es dann nach 10 Tausendsetlsekunden ist 1 Hunderstel vergangen nach 10 Hunderstel ist eine Zehntel vergangen nach 10 Zehntel ist 1 Sekunde vergangen Nach 60 Skeunden ist 1 Minute vergangen Also einfach nur auf die jeweiligen Endwerte vergleichen und die nächst höhere Stufe um 1 weiter stellen. Recht viel mehr als Vergleichen und gegebenenfalls 1 zu einer Variablen addieren brauchst du da nicht können. Der Schlüssel ist der Timer und das man den so einstellen kann, dass er in bestimmten Zeitabständen (die man 'konfigurieren' kann) eine bestimmte Funktion aufruft. Und dazu hab ich dir ein paar Links gegeben Lernen musst du schon selber. Oder was fertiges kaufen, wenn dir das zu mühsam ist.
Karl Heinz Buchegger schrieb: > Alfred Flöckchen schrieb: >> Na, wie erwartet bekommt man hier wieder tolle Antworten. > > Na, was erwartest du? Eine fertiges Programm inkl. 30 seitiger Doku, was dachtest du denn?
Hallo Karl Heinz, das war nicht auf dich bezogen (Na, wie erwartet bekommt man hier wieder tolle Antworten). Als ich dies schrieb, sah ich deine Antwort noch nicht. Danke für die Links. Ich habe dort auch schon etwas zuvor gestöbert und habe auch eine Routine für den Timer1 geschrieben, allerdings weiß ich nicht, wie man diesen Wert auslesen kann, um ihn am Display auszugeben. Übrigens, was ich dachte, schrieb ich ja mittlerweile schon zweimal hin. Ich fragte einfach nur, ob es einen fertigen Code gibt oder ob mir jemand, falls es den Code nicht geben sollte, Unterstützung gibt, wie ich diesen selbst realisieren kann.
Alfred Flöckchen schrieb: > Danke für die Links. Ich habe dort auch schon etwas zuvor gestöbert und > habe auch eine Routine für den Timer1 geschrieben, allerdings weiß ich > nicht, wie man diesen Wert auslesen kann, um ihn am Display auszugeben. Studier mal diesen Thread Beitrag "Befehlszusammenfassung in C" Keine Sorge, auch wenn er nicht so anfängt, entwickelt er sich doch in eine Richtung, die für dich nützlich ist. Wichtig: Vollständig lesen! Ich hab in meiner Musterlösung einen Fehler eingebaut.
Alfred Flöckchen schrieb: > Danke für die Links. Ich habe dort auch schon etwas zuvor gestöbert und > habe auch eine Routine für den Timer1 geschrieben, allerdings weiß ich > nicht, wie man diesen Wert auslesen kann, um ihn am Display auszugeben. Wozu möchtest du den Wert vom Timer ausgeben, abgesehen davon, dass du das Timerregister einfach nur lesen müßtest. (Beispiele s. Links o.). Der Timer erzeugt dir eine Zeitbasis unabhängig vom Beschäftigungsgrad des Prozessors. Deine Zeit erzeugst du über einen Software-Zähler, der bei jedem Tick des Timers eins weiter zählt.
Eine Uhr hat er ja schon, also hat er schon einen funktionierenden imer und funktionierende Ausgabe-Routinen. Wo ist also nun das Problem? Da könnte ich ja gleich fragen: Vor mir liegt ein Burger. Ich möchte den Burger essen. Wie kann ich das tun?
Damit die Bedienung keinen Einfluss auf die Genauigkeit hat, musst du das reine Hochzählen der Millisekunden und die Abfrage der Start- und Stopp-Taste im Timer-Interrupt machen. In einem mormalen Loop, wie halt so üblich, machst du das Formatieren der Zeitangabe (100tel, 10tel, Sekunden, Minuten), bedienst das Display und die Reset-Taste ... evtl. hast du ja später noch Lust zu einer Computer-Anbindung per RS232/USB ...
Alfred Flöckchen schrieb: > Die Zeiten will ich mir am Display anzeigen lassen, in Sekunden, > hundertstel und tausendstel Sekunden. Bei einer Steuerung über Tasten erscheinen die tausendstel Sekunden eher überflüssig. Statt dessen wären zehntel Sekunden wichtiger.
Ok, da lag ich total falsch. Ich dachte, dass man den Timer erst auslesen muss und diesen dann irgendwie teilen muss, um ihn dann am Display sichtbar zu machen. Ich muss mich jetzt erst mal etwas einlesen. Vielleicht versteh ich dann etwas mehr. Danke
Vieleicht lernst Du das Programmieren erstmal mit etwas einfacherem. - Lass mal eine LED blinken. - Lass die LED exakt in 1/100tel oder 1/1000 Sekunden blinken. - Zähle die Impulse und zeige die Zahl an. - Nutzen einen Taster, um die Zählung zu starten und zu stoppen. - Programmiere eine Uhr. - Programmiere eine Stoppuhr. - Kombiniere beide Programme. Man fängt klein an. Offensichtlich hast Du noch wenig Erfahrung im Programmieren. Der Versuch, fremde Software zu erweitern ist da nicht so geschickt. Selber machen ist lehrreicher und einfacher. Erst mit einer gewissen Erfahrung wirst Du imstande sein, fremde Programme zu verstehen und zu erweitern.
Alfred Flöckchen schrieb: > Ok, da lag ich total falsch. Ich dachte, dass man den Timer erst > auslesen muss und diesen dann irgendwie teilen muss, um ihn dann am > Display sichtbar zu machen. Siehst du. JETZT hast du was gelernt. Der Zweck eines Timers ist oft gar nicht das zählen an sich. Der Zweck eines Timers besteht darin, dass er in gleichmässigen Zeitabständen dafür sorgt, dass eine ganz bestimmte Funktion aufgerufen wird. Was man dann auch immer in dieser Funktion macht, ist eine andere Geschichte. Das könnte die Überprüfung sein, ob eine Taste gedrückt ist, dass kann das Weiterschalten eines Lauflichtes sein, das kann ... was auch immer. Und das kann natürlich auch das Hochzählen einer Variablen um 1 sein, die du 'Sekunde' nennst. Und wenn die ISR tatsächlich jede 1 Sekunde aufgerufen wird, weil der Timer so eingestellt ist, dann ... na dann 'zählt' diese Variable im Sekundentakt hoch. Und wenn dann schon eine Variable mit Sekunden da sind, dann kann man auch eine weitere Variable 'Minute' haben, die immer dann um 1 erhöht wird, wenn die Variable 'Sekunde' bei 60 angelangt ist. Und eine Stoppuhr ist dann ganz einfach Der ganze Zählvorgang findet nur dann statt, wenn eine weitere Variable auf TRUE steht. In der Hauptschleife iwrd eine Taste abgefragt und wenn die Taste gedrückt ist, dann wird diese Variable eben auf TRUE gestellt (womit die 'Uhren-Variablen' augenblicklich mit Zählen anfangen. Und mit wieder einer anderen Taste wird die Variable wieder auf FALSE gestellt (womit die Uhren Variablen nicht mehr weiterzählen). Na und eine dritte Taste sorgt dafür, dass die Uhren Variablen alle wieder auf 0 gestellt werden. In der Hauptschleife noch die Ausgabe der UhrenVariablen aufs LCD und fertig ist die Stoppuhr. Und jetzt sag selber. Abgesehen von der Sache mit dem Timer - ist das Raketentechnik oder ist das eher trivial?
1 | volatile uint8_t clockRunning; |
2 | volatile uint8_t Sekunde; |
3 | volatile uint8_t Minute; |
4 | |
5 | ISR( ... ) |
6 | { |
7 | |
8 | if( clockRunning ) |
9 | { |
10 | Sekunde++; |
11 | |
12 | if( Sekunde == 60 ) |
13 | { |
14 | Sekunde = 0; |
15 | Minute ++; |
16 | } |
17 | } |
18 | } |
19 | |
20 | int main() |
21 | { |
22 | .... |
23 | |
24 | |
25 | while( 1 ) |
26 | { |
27 | |
28 | if( PIN ..... Taste 1 gedrückt ) |
29 | clockRunning = TRUE; |
30 | |
31 | if( PIN ..... Taste 2 gedrückt ) |
32 | clockRunning = FALSE; |
33 | |
34 | if( PIN ..... Taste 3 gedrücjt ) |
35 | { |
36 | Sekunde = 0; |
37 | Minute = 0; |
38 | } |
39 | |
40 | Sekunde + Minute am LCD ausgeben |
41 | } |
42 | } |
Das ist doch nicht schwer - bis auf die Sache mit dem Timer.
Kurze Zwischenfrage: ist es sinnvoll, tausendstel Sekunden anzuzeigen? Wenn man von Hand stoppt, ist es ja schon unmöglich, die hundertstel Sekunden korrekt zu erwischen. Ansonsten: schönes Projekt!
Ja, es macht Sinn: Zum Eindruck schinden. Irgendwass muss die Uhr ja (zumindest scheinbar) besser können, als eine 5 Euro Stoppuhr aus dem 1 Euro Shop. Sonst macht das Vorführen keinen Spaß.
Danke nochmals Karl Heinz, jetzt wird mir einiges schon etwas verständlicher. Jetzt muss ich mich nur erst noch genauer in diese Timer Geschichte einlesen und dann versuch ich mal das ganze umzusetzen. Dann werde ich ja sehen, wo meine weiteren Probleme liegen. Eine Raketentechnik ist es bestimmt nicht, aber wenn man von irgend etwas keine Ahnung hat, kann der Anfang schon recht schwer sein und da sieht man oft den Wald vor lauter Bäumen nicht.
Markus W. schrieb: > Kurze Zwischenfrage: ist es sinnvoll, tausendstel Sekunden anzuzeigen? > Wenn man von Hand stoppt, ist es ja schon unmöglich, die hundertstel > Sekunden korrekt zu erwischen. > > Ansonsten: schönes Projekt! Hi Markus, ob es Sinn macht oder nicht, dass werde ich dann vermutlich schon noch sehen, aber im Gegensatz zu einer gekauften Uhr, wird diese ja auch nicht per Hand gestoppt. Ich finde es aber schön, dass dir das Projekt gefällt :-)
Hallo Karl Heinz, ich habe jetzt mal ein Programm für meine Stoppuhr geschrieben. Fehler werden keine angezeigt, aber auf dem Display erscheinen leider nur Nullen. Könntest du mir vielleicht einen Tipp geben wie ich jetzt weiter vorgehen sollte. Ich hoffe, dass der Rest so stimmt und ich es soweit richtig gemacht habe, wie du mir es erklärt hast. Falls nicht, dann bitte nicht gleich zerfleischen, ich bin doch Anfänger und versuche es zumindest gerne, mir hier etwas zu erlernen.
Aber nicht mit dem Programm :-) Muss mal weg. Bin um 15 Uhr wieder online (voraussichtlich)
Oh Gott, hab ich so viel falsch gemacht :-) Ich schau dann später mal rein.
OK, wenn die Zeit maschinell genommen wird, dann ergeben die 100stel auch einen Sinn. Alfred Flöckchen schrieb: > Oh Gott, hab ich so viel falsch gemacht :-) Ich hab das Programm jetzt nur ganz grob überflogen. Verwendest du Timer? Ich hab auf den ersten Blick nur Verzögerungsschleifen gesehen. Das funktioniert zwar im Prinzip, aber du fängst dir damit immer wieder Probleme ein, was die Genauigkeit betrifft. Würde dir die Timer-Technik dringend empfehlen. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR Karl Heinz hat dir oben ja schon einen wertvollen Fingerzeig für den strukturellen Aufbau gegeben.
Alfred Flöckchen schrieb: > Oh Gott, hab ich so viel falsch gemacht :-) Da drinnen sind noch nicht einmal Ansätze einer Uhr zu entdecken.
Hallo Karl Heinz! Jetzt weiß ich auch was du damit meinst, dass in dem Programm nicht mal ansatzweise eine Uhr zu erkennen ist lach Ich hab versehentlich das falsche Programm eingefügt. Vielleicht kannst du dieses ja grad wieder löschen, da ich keine Berechtigung dazu habe und dieses hier auch nichts mit dem Thema zu tun hat. So, aber jetzt hab ich das richtige hochgeladen.
Und wie soll das funktionieren, wenn deine Funktion zeitanzeige() nur dann aufgerufen wird, wenn gerade eine Taste gedrückt ist? die Funktion sollte ja doch wohl dauern aufgerufen werden, damit sich auch auf der Anzeige was tut.
Ja Karl Heinz, genau da liegt jetzt mein Problem und ich weiß einfach nicht, wie ich das machen soll. Wenn das wenigstens mal funktionieren würde, dann könnte ich auch mal sehen, ob sich da überhaupt was tut. Du lachst wahrscheinlich drüber, da du bestimmt weißt warum es nicht geht, aber ich steh grad voll auf dem Schlauch. Ist wenigstens der Rest einigermaßen in Ordnung?
Klassischer Anfängerfehler: zuviel auf einmal, von dem man keine Ahnung hat. Die Aufgabe unterschätzt und das eigene Können überschätzt. Fang halt erst mal klein an! Muss ja nicht gleich eine Stoppuhr sein. Eine Variable, die du in der ISR hochzählst und der Hauptschleife aufs LCD ausgibst, völlig ohne irgendwelche Taster, ist für deine ersten Gehversuche auch schon genug. Und wenn das dann läuft, dann baust du es nach und nach immer weiter in Richtung Stoppuhr aus. > genau da liegt jetzt mein Problem und ich weiß einfach > nicht, wie ich das machen soll. Dann lern es. Sorry, wenn das jetzt brutal klingt. Aber genau da hat noch jeder durch müssen, wenn er programmieren lernen will: Indem er sich durchgebissen hat. Durch Aneinanderreihen von geklautem Code ohne zu wissen was man tut hat noch nie jemand programmieren gelernt.
Alfred Flöckchen schrieb: > Ja Karl Heinz, genau da liegt jetzt mein Problem und ich weiß einfach > nicht, wie ich das machen soll. Das ist doch ganz einfach: 1. Ein Timerinterrupt 1ms zählt z.B. eine 32Bit-Variable, ergibt max 49 Tage. 2. Zusätzlich zählt der Timerinterrupt ein Byte runter bis 0. Ist das Byte 0, wandelt das Main den 32Bit-Zähler in d,h,m,s,ms und stellt das dar. Die Bytevariable wird wieder auf 200 gesetzt. Also alle 200ms wird neu angezeigt, das ist ergonomisch und belastet die CPU kaum. 3. Zusätzlich entprellt der Timerinterrupt die Taste(n). Mit der bewährten 4-fach Entprellung startet der Zähler zwar 4ms später, stoppt aber auch 4ms später, man hat also keinen Fehler durch die Entprellung. 4. fertig. Peter
Karl Heinz Buchegger schrieb: > Durch Aneinanderreihen von geklautem Code ohne zu wissen was man tut hat > noch nie jemand programmieren gelernt. Nur weil ich mich nicht mit den Timern auskenne, heißt es ja nicht gleich, dass ich mich überhaupt nicht auskenne. Wenn ich irgendeinen Code klauen wollte, ohne etwas zu lernen, dann hätte ich die Stoppuhr auch schon längst fertig, da es diese auch schon gibt. Was denkst du überhaupt, was ich hier wohl mache? Na klar, bin ich zum lernen hier, aber hier kommt man ja scheinbar nur weiter, wenn man von allem schon voll die Ahnung hat. Lies dir doch mal die Beiträge in dem Forum durch, mal sehen ob es dir auch auffällt, dass hier nie jemand zum Ende kommt, wenn er nicht so die Ahnung hat. Entweder wird er gleich von allen Seiten doof angemacht oder es melden sich Typen, welche selbst keine Ahnung haben und einfach mal ihren Senf abgeben, da es ihnen wohl zu Hause langweilig ist oder sie dort nichts zu sagen haben. Ich will doch hier einfach nur was lernen und eigentlich dachte ich auch, dass dies hier möglich sein sollte. Ich weiß zwar selbst, dass hier jetzt gleich wieder der habe Text markiert und zitiert wird, aber eigentlich find ich das echt schade, da man hier eher etwas motiviert werden sollte, statt belächelt und als dumm verkauft werden sollte. Karl Heinz, nimms nicht persönlich! Du bist hier absolut einer von wenigen, zusammen auch mit Peter Dannegger, die hier klasse Arbeit machen und sich ganz toll bemühen und engagieren, um anderen zu helfen. Vergisst aber nicht, dass das was für euch leicht erscheinen mag, für andere erst mal schwer ist. Ihr könnt doch bestimmt auch nicht alles, drum versucht doch auch mal, euch in andere hineinzuversetzen.
Alfred Flöckchen schrieb: > aber hier kommt man ja scheinbar nur weiter, wenn man von > allem schon voll die Ahnung hat. Dem ist nicht so. Aber Du mußt Dich von dem Gedanken verabschieden, daß es hier wie in einer Schule ist, d.h. ausgebildete Lehrer am Werke sind. Dem ist nicht so. Falls Du der Meinung bist, jemand hat Dich mißverstanden (passiert unweigerlich mal und in jedem Forum), kann man das möglichst knapp und emotionslos richtig stellen. Ansonsten ist es das klügste, man ignoriert einfach diese Zeilen und konzentriert sich auf die Antworten zum Thema. Peter
Alfred Flöckchen schrieb: > Karl Heinz Buchegger schrieb: >> Durch Aneinanderreihen von geklautem Code ohne zu wissen was man tut hat >> noch nie jemand programmieren gelernt. > > Nur weil ich mich nicht mit den Timern auskenne, heißt es ja nicht > gleich, dass ich mich überhaupt nicht auskenne. Wenn ich irgendeinen > Code klauen wollte, ohne etwas zu lernen, dann hätte ich die Stoppuhr > auch schon längst fertig, da es diese auch schon gibt. Wenn du von Timer keine Ahnung hast (was erst mal nicht schlimm ist), dann musst du das ändern. Ich hab dir genügend Resourcen gezeigt an denen du lernen kannst wie das funktioniert. Leg halt mal dein GLCD beiseite, häng eine LED an einen Portpin und lass die timergesteuert im Sekundentakt blinken. Alleine das du nicht auf die Idee kommst, erst mal mit einem einfacheren Testprogramm auszuprobieren, wie das alles funktioniert, erzählt zumindest mir schon seht viel, was du in der Vergangenheit gemacht und gelernt hast. Der Vorgang ist IMMER der gleiche: Erst mal probiert man an einem EINFACHEN Beispiel eine neue Technik aus. Das Beispiel kann dabei nicht einfach genug sein! Alles was für das Verständnis der Funktionsweise nicht notwendig ist, wird erst mal weggelassen. Daher auch: Eine LED blinken und nicht gleich eine Stoppuhr mit Weltzeitfunktion. Der Timer ist erst mal das wichtige und der Sekundentakt, den man damit erzeugt. Und nicht ob da jetzt im Sekundentakt irgendwelche Staudammschleusen geöffnet werden. Ist es wichtig, dass du die Uhr starten und wieder anhalten kannst? Für eine Stoppuhr ist das sicherlich wichtig, aber erst mal ist es etwas, was du ignorieren kannst. Denn erst mal muss die Uhr laufen. Und erst dann kann man sich darüber den Kopf zerbrechen, wie man sie anhält. Ist es wichtig, dass die Uhr in Sekunden und Minuten anzeigt? Im endeffekt ist das natürlich irgendwann wichtig. Aber im Moment ist es etwas, was du ignorieren kannst, denn erst mal muss sich überhaupt etwas tun. Ob das eine LED ist, die blinkt oder eine Ziffer die hochzählt - beides erzählt dir dasselbe, nämlich ob dein Zeitgeber läuft. Nur ist eine LED anzusteuern um ein Vielfaches leichter. Niemand verkauft dich für dumm. Aber letzten Endes ist es wie beim Radfahren. Du kannst 200 Artikel darüber lesen, du kannst dir Ratschläge einholen, du kannst alles lesen, was es zu dem Thema zu lesen gibt .... Wenn du dich das erst mal auf ein Rad setzt, bist du alleine. Und dich wird es runterwerfen, denn Gleichgewicht halten, ist etwas was man nicht aus Büchern lernen kann. Das muss man selber machen! Glaubst du, mich hat es nicht auf die Schnauze geworfen? Glaubst du Peter hat sich 'aufs Rad gesetzt' und ist gleich losgedüst? Wir alle mussten da durch. Keiner kommt zur Welt und kann programmieren. Und wir alle haben klein angefangen. Mit einfachen Dingen. Und haben uns langsam gesteigert. Und wenn eine neue Technik dazu gekommen ist, dann probiert man die halt mal an einem Testprogramm, bei dem es nur um diese eine Technik geht und sonst nichts, aus. Das ist der klassische ANfängerfehler: Zu denken, nur weil man etwas programmieren möchte, was man vermeintlich versteht, dass das auch einfach wäre. Es IST in den meisten Fällen für einen Anfänger nicht einfach! Und der Weg, wie man Dinge in den Griff kriegt, lautet: Schrittweise vorgehen! Abspecken. Erst mal ein einfacheres Beispiel konstruieren, welches am Anfang des Weges steht und aus dem heraus man sich Schritt für Schritt zum gewünschten Ergebnis vortastet. Der einzige Unterschied zwischen dir und mir, ist die Größe der SChritte. Meine sind größer - aber im Prinzip arbeite ich nach all den Jahren immer noch nach diesem Schema - schrittweise. Wenn dir der eine Schritt mit Anzeige der kompletten Uhr zu groß ist, dann mach eben einen kleineren Schritt zuerst - eine einzelne Zahl. Wenn der immer noch zu groß ist, dann pfeif auf die Zahl und lass eine LED blinken.
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.