Hallo zusammen,
als PIC-Anfänger bin ich am WE (mal wieder) an meine Grenzen gestoßen
:-(
Worum gehts es ?
Ich möchte via I2C ein 4-zeiliges LCD-Display ansteuern.
Als PIC nehme ich den PIC16F1509
Ich verwende MPLAB X 6.10 mit MCC im Modus "Melody".
Melody implementiert I2C via Interrupt, was meiner Meinung nach
eine gute Lösung darstellt.
Nachdem ich ein neues Projekt erstellt habe und via MCC die Devices/etc
konfiguriert habe, existiert folgende Konfiguration (hier: Dateien,
Verzeichnisse): LCDI2C1.png
Der Zweig i2c_host stellt dabei die Funktionen für eine Kommunikation
via I2C zur Verfügung.
Nun muss ich also (nur noch) eine LCD-Schnittstelle implementieren, die
die generierte I2C-Schnittstelle verwendet.
Ich habe mich dazu in diversen Seiten im Internet schlau gemacht und
versucht, die grundlegenden Funktionen zu implementieren.
Die erste ist natürlich eine Initialisierungsroutine:
Man sieht am Code schon, dass dort "Ideen" aus anderen Implementierungen
eingeflossen sind. Ich zeige gerne den ganzen Code, vorerst möchte ich
aber schlicht und ergreifend wissen, ob diese Init überhaupt
funktioniert. Auch hier schon mal die Information, immerhin kann ich die
Hintergrundbeleuchtung damit an/ausschalten, so verkehrt kann es also
nicht sein. Dito stimmt die I2C-Adresse des LCD-Moduls schonmal.
Allerdings ist das Togglen des Backlights sehr lowlevel, also unabhängig
von der Auflösung des Dislays. Und da scheint der Hund begraben zu sein,
denn bisher hat sich noch kein Zeichen auf dem Display gezeigt. Das
Display sieht auch so aus, als ob es mit meinem Init gar nicht
einverstanden ist. Grundlegende Schreibroutinen funktionieren, denn
sonst könnte ich das LCD nicht togglen.
Das LCD sieht so aus wie in Bild LCDI2C2.JPG.
Das ist merkwürdig zweizeilig. Für das Verständnis der Funktion zeige
ich jetzt mal alle verwendeten #defines
Wenn ich Glück habe und ihr mir helft, ist "der Hund" bereits hier
begraben. Ansonsten gebe ich gerne mehr Information raus, ich will im
Moment meinen Beitrag hier nur nicht ausufernd lang machen.
Danke vorab für jeden Beitrag
Harry
Hast Du einen Logic Analyzer? Wenn nicht, dann kauf Dir einen. Die
billigen 24MHz/8Ch Teile von Amazon reichen.
Dann verifizierst Du, ob das was Du in Deinem Programmcode senden
willst, auch tatsächlich auf dem I2C gesendet wird und dass Du für jedes
geschriebene Byte ein ACK bekommst.
Dann nimmst Du Dir das Datenblatt zum Display und schaust, welche
Befehle das kann. Dann hängst Du Dich mit Deinem Logicanalyzer direkt an
das Display (d.h. an die Datenleitungen D4...D7 (das Display wird
wahrscheinlich im 4-Bit Modus betrieben) und E, RS und W) und schaust,
ob die Signale, die da im Datenblatt stehen, genauso richtig ankommen.
Wenn Du damit durch bist, sollte das gehen.
Du musst lernen zu lernen anstelle für jeden Mist hier zu fragen.
Du musst lernen, systematisch Fehlersuche zu betreiben.
Du musst lernen, welche Tools es gibt, wann Du sie einsetzt und wie sie
funktionieren.
Auf!
fchk
Frank K. schrieb:> Hast Du einen Logic Analyzer? Wenn nicht, dann kauf Dir einen. Die> [...]> Auf!>> fchk
Dein Beitrag hilft mir nicht weiter und dein Ton gefällt mir nicht.
Würde es dir etwas ausmachen, diesen Thread einfach zu ignorieren ?
Wenn ja: gut, wenn nicht auch gut, aber bitte nicht antworten, ich habe
echt keine Lust das auszudiskutieren.
Harry R. schrieb:> Dein Beitrag hilft mir nicht weiter und dein Ton gefällt mir nicht.
Frank hat Dir eine absolut korrekte Antwort gegeben, so sucht man den
Fehler.
DEIN TON ist hier unangebracht.
Stephan S. schrieb:> Harry R. schrieb:>> Dein Beitrag hilft mir nicht weiter und dein Ton gefällt mir nicht.>> Frank hat Dir eine absolut korrekte Antwort gegeben, so sucht man den> Fehler.>> DEIN TON ist hier unangebracht.
Für dich gilt das gleiche wie für Frank. Vielen Dank
Hi
Meine Erfahrung mit PIC16F1509 und MLAB ist gleich null.
Aus Zeitvertreib habe ich mal gegoogelt.
Möglicherweise hilft dir dieser Link weiter:
https://controllerstech.com/lcd-20x4-using-i2c-with-stm32/
Aufgefallen ist mir auf den ersten Blick die dortige
Initialisierungs-Sequenz, die I2C Adresse und auch der von dir
abweichende Wert bei der Definition für den 4-Bit Mode. Nur (?) unter
der Arduino IDE ist die I2C Adresse 0x27 oder 0x3F.
MfG
ElC schrieb:> Hi> Meine Erfahrung mit PIC16F1509 und MLAB ist gleich null.> Aus Zeitvertreib habe ich mal gegoogelt.> Möglicherweise hilft dir dieser Link weiter:>> https://controllerstech.com/lcd-20x4-using-i2c-with-stm32/>> Aufgefallen ist mir auf den ersten Blick die dortige> Initialisierungs-Sequenz, die I2C Adresse und auch der von dir> abweichende Wert für den 4-Bit Mode. Nur (?) unter der Arduino IDE ist> die I2C Adresse 0x27 oder 0x3F.>> MfG
Die Adresse muss stimmen, sonst könne ich das BackLight nicht
An/Aussschalten (mit bewusst falscher Adresse funktioniert das eben
nicht,
habe ich eben nochmal mal mit der FALSCHEN Adresse 0x28 getestet).
Ändern des 4Bit-Modes im Quelltext ändert nichts am Problem.
Also:
Dann zeig doch mal, wie du "LCD_CMD" implementiert hast.
Wenn dort einfach garnix oder was falsches passiert, wird das nix mit
dem Display.
nach allem was wir bislang wissen, könntest du ja auch ein
Hallo Harry,
Tut mir leid für Dich, daß Dich. Den gelegentlich herablassenden Ton
mußt Du hier einfach hin und wieder erdulden (rühmliche Ausnahmen gibt
es natürlich).
Jetzt aber zu Deinem Problem, vielleicht hilft es Dir, wenn Du im
Datenblatt des verbauten LCD-Controllers HD44780 nachliest - vermutlich
handelt es sich bei Deinem LCD um einen solchen - wie die
Initialisierung im 4- Bit Modus abzulaufen hat. Ich versuche es mal so:
Das LCD startet im 8Bit-Modus. Warum? Vom Hersteller so festgelegt. Zum
Start der Initialisierung muß die Betriebsspannung einen Mindestwert
erreicht haben, daher das Delay.
Nachfolgend die Initialisierung per Assembler (Für ASM unvollständig, da
hier nur die Zahlenwerte und der systematische Ablauf gezeigt werden
sollen). Die Zahlenwerte nach "movlw" mußt Du eben ins Hex-Format
umwandeln und mit LCD_CMD absenden. Die Sequenz ist zwar binär codiert,
aber einfach in das von Dir verwendete Hex-Format umzuwandeln.
Jeder Befehl muß per Toggeln des "Enable-Pins LCD_E" in den
Arbeitsspeicher des LCD geschoben werden. Ich zeige das nur wegen dem
Prinzip, dürfte bei Dir wegen des verwendeten Librarys auch so ablaufen.
mfG Ottmar
Hier die Sequenz
----------------
;Wait for more than 40 ms after Vcc rises to 2.7 V
movlw b'00110000' ;1. Function set
movwf LCD_LAT ; (Interface is 8 bits long .)
bsf LCD_E ; Toggle LCD_LAT,E
nop
bcf LCD_E
;
movlw b'00110000' ;1. Function set
movwf LCD_LAT ; (Interface is 8 bits long.)
bsf LCD_E ; Toggle LCD_LAT,E
nop
bcf LCD_E
;
;wait for more than 4.1ms
;
movlw b'00110000' ;2. Function set
CALL Control8Bit ; (Interface is 8 bits long.)
;
movlw b'00110000' ;3. Function set
CALL Control8Bit ; (Interface is 8 bits long.)
;
movlw b'00100000' ;4. Function set
CALL Control8Bit ; INTERFACE IS NOW 4 BITS LONG.
;
movlw b'00101000' ;5. Function set 2 AND MORE LINES 5x8 Dot
; movlw b'00100000' ; Function set 1 SINGLE LINE 5x8 Dot
CALL OutLcd_Ctrl ; send function to LCD
;
movlw b'00001000' ;6. display off
CALL OutLcd_Ctrl
;
movlw b'00000110' ;7. entry mode, increment
CALL OutLcd_Ctrl ; disable display-shift
;
movlw b'00000011' ;8. cursor home, cursor home
CALL OutLcd_Ctrl
;
movlw b'00001100' ;9. Set Display ON, CRSR_ON OFF Blink OFF
CALL OutLcd_Ctrl ; b3 b2 b1 b0
;
movlw b'00000001' ; Display löschen und cusor home
CALL OutLcd_Ctrl
RETURN
Hi,ich glaub es nicht!
Gerade schau ich auf den Tisch,, in der Schaltung vor mir liegt ja das
LCD2004/I2C, gekauft bei Amazon und ist HD44780-kompatibel. Läuft
prächtig mit meinem 2Wire-Adapter.
Ottmar
Ottmar K. schrieb:> Läuft> prächtig mit meinem 2Wire-Adapter.
Aber du versuchst auch nicht, den 4-Bit-Modus im 4-Bit-Modus zu
aktivieren.
Deshalb meine Frage nach der LCD_CMD... wenn da keine automatische
Umschaltung für 8bit/4bit-Modus drinnen versteckt ist, ist Harry's
Initialisierungssequenz falsch.
Εrnst B. schrieb:> Ottmar K. schrieb:>> Läuft>> prächtig mit meinem 2Wire-Adapter.>> Aber du versuchst auch nicht, den 4-Bit-Modus im 4-Bit-Modus zu> aktivieren.>> Deshalb meine Frage nach der LCD_CMD... wenn da keine automatische> Umschaltung für 8bit/4bit-Modus drinnen versteckt ist, ist Harry's> Initialisierungssequenz falsch.
Das sollte doch alles der Controlle auf dem I2C Adapter übernehmen?!
Er erklärt die Lösung in C für einen PI.
Da sollte locker zum Ziel führen
https://youtu.be/1p1rgkslO0U
Sigi S. schrieb:> Das sollte doch alles der Controlle auf dem I2C Adapter übernehmen?!
Auf den üblichen Adaptern werkelt kein Controller, da gibts nur einen
PCF8574T.
Εrnst B. schrieb:> Dann zeig doch mal, wie du "LCD_CMD" implementiert hast.> Wenn dort einfach garnix oder was falsches passiert, wird das nix mit> dem Display.> nach allem was wir bislang wissen, könntest du ja auch ein>
1
>#defineLCD_CMD(x)IO_Expander_Write(rand())
2
>
> irgendwo versteckt haben, um uns zu trollen.
Trollen mache ich nur im AfD-Forum :-)
Spaß beiseite, hier mal die Funktionen, die im Endeffekt das machen, was
nötig ist, um via I2C zu kommunizieren.
Genau da liegt das Problem. Beim Initialisieren ist das Display im 8
Bit-Modus. da kannst du nicht zwei Nibble hintereinander raussenden und
einzeln per E-Toggle übernehmen.
Du brauchst da nur das High-Nibble vom "Set 4 Bit Mode"-Commando setzen,
einmal E Togglen.
d.H.: erste Initialisierung per "LCD_Write_4Bit", nicht per "LCD_CMD".
TLDR:
Εrnst B. schrieb:> Genau da liegt das Problem. Beim Initialisieren ist das Display im 8> Bit-Modus. da kannst du nicht zwei Nibble hintereinander raussenden und> einzeln per E-Toggle übernehmen.
Klingt logisch :-)
> Du brauchst da nur das High-Nibble vom "Set 4 Bit Mode"-Commando setzen,> einmal E Togglen.
E togglen ?
Aber LCD_Write_4Bit(unsigned char Nibble)
sendet doch via IO_Expander_Write zweimal hintereinander 8 Bits.
Ich glaube ich/wir sind kurz vor der Lösung, aber mein Groschen hängt
noch fest .. Kannst du bitte das LCD_Initialize(unsigned char lAddress)
mal so übermitteln, wie es richtig wäre ?
Harry R. schrieb:> Kannst du bitte das LCD_Initialize(unsigned char lAddress)> mal so übermitteln, wie es richtig wäre
Gucks dir hier ab:
https://github.com/lucasmaziero/LiquidCrystal_I2C/blob/master/LiquidCrystal_I2C.cpp#L69
"write4bits" entspricht deinem "LCD_Write_4Bit"
"command" entspricht deinem "LCD_CMD"
usw.
Harry R. schrieb:> sendet doch via IO_Expander_Write zweimal hintereinander 8 Bits.
Von den 8 Bit, die der Expander ausgibt, sind nur 4 (die 4 oberen, das
High-Nibble) mit den Datenleitungen des Displays verbunden.
Deshalb: Jeder 8-Bit-Schreibvorgang am Expander schreibt 4 Bits zum
Display und die anderen 4 Bits bedienen Steuerleitungen (E, RS, RW,
Backlight)
Εrnst B. schrieb:> Harry R. schrieb:>> Kannst du bitte das LCD_Initialize(unsigned char lAddress)>> mal so übermitteln, wie es richtig wäre>> Gucks dir hier ab:> https://github.com/lucasmaziero/LiquidCrystal_I2C/blob/master/LiquidCrystal_I2C.cpp#L69
Tatsächlich ist das der Ursprung meines Versuchs, ich gehe das mit neuem
Wissen nochmal an.
> "write4bits" entspricht deinem "LCD_Write_4Bit"> "command" entspricht deinem "LCD_CMD"> usw.>> Harry R. schrieb:>> sendet doch via IO_Expander_Write zweimal hintereinander 8 Bits.>> Von den 8 Bit, die der Expander ausgibt, sind nur 4 (die 4 oberen, das> High-Nibble) mit den Datenleitungen des Displays verbunden.> Deshalb: Jeder 8-Bit-Schreibvorgang am Expander schreibt 4 Bits zum> Display und die anderen 4 Bits bedienen Steuerleitungen (E, RS, RW,> Backlight)
Ah, verstehe, jetzt ist mir das schon sehr viel klarer, ich bin kurz vor
dem Verständnis :-)
VG
So, da wäre ich wieder mit neuen Erkenntnissen, alten Problemen und
neuen Fragen. Der Tipp von Εrnst B. schrieb:
> Gucks dir hier ab:> https://github.com/lucasmaziero/LiquidCrystal_I2C/blob/master/LiquidCrystal_I2C.cpp#L69
Das habe ich schon von Anfang an versucht, der Hinweis hat mich aber
bestärkt es nochmal auf diesem Weg zu versuchen.
Die Portierung vom Arduino in die PIC-Welt sollte zu bewältigen sein.
Ich gehe mal ins Detail, bzgl. der Arduino-Bibliothek gibt ist noch auf
die Header-Datei zu achten
(https://github.com/lucasmaziero/LiquidCrystal_I2C/blob/master/LiquidCrystal_I2C.h).
Die erste zu überwindende Hürde ist eigentlich nicht schwer, portiert
wird von C++ nach C. Sollte man meinen, denn die C++-Klase enthält kein
print, das nützlich sein könnte :
1
voidLiquidCrystal_I2C::printstr(constcharc[]){
2
//This function is not identical to the function used for "real" I2C displays
3
//it's here so the user sketch doesn't have to be changed
4
print(c);
5
}
In den Examples findet man ein HelloWorld (leicht gekürzt):
1
#include<LiquidCrystal_I2C.h>
2
// Set the LCD address to 0x27 for a 16 chars and 2 line display
3
LiquidCrystal_I2Clcd(0x27,16,2);
4
5
voidsetup()
6
{
7
// initialize the LCD
8
lcd.begin();//Init with pin default ESP8266 or ARDUINO
9
//lcd.begin(0, 2); //ESP8266-01 I2C with pin 0-SDA 2-SCL
10
11
// Turn on the blacklight and print a message.
12
lcd.backlight();
13
14
lcd.setCursor(0,0);
15
#if defined(ESP8266)
16
lcd.print("ESP8266");
17
#else
18
lcd.print("ARDUINO");
19
#endif
20
lcd.setCursor(0,1);
21
lcd.print("Hello, world!");
22
}
Das init des LCD besteht aus dem Constructor und dann dem begin(),
diese beiden Methoden weren in meiner Portierung dann zusammengefasst.
Aber zurück zum print-Problem, im HW wird einfach lcd.print()
aufgerufen. Das existiert im Quelltext der Klasse nicht, sondern wird
irgendwie geerbt
1
classLiquidCrystal_I2C:publicPrint
2
{
Ich habe mich auf die Suche begeben um herauszufinden welche Klaaase das
vererbt, bin aber nicht fündig geworden, kann mir da jemand auf die
Sprünge helfen ?
So, das dazu, das größte Problem ist bisher, dass ich es immer noch
nicht geschafft habe, das LCD dazu zu bewegen 4 Zeilen anzuzeigen.
Ich zeige hier mal den kompletten Code (ohne Header-Datei).
1
#include<xc.h>
2
#include<stdio.h>
3
#include<stdint.h>
4
#include<stdbool.h>
5
#include"mcc_generated_files/system/clock.h"
6
#include"mcc_generated_files/i2c_host/mssp.h"
7
#include"custom.h"
8
#include"lcdi2c.h"
9
10
// commands
11
#define LCD_CLEARDISPLAY 0x01
12
#define LCD_RETURNHOME 0x02
13
#define LCD_ENTRYMODESET 0x04
14
#define LCD_DISPLAYCONTROL 0x08
15
#define LCD_CURSORSHIFT 0x10
16
#define LCD_FUNCTIONSET 0x20
17
#define LCD_SETCGRAMADDR 0x40
18
#define LCD_SETDDRAMADDR 0x80
19
20
// flags for display entry mode
21
#define LCD_ENTRYRIGHT 0x00
22
#define LCD_ENTRYLEFT 0x02
23
#define LCD_ENTRYSHIFTINCREMENT 0x01
24
#define LCD_ENTRYSHIFTDECREMENT 0x00
25
26
// flags for display on/off control
27
#define LCD_DISPLAYON 0x04
28
#define LCD_DISPLAYOFF 0x00
29
#define LCD_CURSORON 0x02
30
#define LCD_CURSOROFF 0x00
31
#define LCD_BLINKON 0x01
32
#define LCD_BLINKOFF 0x00
33
34
// flags for display/cursor shift
35
#define LCD_DISPLAYMOVE 0x08
36
#define LCD_CURSORMOVE 0x00
37
#define LCD_MOVERIGHT 0x04
38
#define LCD_MOVELEFT 0x00
39
40
// flags for function set
41
#define LCD_8BITMODE 0x10
42
#define LCD_4BITMODE 0x00
43
#define LCD_2LINE 0x08
44
#define LCD_1LINE 0x00
45
#define LCD_5x10DOTS 0x04
46
#define LCD_5x8DOTS 0x00
47
48
// flags for backlight control
49
#define LCD_BACKLIGHT 0x08
50
#define LCD_NOBACKLIGHT 0x00
51
52
#define En 0b00000100 // Enable bit
53
#define Rw 0b00000010 // Read/Write bit
54
#define Rs 0b00000001 // Register select bit : Data
55
#define Co 0b00000000 // Register select bit : command
Da sind noch Code-Reste drinnen, die viel. merkwürdig sind, einfach
nicht beachten. Mittels einer LED konnte ich sehen, dass immerhin schon
etwas auf den I2C-Bus geschickt wird.
Kommen wir zum Init, muss vorher noch über die einzelnen Routinen
gesprochen werden, die sich dann zum "verwenden" des I2C führen.
Aus
alles "versteckt ist" was die I2C-Schnittstelle betrifft
wird kein Wire.begin mehr benötigt (oder etwa doch ?).
Unsicher bin ich beim Parameter data.
In der Headerdatei (von mcc generiert) ist das so
definiert
data ist ein Zeiger auf einen uint8_t-Wert. Ich denke mal mein &data
sollte das richtig implementieren. Die Frage ist, wo befindet sich data
denn ?
Wenn es auf dem Stack ist wird es nach dem Ende von expanderWrite
irgendwann überschrieben. Da die I2C-Kommunikation aysynchron über einen
Interrupt erfogt ist es möglich, dass an dieser Speicherstelle bereits
etwas anderes steht. Um da auf der sichern Seite zu sein würde ich das
dannn so implementieren :
ist mir völlig unklar.Wenn ich davon ausgehe, dass I2C1_Host.Write
die einzige Schnittstelle zur I2C-Kommunikation drinnen ist
brauche ich pulseEnable doch gar nicht, oder ??
So, erst mal bis hierhin. Wenn diese Dinge geklärt/erklärt sind kann ich
mich um die weiterer Implementierung kümmern, sonst wird das hier ein
sinnloses tryAnderror.
Viele Grüße und danke für jede Hilfe
PS.: Da es vom Compiler Mecker wg. Stackgröße gabe habe ich viel mit
inline gearbeitet und teilweise routinen auseinandergezogen, damit nicht
so viele Calls den Stack zumüllen.
Michael W. schrieb:> Ey Du Stoffel! Diesen Satz gelesen? Und auch verstanden?
Wenn's für dich zu lang ist, gilt das nicht für alle.
Mach' doch mal einen Längenvorschlag.
> ● Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang>> Meine Fresse...
Schmerzen von der letzten Prügelei ?
Gute Besserung :-)
Guten Abend:
Diese Seite kennst Du?
https://iradan.com/?p=420
"I used a standard 44780 16×2 LCD, a Tautic development board, and a PIC
16F1509 (happens to come with the dev board). For programming I used
MPLAB X IDE v1.95 and XC8 v1.21 (free version) and the PICkit 3
programmer. The code is commented enough to figure out the hardware
setup."
PIC1509 und LCD, ok ohne i2c, aber vlt hift es weiter.
Harry R. schrieb:> Michael W. schrieb:>> Ey Du Stoffel! Diesen Satz gelesen? Und auch verstanden?> Wenn's für dich zu lang ist, gilt das nicht für alle.> Mach' doch mal einen Längenvorschlag.>> ● Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang>>>> Meine Fresse...> Schmerzen von der letzten Prügelei ?> Gute Besserung :-)
Es ist schon eine Frechheit einen fast 500 Zeilen langen Quellcode
einzufügen, dazu noch 'zig Leerzeilen und dann noch rumstänkern, wenn es
den Mitlesern nicht passt.
Zu hast ganz oben schon mal einen Mitleser der einen korrekten Beitrag
brachte angemacht, obwohl Du froh sein solltest, hier kostenlose Hilfe
zu bekommen. Das Leben ist keine Einbahnstrasse: wenn Du etwas von der
Community erwartest, kann die Community erwarten, dass Du Dich ihr
anpasst und nicht umgekehrt.
Christoph S. schrieb:> Guten Abend:>> Diese Seite kennst Du?>> https://iradan.com/?p=420>> PIC1509 und LCD, ok ohne i2c, aber vlt hift es weiter.
Danke. Nein diese Seite kannte ich bisher nicht, aber das wird sich
ändern.
Stephan S. schrieb:> Es ist schon eine Frechheit einen fast 500 Zeilen langen Quellcode> einzufügen, dazu noch 'zig Leerzeilen und dann noch rumstänkern, wenn es> den Mitlesern nicht passt.
- Die Leerzeilen fügt die Forumssoftware größtenteils selbst ein.
- Ich habe nicht gestänkert, sondern den Kommentar kommentiert.
> Zu hast ganz oben schon mal einen Mitleser der einen korrekten Beitrag> brachte angemacht, obwohl Du froh sein solltest, hier kostenlose Hilfe> zu bekommen.
Ich habe meine Meinung zu seinem Kommentar abgegeben, ist das hier
verboten ?
> Das Leben ist keine Einbahnstrasse: wenn Du etwas von der> Community erwartest, kann die Community erwarten, dass Du Dich ihr> anpasst und nicht umgekehrt.
Hast du auch was zum Thema beizutragen oder suchst du einfach nur nach
Dingen, die dir nicht gefallen ?
Einen schönen Abend noch :-)
Harry R. schrieb:> Hast du auch was zum Thema beizutragen oder suchst du einfach nur nach> Dingen, die dir nicht gefallen ?
Ich hab etwas beizutragen:
Etwas mehr Dankbarkeit deinerseits den Leuten die Dir hier helfen wäre
angebracht.
Stephan S. schrieb:> Harry R. schrieb:>> Hast du auch was zum Thema beizutragen oder suchst du einfach nur nach>> Dingen, die dir nicht gefallen ?>> Ich hab etwas beizutragen:> Etwas mehr Dankbarkeit deinerseits den Leuten die Dir hier helfen wäre> angebracht.
Ich bedanke mich für jede Hilfe, da kannst du gerne alle meine Beiträge
durchlesen. Damit würde ich die Diskussion mit dir gerne beenden und das
Ganze hier wieder auch fachlich/sachlicher Ebene weiter führen.