Forum: Compiler & IDEs Inhalt einer Variablen an DIsplay übergeben


von SvenM (Gast)


Lesenswert?

Hallo,

ich habe da ein Proble: Ich möchte dem Display eine Variable übergeben,
in der ein Wert gespeichert ist. Dazu habe ich die Variable global
definiert. Jetzt möchte ich, dass das Display den Inhalt der Variable
Wert (hier: 123) ausgibt.

Es funktioniert aber nicht. Ich bekomme die Fehlermeldung:
"../display2.c:24: warning: passing arg 1 of `lcd_out' makes pointer
from integer without a cast" Als absoluter Newbie kann ich da so gar
nix mit anfangen. Was mach ich falsch?? Ich hab doch gar keinen Pointer
initialisiert!?

Hier der Quellcode. Danke schonmal!

Gruß Sven

#include <avr/io.h>
#include "lcd4b.c"        //LCD-Routine einbinden

int wert=123;

int ausgabe();


int main(void)
{

  ausgabe();
  while(1);

}


int ausgabe()
{

  DDRD |= 0b11111100;      //Pins 2-7 als Ausgänge
    lcd_linit();        //LCD Initialisieren
  lcd_clear();        //Display löschen
  lcd_out(wert);      //Text ausgeben
  lcd_command(line2);      //2. Zeile
  lcd_out("!!!");        //Text ausgeben
  return(0);
}

von johnny.m (Gast)


Lesenswert?

Die Funktion lcd_out erwartet einen Pointer als Übergabewert. Du
übergibst einen Zahlenwert. Das geht nicht. Entweder benutzt Du
formatierte Ausgabe oder Du musst Deinen Zahlenwert zunächst in einen
ASCII-String umwandeln. Ich weiß nicht, wie die Funktion lcd_out
definiert ist, deshalb kann ich dazu nicht mehr sagen.

Gruß

Johnny

von Walter (Gast)


Lesenswert?

Ich nehme an das lcd_out einen String erwartet Da du weiter unten
"!!!" an lcd_out übergibst,
also wie johnny sagt: erst mal wert in einen String verwandeln und dann
einen Pointer auf diesen String an lcd_out übergeben

Grüße
Walter

von SvenM (Gast)


Lesenswert?

Hmm...

danke schonmal für den Hinweis. Habe auch daraufhin ein bisschen im
Netz gesucht, jedoch keine wirkliche Lösung gefunden.

Es waren immer Verweise, man müsse sprintf oder _itoa benutzen. Jedoch
stürzt mein AVM Studio beim kompilieren ab.

Ausserdem muss ich dazu Bibliotheken einbinden, die riesig groß sind
und ich (bis auf die eine Ausnahme) nicht brauchen werde. Kann mir
daher jemand einen Tip für eine nach mögl. einfache Realisierung
geben??

Gruß Sven

von Reiner (Gast)


Lesenswert?

int ausgabe(void)
{
  char buff [7];        // buffer Größe für +/-32768 und \0
  ...
  itoa(wert, buff, 10); // Wert in ASCII konvertieren
  lcd_out(buff);        // Wert ausgeben
  ...
}

itoa ist in stdlib.h, also nicht riesig groß

mfg
Reiner

von SvenM (Gast)


Lesenswert?

ahhhh...

das kann doch alles nicht sein...

Erstmal danke für die Antwort! Ist ja doch nicht so schwierig..

Habe aber wieder ein Problem: Wenn ich versuche, meinen Quellcode mit
#include "stdlib.h" zu kompilieren, stürzt mein komplettes AVM Studio
ab. Macht einfach nix mehr, so dass ich es abschiessen muss!? Was ist da
jetzt los??????????

stdlib.h ist im selben Verzeichnis! Er scheint es auch zu finden, da
eine Fehlermeldung kommt, wenn ich es nicht im Verzeichnis habe...

Die Kompilierung beendet er gar nicht... wie gesagt, kann nix mehr
machen dann???

Gruß Sven

von Reiner (Gast)


Lesenswert?

#include <stdlib.h>

nicht "stdlib.h"
Anführungszeichen nur für "eigene" .h files

stdlib.h sollte nicht in dem Verzeichnis sein indem der eigene Code
ist.
Der Compiler "weiß" schon wo er seine eigenen libs findet.

mfg
Reiner

von SvenM (Gast)


Angehängte Dateien:

Lesenswert?

Hängt sich trotzdem weg! Mal nen Screenshot... :-(

von Reiner (Gast)


Lesenswert?

Keine Ahnung.

lcd4b.c sollte auch nicht "included" werden sondern im makefile
eingetragen werden.

Einfach mal Zeile für Zeile auskommentieren und sehen wann es läuft.

Reiner

von rkhb (Gast)


Lesenswert?

@SvenM

Ich habe neulich WinXPPro über Win98SE gebügelt und da fing AVRStudio
auch an zu spinnen, insbesondere mit Abstürzen beim Kompilieren.
Nachdem ich das AVRStudio-Service-Pack-2 installiert habe, ist alles
wieder in Ordnung:

http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725

viele grüße
ralph

von Werner B. (Gast)


Lesenswert?

Besorge Dir mal die aktuellen Patches fürs AVR-Studio (NICHT AVM, die
sitzen in Berlin :) von

http://www.atmel.no/beta_ware/

Zumindest den SP2

von SvenM (Gast)


Lesenswert?

thumbsup

ihr seid super... Der Tip mit dem Patch hat funktioniert! danke
schön...

THX @Reiner:
Das funktioniert so. Das bringt mich schon weiter jetzt! Vielen vielen
Dank! ;-)

Gruß Sven

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
Noch kein Account? Hier anmelden.