Projekt... LCD ansteuern

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Projekt... LCD ansteuern

Beitrag von Marcel B »

Wir haben ein kleines Problem mit der Ansteuerung vom Display aufm FPGA Board. Das Display macht einfach garnix :(

Was wir bisher gemacht haben ist eine 0000 0001 mit LCD_RS=0 an das Display zu schicken damit es resetet wird. Danach wollten wir erstmal eine 1 anzeigen. Also eine 0011 0001 mit LCD_RS=1.
Das Signal splitten wir so wie es auf Seite 52 in der Anleitung gezeigt ist.

Machen wir Grundsätzlich was falsch?

hier noch ein Ausschnitt aus der UCF:

Code: Alles auswählen

NET "LCD_E"	LOC = "M18" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ; 
NET "LCD_RS" LOC = "L18" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ; 
NET "LCD_RW" LOC = "L17" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ;

# The LCD four-bit data interface is shared with the StrataFlash. 
NET "SF_D<8>" LOC = "R15" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ; 
NET "SF_D<9>" LOC = "R16" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ; 
NET "SF_D<10>" LOC = "P17" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ; 
NET "SF_D<11>" LOC = "M15" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ;

Benutzeravatar
Michl
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 293
Registriert: 12. Apr 2009 08:53
Wohnort: Darmstadt

Re: Projekt... LCD ansteuern

Beitrag von Michl »

Lies dir mal im Handbuch vom FPGA (http://www.xilinx.com/support/documenta ... /ug230.pdf) ab Seite 53 den Abschnitt "Initializing the Display" durch. Du musst schon ein wenig mehr machen als nur ein Reset Signal zu schicken ;)

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Re: Projekt... LCD ansteuern

Beitrag von Marcel B »

Die Power-On Initialization von Seite 53 habe ich auch implementiert. In der Simulation sieht es auch richtig aus... aber leider tut sich noch nichts.

Ich werd am besten morgen mal in die Sprechstunde gehen. Evt hab ich auch was mit dem Takt verpeilt.

Benutzeravatar
s_hess
Ehemalige Fachschaftler
Beiträge: 31
Registriert: 17. Okt 2006 11:18
Wohnort: Frankfurt
Kontaktdaten:

Re: Projekt... LCD ansteuern

Beitrag von s_hess »

Mach das, ich bin bis 12:00 Uhr da...

Sören
Sämtliche Schreibfehler dienen ausschliesslich zur Belustigung
der Beteiligten.

es ist eagl wie man die Wtröer shrcbiet, es
ist nur Whtciig den eetrsn und den lzeetn
Bhsuctbaen rhticig zu sbeihcren!!!

Benutzeravatar
crib
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 17. Apr 2008 14:43
Wohnort: Wiesbaden

Re: Projekt... LCD ansteuern

Beitrag von crib »

Marcel B hat geschrieben:Die Power-On Initialization von Seite 53 habe ich auch implementiert. In der Simulation sieht es auch richtig aus... aber leider tut sich noch nichts.

Ich werd am besten morgen mal in die Sprechstunde gehen. Evt hab ich auch was mit dem Takt verpeilt.
Ich habe für den entsprechenden Controller Anfang des Semesters auch das erste mal eine Ansteuerung geschrieben und es wollte auch bei mir anfangs einfach so garnicht, keinerlei Reaktion des Displays. Grund dafür, dass bei dem hd44780 controller so rein garnichts tut, ist meistens das enable Signal. Besorg dir einfach mal das Datenblatt und schau dir die genauen Voraussetzungen für dieses Signal an.
Was bei der Fehlersuche ggf. auch helfen kann, ist die drastische Reduzierung des Taktes der Schaltung. Die meisten hd44780 kompatiblen Controller haben da keine untere Schranke, man kann sie sogar mit Tastern und Schaltern von Hand ansteuern.

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Re: Projekt... LCD ansteuern

Beitrag von Marcel B »

So. Nach einem langem CMS Wochenende sieht man endlich erste Ergebnisse auf dem Display :-)

Das Problem ist, dass die Initialisierung anscheinend einwandfrei funktioniert, danach aber alle Daten die ich schreiben möchte falsch herum interpretiert werden. Ein 8 bit Wort wird in zwei 4 bit Wörter unterteilt. Zuerst überträgt man laut PDF Seite 52 das upper nibble, danach das lower. Lustiger Weise funktioniert es aber genau anders herum. :shock:

Benutzeravatar
AlexPi11
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 154
Registriert: 18. Apr 2009 15:32

Re: Projekt... LCD ansteuern

Beitrag von AlexPi11 »

Also ich halte dagegen. :D
Unser LCD läuft auch und wir senden strikt erst upper, dann lower nibble. Unsere Simulation bestätig das nochmal. (3 3 3 2 .... (erster Buchstabe eine 0:) 3 0 ....)
Vielleicht hat sich ja am Anfang ein lcd_enable = 1 eingeschlichen und macht die Reihenfolge zunichte. :?:

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Re: Projekt... LCD ansteuern

Beitrag von Marcel B »

Das Verhalten des Displays ist bei mir abhängig von der Zeit die ich zwischen den 8 Bit Wörtern habe. Bei 2000 clocks kommt was anderes als bei 3000 clocks. Wahrscheinlich geht bei der Synthese auf dem Server was schief. Werde es nachher mal lokal synthetisieren und dann hochladen.

Wolfgang
Dozentin/Dozent
Beiträge: 359
Registriert: 21. Apr 2004 17:54

Re: Projekt... LCD ansteuern

Beitrag von Wolfgang »

Hallo Marcel,

Du bist ja gerade auch am Testen mit den Bit-Files. Gibt es Probleme bei der Synthese auf dem FPGA Lab?
Im übrigen könnt Ihr hier auch gerne die Quell-Codes posten. Gerne auch die vollständigen Codes.
Die LCD-Ansteuerung ist ja nur ein optionales Feature der Funkuhr.

Viele Grüße
Wolfgang

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Re: Projekt... LCD ansteuern

Beitrag von Marcel B »

An der Synthese liegt es nicht. Ich glaube ich mache irgendwas an der Ansteuerung falsch. Ich hoffe man kann was mit meinem Debug Log anfangen:

Das ist meine Initialisierung und danach schicke ich eine 7

Code: Alles auswählen

clockNr:  750001   RS: 1, RW: x, E: x, D: xxxx
clockNr:  750002   RS: 1, RW: 1, E: 0, D: 0011
clockNr:  750011   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  750020   RS: 1, RW: 0, E: 1, D: 0011  3
clockNr:  750033   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  750042   RS: 1, RW: 1, E: 0, D: 0011
clockNr:  955043   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  955052   RS: 1, RW: 0, E: 1, D: 0011  3
clockNr:  955065   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  955074   RS: 1, RW: 1, E: 0, D: 0011
clockNr:  962085   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  962094   RS: 1, RW: 0, E: 1, D: 0011  3
clockNr:  962107   RS: 1, RW: 0, E: 0, D: 0011
clockNr:  962116   RS: 1, RW: 1, E: 0, D: 0011
clockNr:  964117   RS: 1, RW: 0, E: 0, D: 0010
clockNr:  964126   RS: 1, RW: 0, E: 1, D: 0010  2
clockNr:  964139   RS: 1, RW: 0, E: 0, D: 0010
clockNr:  964148   RS: 1, RW: 1, E: 0, D: 0010
clockNr:  968149   RS: 0, RW: 1, E: 0, D: 0010
clockNr:  968159   RS: 0, RW: 0, E: 0, D: 0010
clockNr:  968168   RS: 0, RW: 0, E: 1, D: 0010  upper 8'h28
clockNr:  968181   RS: 0, RW: 0, E: 0, D: 0010
clockNr:  968190   RS: 0, RW: 1, E: 0, D: 0010
clockNr:  970191   RS: 0, RW: 0, E: 0, D: 1000
clockNr:  970200   RS: 0, RW: 0, E: 1, D: 1000  lower 8'h28
clockNr:  970213   RS: 0, RW: 0, E: 0, D: 1000
clockNr:  970222   RS: 0, RW: 1, E: 0, D: 1000
clockNr:  974224   RS: 0, RW: 1, E: 0, D: 0000
clockNr:  974233   RS: 0, RW: 0, E: 0, D: 0000
clockNr:  974242   RS: 0, RW: 0, E: 1, D: 0000  upper 8'h06
clockNr:  974255   RS: 0, RW: 0, E: 0, D: 0000
clockNr:  974264   RS: 0, RW: 1, E: 0, D: 0000
clockNr:  976265   RS: 0, RW: 0, E: 0, D: 0110
clockNr:  976274   RS: 0, RW: 0, E: 1, D: 0110  lower 8'h06
clockNr:  976287   RS: 0, RW: 0, E: 0, D: 0110
clockNr:  976296   RS: 0, RW: 1, E: 0, D: 0110
clockNr:  980298   RS: 0, RW: 1, E: 0, D: 0000
clockNr:  980307   RS: 0, RW: 0, E: 0, D: 0000
clockNr:  980316   RS: 0, RW: 0, E: 1, D: 0000  upper 8'b00001111
clockNr:  980329   RS: 0, RW: 0, E: 0, D: 0000
clockNr:  980338   RS: 0, RW: 1, E: 0, D: 0000
clockNr:  982339   RS: 0, RW: 0, E: 0, D: 1111
clockNr:  982348   RS: 0, RW: 0, E: 1, D: 1111  lower 8'b00001111
clockNr:  982361   RS: 0, RW: 0, E: 0, D: 1111
clockNr:  982370   RS: 0, RW: 1, E: 0, D: 1111
clockNr: 1066372   RS: 0, RW: 1, E: 0, D: 0000
clockNr: 1066381   RS: 0, RW: 0, E: 0, D: 0000
clockNr: 1066390   RS: 0, RW: 0, E: 1, D: 0000  upper 8'h1;
clockNr: 1066403   RS: 0, RW: 0, E: 0, D: 0000
clockNr: 1066412   RS: 0, RW: 1, E: 0, D: 0000
clockNr: 1066473   RS: 0, RW: 0, E: 0, D: 0001
clockNr: 1066482   RS: 0, RW: 0, E: 1, D: 0001  lower 8'h1;
clockNr: 1066495   RS: 0, RW: 0, E: 0, D: 0001
clockNr: 1066504   RS: 0, RW: 1, E: 0, D: 0001
clockNr: 1150505   RS: 1, RW: 1, E: 0, D: 0001
clockNr: 1150506   RS: 1, RW: 1, E: 0, D: 0011
clockNr: 1150515   RS: 1, RW: 0, E: 0, D: 0011
clockNr: 1150524   RS: 1, RW: 0, E: 1, D: 0011  upper {4'b0011,4'd7}
clockNr: 1150537   RS: 1, RW: 0, E: 0, D: 0011
clockNr: 1150546   RS: 1, RW: 1, E: 0, D: 0011
clockNr: 1150607   RS: 1, RW: 0, E: 0, D: 0111
clockNr: 1150616   RS: 1, RW: 0, E: 1, D: 0111  lower {4'b0011,4'd7}
clockNr: 1150629   RS: 1, RW: 0, E: 0, D: 0111
clockNr: 1150638   RS: 1, RW: 1, E: 0, D: 0111

Marcel B
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2008 15:06

Re: Projekt... LCD ansteuern

Beitrag von Marcel B »

Hab verpennt die DD Ram Adresse richtig zu setzten. Nun läufts :)

Benutzeravatar
LinuxFan
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 29. Sep 2008 15:21
Wohnort: Bensheim
Kontaktdaten:

Re: Projekt... LCD ansteuern

Beitrag von LinuxFan »

Meine Displayansteuerung für Dummies. Für alle, die nicht mehr weiter wissen.

completeDisplay wird eingebunden, braucht einen 12,5 MHz Takt (siehe unten)

Unten bei "case(WRITE_CHAR)" seht ihr die Buchstabencodetabelle. (mode wurde nur zu Testzwecken hinausgeführt)

Code: Alles auswählen

module dcf77_completeDisplay(
	input CLK_12_5MHZ,
	input WRITE,
	input [6:0] WRITE_CHAR,
	input [3:0] WRITE_COL,
	input WRITE_ROW,
	output reg ready,
	output outLCD_E,
	output outLCD_RS,
	output outLCD_RW,
	output [3:0] outLCD_DATA,
	output reg [3:0] mode
	);
	
	//reg [3:0] mode;
	reg enableDisplay;
	reg initDisplay;
	reg dRS;
	reg dRW;
	reg rowPointer;
	reg [7:0] dDATA;	
	wire initReady;
	wire displayReady;
	
	initial mode = 0;
	initial ready = 0;
	initial enableDisplay = 0;
	initial initDisplay = 1;
	initial dRS = 0;
	initial dRW = 0;
	initial dDATA = 0;
	
	
	dcf77_simpleDisplay d (CLK_12_5MHZ, initDisplay, enableDisplay, dRS, dRW, dDATA, displayReady, outLCD_E, outLCD_RS, outLCD_RW, outLCD_DATA[3:0]);
	
	always @(posedge CLK_12_5MHZ) begin
		case (mode)
			0: begin
					if (displayReady == 1)
					begin
						initDisplay <= 0;
						ready <= 1;
						mode <= mode + 1;
					end
				end
			1: mode <= mode + 1;
			2: if (WRITE == 1)
				begin
					ready <= 0;
					dDATA <= {1'b1, WRITE_ROW, 2'b00, WRITE_COL[3:0]}; // "Set DD RAM Address"
					dRS <= 0;
					dRW <= 0;
					enableDisplay <= 1;					
					mode <= mode + 1;
				end
			3: mode <= mode + 1;
			4: if (displayReady == 1)
				begin
					enableDisplay <= 0;
					mode <= mode + 1;
				end
			5: mode <= mode + 1;
			6: begin
					dRS <= 1;
					dRW <= 0;
					case (WRITE_CHAR) // "Write Data to DD RAM"
						0: dDATA <= 8'b00100000; // Space
						1: dDATA <= 8'b01000001; // A ..
						2: dDATA <= 8'b01000010;
						3: dDATA <= 8'b01000011;
						4: dDATA <= 8'b01000100;
						5: dDATA <= 8'b01000101;
						6: dDATA <= 8'b01000110;
						7: dDATA <= 8'b01000111;
						8: dDATA <= 8'b01001000;
						9: dDATA <= 8'b01001001;
						10: dDATA <= 8'b01001010;
						11: dDATA <= 8'b01001011;
						12: dDATA <= 8'b01001100;
						13: dDATA <= 8'b01001101;
						14: dDATA <= 8'b01001110;
						15: dDATA <= 8'b01001111; // .. O
						16: dDATA <= 8'b01010000; // P ..
						17: dDATA <= 8'b01010001;
						18: dDATA <= 8'b01010010;
						19: dDATA <= 8'b01010011;
						20: dDATA <= 8'b01010100;
						21: dDATA <= 8'b01010101;
						22: dDATA <= 8'b01010110;
						23: dDATA <= 8'b01010111;
						24: dDATA <= 8'b01011000;
						25: dDATA <= 8'b01011001;
						26: dDATA <= 8'b01011010; // .. Z
						27: dDATA <= 8'b01100001; // a ..
						28: dDATA <= 8'b01100010;
						29: dDATA <= 8'b01100011;
						30: dDATA <= 8'b01100100;
						31: dDATA <= 8'b01100101;
						32: dDATA <= 8'b01100110;
						33: dDATA <= 8'b01100111;
						34: dDATA <= 8'b01101000;
						35: dDATA <= 8'b01101001;
						36: dDATA <= 8'b01101010;
						37: dDATA <= 8'b01101011;
						38: dDATA <= 8'b01101100;
						39: dDATA <= 8'b01101101;
						40: dDATA <= 8'b01101110;
						41: dDATA <= 8'b01101111; // .. o
						42: dDATA <= 8'b01110000; // p ..
						43: dDATA <= 8'b01110001;
						44: dDATA <= 8'b01110010;
						45: dDATA <= 8'b01110011;
						46: dDATA <= 8'b01110100;
						47: dDATA <= 8'b01110101;
						48: dDATA <= 8'b01110110;
						49: dDATA <= 8'b01110111;
						50: dDATA <= 8'b01111000;
						51: dDATA <= 8'b01111001;
						52: dDATA <= 8'b01111010; // .. z
						53: dDATA <= 8'b00110000; // 0 ..
						54: dDATA <= 8'b00110001;
						55: dDATA <= 8'b00110010;
						56: dDATA <= 8'b00110011;
						57: dDATA <= 8'b00110100;
						58: dDATA <= 8'b00110101;
						59: dDATA <= 8'b00110110;
						60: dDATA <= 8'b00110111;
						61: dDATA <= 8'b00111000;
						62: dDATA <= 8'b00111001; // .. 9
						63: dDATA <= 8'b00101110; // .
						64: dDATA <= 8'b00111010; // :
						65: dDATA <= 8'b00101101; // -
						66: dDATA <= 8'b00100001; // !
						67: dDATA <= 8'b00101111; // ?
						68: dDATA <= 8'b00101011; // +
						default: dDATA <= 8'b11111111; // black rectangle (error!)
					endcase
					enableDisplay <= 1;					
					mode <= mode + 1;
				end
			7: mode <= mode + 1;
			8: if (displayReady == 1)
			begin
				enableDisplay <= 0;
				ready <= 1;
				if (WRITE == 0) begin
					mode <= 1;
				end
			end
		endcase
	end	
endmodule

module dcf77_simpleDisplay(
	input CLK_12_5MHZ,
	input INIT,
	input ENABLE,
	input rs,
	input rw,	
	input [7:0] data,
	output reg ready,
	output reg outLCD_E,
	output reg outLCD_RS,
	output reg outLCD_RW,
	output reg [3:0] outLCD_DATA
	);
	
	reg inProgress;
	reg [19:0] counter;
	
	initial inProgress = 0;
	initial counter[19:0] = 0;
	initial ready = 0;
	initial outLCD_E = 0;
	initial outLCD_RS = 0;
	initial outLCD_RW = 0;
	
	always @(posedge CLK_12_5MHZ) begin
		if (INIT == 1)
		begin
			ready <= 0;
			if (counter < 260000) 
			counter <= counter + 1;
			case (counter)
				// INIT
				187500: begin
					outLCD_E <= 1;
					outLCD_DATA[3:0] <= 3;
				end
				
				187503: begin
					outLCD_E <= 0;
				end
				
				238753: begin
					outLCD_E <= 1;
					outLCD_DATA[3:0] <= 3;
				end
				
				238756: begin
					outLCD_E <= 0;
				end
			
				240006: begin
					outLCD_E <= 1;
					outLCD_DATA[3:0] <= 3;
				end
				
				240009: begin
					outLCD_E <= 0;
				end
				
				240509: begin
					outLCD_E <= 1;
					outLCD_DATA[3:0] <= 2;
				end
				
				240512: begin
					outLCD_E <= 0;
				end
				
				// CLEAR SCREEN
				
				241012: begin
					outLCD_RS <= 0;
					outLCD_RW <= 0;
					outLCD_DATA[3:0] <= 0;
					outLCD_E <= 1;
					end
				
				241015: begin
					outLCD_E <= 0;
				end
				
				241515: begin
					outLCD_DATA[3:0] <= 1;
					outLCD_E <= 1;
				end
			
				241518: begin
					outLCD_E <= 0;
				end	
	
				260000: ready <= 1;
			endcase
		end
	
		if ( (inProgress == 0) && (ENABLE == 1) && (INIT == 0) )
		begin
			inProgress <= 1;
			ready <= 0;
			counter <= 0;
		end
		
		if (inProgress == 1)
		begin
			if (counter < 35000) counter <= counter + 1;
			case (counter)
				5000: begin
					outLCD_RS <= rs;
					outLCD_RW <= rw;
					outLCD_DATA <= data[7:4];
				end
				
				5500: outLCD_E <= 1;
				
				6000:
					outLCD_E <= 0;
				
				18000:
					outLCD_DATA <= data[3:0];
					
				18500:
					outLCD_E <= 1;
				
				19000:
					outLCD_E <= 0;
				
				35000: begin
					ready <= 1;
					if (ENABLE == 0)
					begin
						inProgress <= 0;
						counter <= 0;
					end
				end
			endcase
		end
	end
endmodule
50MHz -> 12,5 MHz:

Code: Alles auswählen

module dcf77_clockDivider_12_5MHZ(input SRC_CLK, output CLK_12_5MHZ);
	reg [2:0] count;

	assign CLK_12_5MHZ = count[2];

	initial count = 0;

	always @(posedge SRC_CLK) begin
		count <= count + 1;
	end
endmodule
Beispielcode, um ein großes "M" in der 3. Spalte und 2. Zeile des Displays anzuzeigen:

Code: Alles auswählen

	dcf77_completeDisplay d (CLK_12_5MHZ, enableDisplay, writeChar[6:0], writeCol[3:0], writeRow, displayReady, LCD_E, LCD_RS, LCD_RW, LCD_DATA[3:0]);
	always @(posedge CLK_12_5MHZ)
	begin
		case (mode)
			0: begin
					if (displayReady == 1)
					begin
						writeChar <= 13;
						writeCol <= 2;
						writeRow <= 1;
						enableDisplay <= 1;
						mode <= mode + 1;
					end
				end
			1: mode <= mode + 1;
			2: begin
				if (displayReady == 1)
				begin
					enableDisplay <= 0;
					mode <= mode + 1;
				end
			end
			3: // ...
		endcase
	end
Victor-Philipp Negoescu
http://www.viathinksoft.de

Benutzeravatar
crib
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 17. Apr 2008 14:43
Wohnort: Wiesbaden

Re: Projekt... LCD ansteuern

Beitrag von crib »

@ LinuxFan: Also das ist schon wirklich eine ganze Menge Aufwand, den du da betreibst, um das Display anzusteuern. Für eine rudimentäre Ansteuerung (inklusive Initialisierung) reichen eigentlich ca. 5-8 Zeilen Verilog-Code.
PS: meine allererste Ansteuerung vor ein paar Monaten war auch so umfangreich ;)

mheinrich
Windoof-User
Windoof-User
Beiträge: 35
Registriert: 4. Okt 2009 18:34

Re: Projekt... LCD ansteuern

Beitrag von mheinrich »

Hallo,

weiß jemand, wie in dem Signal die Wochentage codiert sind? In diesem (http://www.ptb.de/de/org/4/44/pdf/dcf77.pdf) Dokument wird auf ISO 8601 verwiesen, daraus geht aber nur hervor, dass der Montag die 1 ist, was sich mit meiner Erfahrung deckt, denn heute kommt eine 4 an.^^
Ich würde allerdings gerne wissen, ob der Sonntag nun die 0, oder die 7 ist. Ich kann natürlich einfach bis Sonntag warten, wäre aber trotzdem für eine Antwort vorher dankbar.

Gruß,
Markus

LucasR
Kernelcompilierer
Kernelcompilierer
Beiträge: 474
Registriert: 9. Jun 2009 09:55

Re: Projekt... LCD ansteuern

Beitrag von LucasR »

Sonntag hat meines Wissens nach die 7.

Antworten

Zurück zu „Archiv“