Hallo erst mal, habe heute ein problemchen mit dem kaskadieren von zwei Schieberegistern. Meine Zielsetzung ist es vier 4094 mit einnander zu verbinden um eine 4-stellige BIG 7-Segmentanzeige zu erstellen. ich habe bereits zwei anzeigen vorbereitet die auch beide für sich funktionieren. Pro Segment verwende ich ein 4094 als Schieberegister ein ULN2803A als Treiber für die 7cm hohe 7-Segmentanzeige und natürlich die 7-Segmentanzeige. sobald ich aber den Takt an den zweiten 4094 anlege bricht mir die erste Anzeige zusammen. Kann mir jemand sagen woran das liegt und wie ich dem entgegen wirken kann?
Gundelputz schrieb: > Hallo erst mal, > habe heute ein problemchen mit dem kaskadieren von zwei > Schieberegistern. > sobald ich aber den Takt an den zweiten 4094 anlege bricht mir die erste > Anzeige zusammen. ENABLE Eingänge richtig beschaltet und angesteuert? > Kann mir jemand sagen woran das liegt und wie ich dem entgegen wirken > kann? Lad mal den Schaltplan hoch :-)
Gundelputz schrieb: > bricht mir die erste > Anzeige zusammen. Ist sie dann nur noch 3,5cm hoch oder was? Drücke Dich bitte verständlich aus.
Frank T. schrieb: > Lad mal den Schaltplan hoch :-) hat das verückte Pferd schon gemacht nur das dahinter noch der ULN und die Anzeige(gem. Katode) Peter D. schrieb: > Ist sie dann nur noch 3,5cm hoch oder was? um es verständlich aus zu drücken: Sie erlischt, geht aus, zeigt nichts mehr an oder leuchtet ganz einfach nicht mehr. Aber mal im ernst: jedes Segment ist wie im Bild gezeigt verbunden. Zusätzlich speise ich noch ein 12V Festspannung in die Untere Reihe ein. Beider Segmente funtionieren seperat ohne Probleme. Schiesse ich beide wie gezeigt paralel(beide Datenpins zusammen) an einen UNO an zeigen beide den gewünschten wert. Gehe ich aber mit dem QS von IC1 an Data von IC2 so zeigtermaximal das f-Segment vom zweiten Display an. ich sende nacheinnander die zifern 2, 4 und 6. Es sollte also statt einem "-"(nicht im Code deklariert) die voorrangegangen Ziffer erscheinen. Hier noch der Code: int zahl = 83; byte einer = zahl % 10; byte zehner = (zahl / 10) % 10; byte hunderter = (zahl / 100) % 10; byte tausender = (zahl / 1000) % 10; int freigabe1 = 11;//CD4094 PIN1 (storePin) int tackt1 = 12;//CD4094 PIN3 (clockPin) int bit1 = 13;//CD4094 PIN2(datapin) int uebergabe = 10;// �bergibt die Zeichen an Anzeige int spalten_wert = 0; int display_zeichen = 7; byte daten_spalte;//datacol(5) int count1 = 10000; void setup() { pinMode(freigabe1, OUTPUT); pinMode(tackt1, OUTPUT); pinMode(bit1, OUTPUT); pinMode(uebergabe, OUTPUT); } void loop() { for (int z = 1; z < 4; z++) { zahl = 246; einer = zahl % 10; zehner = (zahl / 10) % 10; hunderter = (zahl / 100) % 10; tausender = (zahl / 1000) % 10; digitalWrite(uebergabe, LOW); if (z == 1) { display_zeichen = einer; zeil_schreib(); } if (z == 2) { display_zeichen = zehner; zeil_schreib(); } if (z == 3) { display_zeichen = hunderter; zeil_schreib(); } for (int i = 1; i < 8; i++) { digitalWrite(freigabe1, LOW); daten_spalte = spalten_wert; shiftOut(bit1, tackt1, LSBFIRST, daten_spalte); digitalWrite(freigabe1, HIGH); } digitalWrite(uebergabe, HIGH); if (z == 4) { digitalWrite(uebergabe, HIGH); } delay(1000); } } void zeil_schreib() { //hier soll die Auswahl f�r die zeichen hin geschriebe: B,a,b,c,d,e,f,g,dp switch (display_zeichen) { case 0: spalten_wert = B11111101; break; case 1: spalten_wert = B01100001; break; case 2: spalten_wert = B11011011; break; case 3: spalten_wert = B11110011; break; case 4: spalten_wert = B01100111; break; case 5: spalten_wert = B10110111; break; case 6: spalten_wert = B10111111; break; case 7: spalten_wert = B11100001; break; case 8: spalten_wert = B11111111; break; case 9: spalten_wert = B11110111; break; } }
H.Joachim S. schrieb: > so funktionierts. Zum Kaskadieren bei nicht allzu schnellen Clocks würde ich eher Pin 10 empfehlen (QS* statt QS).
Gundelputz schrieb: > habe heute ein problemchen mit dem kaskadieren von zwei > Schieberegistern. Da habe ich Dir doch erst gestern gezeigt, wie das geht; sogar 6 x 4094 und mit Programm. Entferne einfach die Kurzschlüsse auf dem Steckbrett.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Mitlesa schrieb: > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. muss nicht zwingend gemacht werden. habe das aber auch schon probiert. m.n. schrieb: > Entferne einfach die Kurzschlüsse auf dem Steckbrett. welche Kurzschlüsse??? Bin ich blind?
m.n. schrieb: > Da habe ich Dir doch erst gestern gezeigt, wie das geht; sogar 6 x 4094 nach deinem Vorbild ist die Schaltung aufgebaut. Der Code wahr mir etwas zu kompliziert. Ich möchte immer etwas lernen. deswegen erst mal der eigene Code.
Gundelputz schrieb: > muss nicht zwingend gemacht werden. > habe das aber auch schon probiert. Man muss auch nicht zwingend Luft in Fahrradreifen pumpen. Holpert dann zwar ein wenig mehr, fährt aber trotzdem.
Mitlesa schrieb: > Beratungsresistenz ist eine Zier, > doch weiter kommt man ohne ihr. Liest sich mein Code nicht auf den ersten Blick, liegt es an des Lesers Ungeschick.
:
Bearbeitet durch User
Ich habe mir mal die Freiheit genommen, deinen Code etwas aufzuräumen, und ein paar Fehler zu entfernen. Bei der fehlenden Funktion shiftOut() gehe ich mal davon aus, dass sie das macht, was sie verspricht...
Joe F. schrieb: > Liest sich mein Code nicht auf den ersten Blick, liegt es an des Lesers > Ungeschick. Leider muss ich dir da zustimmen. Habe dem neuen Code gelesen und "fast" verstanden. Sehr schön und einfach. einzieg folgende Zeihle wahr mir noch nicht bekannt. shiftOut(p_data, p_clk, LSBFIRST, pattern); Leider wird nur das letzte Zeichen richtig angezeigt. Ich probiere noch ein wenig rum und melde mich heute Abend noch mal. Vielen Dank schon mal.
Gundelputz schrieb: > Leider wird nur das letzte Zeichen richtig angezeigt. Und die anderen Displays? Ist da wenigstens irgendetwas zu sehen, oder sind die dunkel? Was ist denn bei dir am Output 10 ("uebergabe") angeschlossen? Gundelputz schrieb: > Habe dem neuen Code gelesen und "fast" verstanden. Sehr schön und > einfach. Der unterscheidet sich von deinem Code in folgenden Dingen: - Formatierung: um es anderen leichter zu machen den Code zu lesen, rückt man alles sinnvoll ein. - Funktionen: Funktionen kennen "Argumente" und einen "Rückgabewert". Diese Dinge sollte man auch benutzen. Globale Variablen sind hier vollkommen unangebracht. - Variablendeklaration Alle Variablen einfach global zu deklarieren verwirrt sehr. Wenn man in jeder Funktion nur die Variablen deklariert, die auch gebraucht werden, kann man die Funktion wesentlich schneller verstehen. - Variablen und Port-Namen möglichst sinnvoll benennen. Wenn deine Pins am Schieberegister schon einen Namen haben, kann man diesen auch gleich im Programm verwenden. Ein zusätzliches "p_" oder "pin_" davor macht jedem sofort klar, was hier gemeint ist. - Arrays verwenden. Wenn du in einer Schleife immer wieder das gleiche machst (4 Zeichen ausgeben), ist "if..." und 4 verschienene Variablen ("einer", "zehner"...) die falsche Methode. Durch die Verwendung eines Arrays wird der Code kürzer und einfacher. - Kommentare helfen zu verstehen, was die kommentierten Zeilen genau machen sollen, wenn es sich nicht ohnehin selbst erklärt.
:
Bearbeitet durch User
Guten morgen, warum finde ich in dem C-Code so viele Variable von Typ int ? Ich sehe keinen Grund vorzeichenbehaftet 16Bit Datentypen zu verwenden. Joe F. schrieb: > Ich habe mir mal die Freiheit genommen, deinen Code etwas aufzuräumen, > und ein paar Fehler zu entfernen.
Danke fürs zurechtstutzen. Denke das habe ich mal wieder gebraucht. gelobe besserung
> warum finde ich in dem C-Code so viele Variable von Typ int ? > Ich sehe keinen Grund vorzeichenbehaftet 16Bit Datentypen zu verwenden. Normalerweise brauche ich einen Grund, einen anderen Datentyp als int zu verwenden (zu kleiner Wertebereich bei int, zuviel Speicher bei größeren int-Feldern, ...) und keinen Grund, int zu verwenden. Das ist ja sozusagen der Standardtyp für Ganzzahlen.
Joe F. schrieb: > Und die anderen Displays? Ist da wenigstens irgendetwas zu sehen, oder > sind die dunkel? nein. number = 1234; erste Segment zeigt (b,c) 1 zweite Segmnent zeigt (a,c,d,f) u mit Strich darüber dritte und vierte Segment zeigen (a,b,c,d,e,f,g) 8 _ | |_||_| ||_||_||_| Joe F. schrieb: > Was ist denn bei dir am Output 10 ("uebergabe") angeschlossen? Schieberegiste Pin 15 OE (habe ich auch schon an 5V gehabt mit gleichen Erfolg).
Gundelputz schrieb: > Danke fürs zurechtstutzen. > Denke das habe ich mal wieder gebraucht. Naja, ich wollte dich nicht wirklich "zurechtstutzen". Lediglich anhand eines Beispiels aufzeigen, dass mit ein wenig Aufwand (vor allem Formatierung) Programmcode viel lesbarer wird. Die Chancen, dass dir dann jemand helfen kann/will werden dann besser ;-) Gundelputz schrieb: > nein. > number = 1234; > erste Segment zeigt (b,c) 1 > zweite Segmnent zeigt (a,c,d,f) u mit Strich darüber > dritte und vierte Segment zeigen (a,b,c,d,e,f,g) 8 Die Kette ist so aufgebaut, dass die erste Anzeige (die dann die "1" korrekt anzeigt) am Ausgang des Arduinos hängt, richtig? - Hast du mal versucht, die nachfolgenden Schieberegister-Eingänge (Pin 2) jeweils mit Pin 10 (QS*) des vorherigen Registers zu verbinden? Momentan geht vermutlich immer Pin 9 auf Pin 2 des nächsten Registers. Pin 10 hat den Vorteil, dass das Signal um 1/2 CLK verschoben ist, und damit das Timing sicherer ist. - Wie schnell ist deine CLK (KHz, MHz?) Kannst du mal die Funktion shiftOut() zeigen? - Sind CLK und STROBE überall korrekt angeschlossen? - Sind alle Output-Enable Eingänge (Pin 15 der Schieberegister) auf +5V bzw. mit dem Arduino-Output 10 verbunden? Diese Eingänge dürfen nicht unverbunden bleiben.
:
Bearbeitet durch User
der mechatroniker schrieb: > Normalerweise brauche ich einen Grund, einen anderen Datentyp als int zu > verwenden (zu kleiner Wertebereich bei int, zuviel Speicher bei größeren > int-Feldern, ...) und keinen Grund, int zu verwenden. Das ist ja > sozusagen der Standardtyp für Ganzzahlen. Weist aber schon, dass son AVR nen 8 Bitter ist? Und wieviel hat son int? Na?
Joe F. schrieb: > Die Kette ist so aufgebaut, dass die erste Anzeige (die dann die "1" > korrekt anzeigt) am Ausgang des Arduinos hängt, richtig? Ja zeichne gerade noch den kompletten Aufbau. Joe F. schrieb: > - Hast du mal versucht, die nachfolgenden Schieberegister-Eingänge (Pin > 2) jeweils mit Pin 10 (QS*) des vorherigen Registers zu verbinden? Ja. Im der Beschreibung steht das ja genau so drinn. Joe F. schrieb: > - Wie schnell ist deine CLK (KHz, MHz?) das kann ich so genau nicht sagen. Habe einen Arduino UNO. Der sollte im MHz bereich arbeiten. Joe F. schrieb: > Kannst du mal die Funktion shiftOut() zeigen? Da habe ich momentan deinen Code. Also: shiftOut(p_data, p_clk, LSBFIRST, pattern); Joe F. schrieb: > - Sind CLK und STROBE überall korrekt angeschlossen? Sind alle mit dem UNO verbunden. Also alle im gleichen Tackt. Joe F. schrieb: > - Sind alle Output-Enable Eingänge (Pin 15 der Schieberegister) auf +5V > bzw. mit dem Arduino-Output 10 verbunden? > Diese Eingänge dürfen nicht unverbunden bleiben. Ja.
Martin W. schrieb: > Weist aber schon, dass son AVR nen 8 Bitter ist? > Und wieviel hat son int? Na? Ja, ist vollkommen richtig. Der richtige Datentyp für alle Dinge dieses Firmwareteils wäre "uint8_t". Ich war schlampig...
Gundelputz schrieb: > Joe F. schrieb: >> - Hast du mal versucht, die nachfolgenden Schieberegister-Eingänge (Pin >> 2) jeweils mit Pin 10 (QS*) des vorherigen Registers zu verbinden? > > Ja. > Im der Beschreibung steht das ja genau so drinn. Auf deinem Breadboard ist aber Pin 9 verwendet. Nimm mal Pin 10 statt 9 als Data-Out. Und dann liegt da auch ein zweiter Hase im Pfeffer: du hast immer Pin 9 (QS) mit Pin 3 des nächsten Registers verbunden. Pin 3 ist aber CLK und nicht DATA in... Wie dann das erste Register funktionieren kann, ist mir schleierhaft, vermutlich ist DATA auf gelb und CLK auf grün...?
Joe F. schrieb: > Momentan geht vermutlich immer Pin 9 auf Pin 2 des nächsten Registers. Und das ist auch gut so. > Pin 10 hat den Vorteil, dass das Signal um 1/2 CLK verschoben ist, und > damit das Timing sicherer ist. Damit kann lediglich eine zu flache Flanke von CLK etwas kompensiert werden. Mit einem ordentlichen CLK-Signal, wie es ein ATmegaxx liefert, ist Pin 9 als Ausgang besser und erlaubt höchste Taktraten, da die setup-time fast doppelt so lang sein kann. Eine verlängerte hold-time, wie sie Qs* liefert, ist garnicht notwendig.
Gundelputz schrieb: > hier noch eben die fast fertige Grafik vom Aufbau. Was will und so ein Bild sagen ? Ich dachte immer in einem technischen Hobby zählt ein Schaltplan, so ein Bild ist für mich nichtssagend.
m.n. schrieb: > Mit einem ordentlichen CLK-Signal Bei so einem Drahtverhau? Ich würde ja eher mit der CLK Rate runtergehen. Für sowas reichen ja ein paar KHz.... Kann nur nicht finden, wie man das beim Arduino konfigurieren kann. shiftOut() scheint zu irgendeiner nicht näher spezifizierten Library zu gehören... Und wenn es Probleme mit Pin 10 gibt, kann man Pin 9 ja wenigstens mal ausprobieren. Problem liegt aber wohl eher in der Verwechslung von CLK und DATA...
:
Bearbeitet durch User
Was soll das sein ? shiftOut(p_data, p_clk, LSBFIRST, pattern); Die Frage zielt nicht auf den Protoype ab, sondern auf die Implementierung des realen Codes. Man sieht noch nicht mal die Datentypen der Parameter noch deren Bedeutung !
Joe F. schrieb: > Problem liegt aber wohl eher in der Verwechslung von CLK und DATA... Ohne Frage ;-) Frage schrieb: > Was will und so ein Bild sagen ? > Ich dachte immer in einem technischen Hobby zählt ein Schaltplan, so ein > Bild ist für mich nichtssagend. Ich finde das Bild richtig gelungen. Da sieht man, daß sogar ein Widerstand vorhanden ist. Wer den Kondensator findet, hat gewonnen!
Frage schrieb: > Was soll das sein ? > > shiftOut(p_data, p_clk, LSBFIRST, pattern); Das wird wohl ein bisschen vor den Arduino Programmierern versteckt, um sie sich erstmal um das Wesentliche kümmern zu lassen... Finde ich ja nicht schlecht. Ich vermute mal es ist diese Implementierung: http://linux.dd.com.au/wiki/Arduino_ShiftOut
1 | // License GNU Lesser General Public License 2.1 original material copyright David A. Mellis, changes copyright Scott Penrose
|
2 | // New shiftOut, but backwards compatible, accepts
|
3 | // shiftOut( dataPin, clockPin, bitOrder, val);
|
4 | // shiftOut( dataPin, clockPin, bitOrder, val, bits);
|
5 | // shiftOut (dataPin, clockPin, bitOrder, val, bits, delayMicroSeconds);
|
6 | void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, int val, uint8_t bits = 8, uint8_t del = 0) |
7 | {
|
8 | uint8_t i; |
9 | for (i = 0; i < bits; i++) { |
10 | if (bitOrder == LSBFIRST) |
11 | digitalWrite(dataPin, !!(val & (1 << i))); |
12 | else
|
13 | digitalWrite(dataPin, !!(val & (1 << ((bits - 1 - i))))); |
14 | digitalWrite(clockPin, HIGH); |
15 | delayMicroseconds(del); |
16 | digitalWrite(clockPin, LOW); |
17 | }
|
18 | }
|
Und jetzt ist auch klar, wie man eine andere Bitbreite oder Geschwindigkeit als die Defaults einstellt... Die Zeit zwischen low/high der Clock ist halt nicht so richtig konfigurierbar...
m.n. schrieb: > Wer den Kondensator findet, hat gewonnen! Mitlesa schrieb: > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen. > Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ändere mal den Aufruf
1 | shiftOut(p_data, p_clk, LSBFIRST, pattern); |
in
1 | shiftOut(p_data, p_clk, LSBFIRST, pattern, 8, 10); |
Joe F. schrieb: > Die Zeit zwischen low/high der Clock ist halt nicht so richtig > konfigurierbar... Dafür aber garantiert sehr lang. Du wolltest kHz, da hast Du kHz ;-)
Joe F. schrieb: > Und dann liegt da auch ein zweiter Hase im Pfeffer: > du hast immer Pin 9 (QS) mit Pin 3 des nächsten Registers verbunden. > Pin 3 ist aber CLK und nicht DATA in... das ist jetzt für mich aber extrem peinlich. Du hast aber sowas von Recht. Ich schreibe diese Zeilen von 5m unter der Erde. Denn so tief bin ich gerade darin versunken. Wenn mir das an dieser Stelle erlaubt sein darf so möchte ich dich in hösten masse Loben. Dies wahr einer der wenigen Beiträge in dennnen man mich nicht von oben herrab behandelt hat. Da Gute Litteratur eher selten ist sind Anfänger wie ich mehr und mehr auf die hilfe der "neuen Medien" angewiesen. Ich habe durh dich in den letzten Tagen mehr gelernt als den restlichen Fragen die ich hier gestellt. Vielen vielen Dank vom ganzen Herzen. Frage schrieb: > Was will und so ein Bild sagen ? > Ich dachte immer in einem technischen Hobby zählt ein Schaltplan, so ein > Bild ist für mich nichtssagend. siehe Lösung. Nochmals vielen Danke für eure Hilfe.
m.n. schrieb: > Wer den Kondensator findet, hat gewonnen! die habe ich nicht mit eingezeichnet. Nicht das noch Stimmen laut werden man könne durch diese nichts mehr erkennen. Aber sei versichert sie sind vorhanden. Habe jetzt noch mal geprüft ob es auch ohne funktioniert. Was soll ich sagen? Ja macht es. Aber keine Angst sind gleich wieder drann.
Hallo zasammen , bitte um Antwort. Immer bevor im "Debug (printf) Viewer" eine Zahl korrekt dargestellt wird, erscheinen eine ganze Reihe von Ausgaben von nichtgültigen Zahlen in schneller Folge. Erklären Sie, warum das so ist.
Hallo zasammen , bitte um eine kurze Erklärung. 1.) Immer bevor im "Debug (printf) Viewer" eine Zahl korrekt dargestellt wird, erscheinen eine ganze Reihe von Ausgaben von nichtgültigen Zahlen in schneller Folge. Erklären Sie, warum das so ist. 2.) Sie haben nur simuliert und nicht auf der Hardware am Laufen gesehen. Wie wird sich diese Störung (unter Punkt 1) bemerkbar machen? 3.) Was müßte getan werden, um diesen Störeffekt zu beseitigen?
Ey, ist das wirklich nötig, uralte Threads mit deinen Hausaufgaben vollzuspammen? Das Thema des Threads hat doch nicht im Geringsten mit "deinen" Fragen zu tun!
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.