Hallo, ich habe folgendes problem. Erst mal ein ausschnitt aus meinem Code: AD_10(); //Einholen des Wertes vom AD Wandler (10 Bit) sprintf(lcd_text,"%u",Wert); //In dieser Zeile folgender fehler: Warning [2054] suspicious pointer conversion LCD_write(lcd_text[0]); //Ausgeben der Stellen im Array LCD_write(lcd_text[1]); // LCD_write(lcd_text[2]); // LCD_write(lcd_text[3]); // LCD_data(2); //LCD wieder an erste Stelle So nun zu meinem problem. In der Zeile mit dem sprintf-Befehl bekomme ich immer den dahinterstehenden fehler vom Compiler. Kann mir jemand helfen. Achso meine include-Dateien: #include <p18f2550.h> #include <delays.h> #include <stdio.h> #include <string.h> #include <stdlib.h> Ich bitte lediglich um hilfe und nicht darum blöde kommentare zu bekommen oder den Hinweis auf die Suche. Ich habe gesucht, aber keine passende Lösung zu meinem problem gefunden. Ich danke schon mal im vorraus für Hilfe. Mit freundlichen Grüßen Marco
Kompletter Code bitte ansonsten kann man nichts machen. Genauso den Fehler bitte posten.
Also den kompletten Quellcode hab ich auf einem anderen PC. Kann den also erst ab Montag komplett schreiben. Also das Array ist: char lcd_text[21]; Der Fehler ist einfach nur diese Warnung: Warning [2054] suspicious pointer conversion Da fällt mir einen das ich den eigentlichen fehler gar nicht beschrieben hab. Auf dem LCD soll der Wert z.B. 1023 sein. Was auf dem LCD aber erscheint, ist "u|||". Also wenn das absolut nicht reicht also info...dann lade ich am Montag den Quellcode hoch.
Marco Hinrichs schrieb: > LCD_write(lcd_text[0]); //Ausgeben der Stellen im Array Was für einen Compiler verwendest du denn ? Den von Microchip ? Mein Verdacht geht in die Richtung, dass Marco Hinrichs schrieb: > sprintf(lcd_text,"%u",Wert); in dieser Form nicht geht. Ich nehme an, dass du einen Pointer für lcd_text benötigst. Versuch mal ob sprintf(*lcd_text,"%u",Wert); besser geht. Pointerinitialisierung natürlich nicht vergessen. =)
Die Meldung ist mir bisher noch nicht untergekommen, aber es kann sein, dass das Display nur den ersten Wert "u" bekommt und den Rest als Fehler bzw. als inhaltslose Bytes - deswegen immer dasselbe "|". Was ein Fehler beim Senden sein könnte - z.b. wenn W-Register und Status-Bits nicht gesichert werden, man alles vorher einliest und dann beim ersten Senden W überschreibt/cleared. Da ich deine Zeichentabelle bzw. das Displaydatenblatt nicht vor mir habe würde ich vermuten du codierst es falsch und deine "1" in binär/hex/dezimal/ascii? macht dann auf dem Display ein "u" daraus. Aber wie gesagt alles reine Spekulation ohne weitere Infos zu Hard- und Software. mfg
@abc Wenn ich einen fest definierten Wert nehme, z.B. 1 und den ausgebe, geht es. Dann steht auf meinem LCD eine 1. Erst wenn ich dies über den sprintf mache geht es nicht mehr...dann kommt nur noch Grütze :-) @Michael Ich werde es mal mit einem Pointer versuchen. Aber wie gesagt, ich hab den Quellcode nicht hier und muss bis Montag warten.
Hab nachgekuckt: http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ liegt wohl an den Pointern.
Also ich hab es nun auch mit einem Pointer versucht und das einzige was das Display anzeigt ist Müll :-) Bin ein bisschen überfragt...schreibe ich einen Wert in eine Variable und gebe diese aus, geht es. Schreibe ich allerdings einen oder mehrere Werte in ein Arrey und gebe dieses aus, kommt wie bei dem Pointer nur Müll.
Ja :-) das hab ich mir auch gedacht, ob das eventuell kaputt ist :-), aber es geht wenn ich halt meine Funktion aufrufe mit: LCD_write('a'); dann schreibt er auf das Display ein a. Ich hab das a auch in einer schleife schreiben lassen und in beiden Zeilen standen a`s :-)
Marco Hinrichs schrieb: > sprintf(lcd_text,"%u",Wert); //In dieser Zeile folgender fehler: > Warning [2054] suspicious pointer conversion Das dürfte darauf zurückzuführen sein, dass Du lcd_text[] als unsigned char[] vereinbart hast, sprintf aber ein char[] erwartet (was lt. Google bei Deinem Compiler signed ist). Nimm mal das unsigned bei der Vereinbarung von lcd_text[] weg, dann sollte die Warnung verschwunden sein. Das eigentliche Problem dürfte weiterbestehen, ist aber davon unabhängig. Da wirst Du weiter suchen müssen.
Das eigentliche problem besteht auch weiterhin... Ich glaube es liegt am PIC selbst oder an den Einstellungen des PIC´s. char test[21]; unsigned char bla=0; sprintf(test,"Hallo Welt"); for(bla=0;bla<=8;bla++) { LCD_write(test[bla]); } Schreibe ich es so, steht auf dem Display: allo Welt# Die Raute steht für ein Zeichen, das ich so nicht schreiben kann :-D
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.