Funktion wird nicht ausgeführt mit Ausgabe auf LCD

OP #2719248
Lesenswert?

Hallo,

ich versuche mich mittlerweile seit Stunden mit einer ganz simplen 
einfachen Aufruf Funktion mit etwas auf meinem LCD Display ausugeben und 
ein Menü mittels 3 Tastern zu steuern, aber die Ausgabe bzw. der Aufruf 
der Ausgabe findet nicht statt.
Compiliert wird ohne Fehler und bis zu einem Punkt funktionierten die 
ersten Ausgaben auch bis nur noch ein H im Display erscheint. Ich finde 
meinen Fehler leider nicht, erschlagt mich bitte nicht direkt...
Bin auch nicht all zu weit in Sachen C Programmierung und muss mir alles 
ganz langsam aneignen.

Es geht sich um den Aufruf meines Hauptmenüs ab Zeile 257. Bis dahin 
funktioniert alles soweit und die Ausgabe kommt.

Wäre euch sehr dankbar für einen Tipp...

Vielen lieben dank

Lars

p.s. kompletter c code ist angefügt.
Angehängte Dateien:
(Firma: matzetronics) #2719311
Lesenswert?

Benutz doch mal die Funktion
1
lcd_puts_P("String")
 für deine Stringanzeigen. Ich habe jetzt nicht mitgezählt, aber jeder 
dieser Strings kostet Platz im RAM, wenn du lcd_puts() benutzt.
Da die Ausgabe auch erst dann abbricht, wenn du die Interrupts 
freigibst, solltest du auch nochmal nach Portkonflikten suchen.
Schaltplan kann nicht schaden, und im Zweifelsfall mal die 'lcd.h'
OP #2719341
Lesenswert?

Danke für eure Vorschläge, die Ausgabe allgemein Funktioniert nach der 
Initialisierung auch.

D.h. der Text ZEile 214  "PA" - MB -TN - Ln wird noch jeweils korrekt 
ausgegeben, danach das LCD gelöscht die Wartezeit klappt auch nur danach 
kommt der Aufruf meiner Anzeige für mein Menü nicht wo ich die Taster 
abfrage.
Das Menu an sich habe ich in anderer Form auch schon mal funktionsfähig 
gehabt sollte also eher nur was mit dem Aufruf oder dem nicht abfragen 
der Taster zu tun haben.
Die Funktion der Taster habe ich vorab schon überpfüft bevor ich die 
Ausgabe auf das LCD gemacht habe.
Habe zum Testen jeweils mit dem Taster eine LED an und ausschalten 
lassen, somit sollte der Teil auch stimmem...

weiß leider nicht mehr weiter..

MFG
(Firma: matzetronics) #2719358
Lesenswert?

Lars O. schrieb:
> Habe zum Testen jeweils mit dem Taster eine LED an und ausschalten
> lassen, somit sollte der Teil auch stimmem...
>
> weiß leider nicht mehr weiter..

Sehr schön, das du diesmal den Schaltplan und die lcd.h mitgepostet hast 
;-P Nu wissen wir immer noch nicht mehr. Meinen Hinweis mit den 
Interrupts mal durchdacht? Kommentier mal das sei() aus und guck, obs 
dann weitergeht.
OP #2719372
Lesenswert?

Entschuldige Matthias Sch. habe den LCD.h vergessen. Bin mittlerweile 
etwas ausgebrannt, da ich seit Tagen an diesem Projekt hänge und so 
einige 100 Fehler gamacht habe.
Den Schaltplan habe ich angehängt, ist aber denke ich eher unwichtig. 
Habe zum testen für alles das "myAVR Board MK2" erweitert mit einem 4x20 
Zeichen LCD Display und die Taster und LED s der Boards benutzt.
Angehängte Dateien:
(Firma: matzetronics) #2719422
Lesenswert?

Pass mal bitte in lcd.h noch diese Zeile an deine Quarzfrequenz an:
1
#define XTAL 3686400              /**< clock frequency in Hz, used to calculate delay timer */
Dann werden deine Variablen nicht initialisiert, hmen, einst und man 
sollten alle mit sinnvollen Werten beim Starten besetzt werden.

Und was soll diese Zeile:
1
return 253;
Du kannst ja aus main() nicht zurückkehren. Wohin auch? Muss weg.
OP #2719440
Lesenswert?

Ok, lcd.h ist angepasst.

Die Variablen werden nicht initialisiert ? Ich war der Meinung dies in 
Zeile  75 zu machen.

 uint8_t zurueck=1;                 // Variable zurück zum 
Hauptbildschirm
 uint8_t aut=1;               // Variable für Betrieb Automatische
 uint8_t einst=1;                      // Variable für Einstellungen
 uint8_t man=1;       // Manuelle Wassersteuerung
 uint8_t hmen=1;    // Variable für das Hauptmenu

wo würdest du das und wenn wie machen ?

das return hab ich schon rausgenommen, war nur ein verzweifelter 
Versuch..

THX
OP #2719666
Lesenswert?

Karl Heinz Buchegger schrieb:
> Funktionen

HI, das würde ich eventuell auch tun, aber ich weiß leider nicht genau 
wie ich das alles anwenden soll. Habe für das ganze wirklich eine lange 
Zeit gebraucht um das zu verwirklichen.
Wenn du mir eventuell ein kontretes Beispiel gibst kann ich es 
vielleicht besser umsetzten. Muss mir noch jeden Befehl genaustens 
ansehen...

Thx

Lars

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren