mikrocontroller.net

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


Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SvenM (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hängt sich trotzdem weg! Mal nen Screenshot... :-(

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: rkhb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?t...

viele grüße
ralph

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.