Forum: Mikrocontroller und Digitale Elektronik AVR, Problem mit einer Funktion (Bascom)


von Oneil121 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe habe ein Problem mit einer Funktion welche absolut nicht 
das macht was ich will ;) Vielleicht hab ich ja etwas falsch verstanden 
oder einen ziemlich dämlichen Fehler eingebaut, den ich jedenfalls nach 
langen rumprobieren nicht finden kann.

(Als Hardware zum Probieren habe ich einen Atmega8, an dem ein Display 
und ein Keypad hängt was auch beides funktioniert.)

Der Aufruf der Funktion sieht wie folgt aus (Restlicher Quellcode im 
Anhang):
1
Do 
2
Userinput Temp , "Benutzereingabe:" , 4
3
Cls
4
Lcd Temp
5
Wait 3
6
Loop

Auf dem Display soll in der ersten Zeile "Benutzereingabe:" angezeigt 
[Funktioniert nicht] werden, in der Zeile darunter kann man jetzt eine 
vierstellige Zahl eintippen, dass Ergebnis der Eingabe soll in der 
Variablen Temp gespeichert werden und danach als Bsp auf dem Display 
angezeigt werden[klappt ebenfalls nicht].
Kompilieren geht übrigens ohne Probleme.

VIELEN DANK im voraus, hoffe dass ich mich nicht ganz dämlich angestellt 
habe ^^

von Ralph Fischer (Gast)


Lesenswert?

Moin,

sollte eine Funktion nicht mit "call" aufgerufen werden?

Also
1
 call Userinput Temp , blabla

Liebe Grüße aus der Wesermarsch

Ralph

von Oneil121 (Gast)


Lesenswert?

Hi, Danke für die Antwort, hab es mal mit...
1
Call Userinput(temp , "Benutzereingabe:" , 4)

probiert, keine Änderung / selbe Probleme, anscheinend kann man die 
Funktion auch ohne "Call" aufrufen.

Gruß zurück aus kleinem Kaff nahe Köln ^^

von Michael (Gast)


Lesenswert?

Ist das richtige LCD eingestellt? Es gibt bei mehrzeiligen 
unterschiedliche Adressierungen. Ich hatte irgendmal so ein Problem.

von Charly B. (charly)


Lesenswert?

moin moin,

ich habs nur überflogen aber ich vermisse ein:

CONFIG LCD ...........

siehe hilfe im bascom, woher soll der arme AVR wissen wo
du dein LCD angeschlossen ist ?

viel erfolg & vlg
Charly

von Michael (Gast)


Lesenswert?

> Charly B.
Das meinte ich auch vorher.
CONFIG LCD ........... wird aber nur benötigt, wenn es von der 
Menue-Einstellung abweicht. Irgenwie muß man es dem Compiler aber sagen!

von Charly B. (charly)


Lesenswert?

Hallo Michael,

ich hab so sachen lieber im code, da kann auch ein fremder, wie
wir jetzt z.B. den code lesen und nicht nur vermutungen anstellen


noch ein tip, falls du das lcd an den jtag pins angeschlossen hast
must du jtag disable bit setzen


weiterhin viel erfolg & vlg
Charly

von Ralph Fischer (Gast)


Lesenswert?

Ich noch mal...

Was mir eben noch auffällt:
In der Funktion definierst Du 2 Subs, die aber weder jemals angesprungen 
noch mit einem "Return" abgeschlossen werden.

>Gruß zurück aus kleinem Kaff nahe Köln

Na, dann grüße ich doch mal zurück in die alte Heimat (bin gelernter 
Niederrheiner) ;-)

Ralph

von Michael (Gast)


Lesenswert?

Hallo  Charly B.!
Ist ja richtig. Mein Problem liegt Jahre zurück und ist geklärt. Ich 
wollte dem  Oneil121 nur sagen, das er die Voreinstellungen überprüfen 
soll.
Ich mach jetzt Schluß! Gute Nacht!

von Oneil121 (Gast)


Lesenswert?

So nochmal Danke fürs drüber gucken und die vielen Antworten, hab gerade 
erst gesehen das ich den oberen Teil vom Quellcode versehentlich nicht 
mit kopiert habe und mich evtl. was ungeschickt ausgedrückt habe.
1
$regfile = "m8def.dat"                                      'Atmega = m8def.dat
2
3
$crystal = 8000000                                          'Externen Quarz (8MHz)
4
5
'display konfig
6
Config Lcd = 16 * 2
7
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
8
Config Lcdbus = 4
9
10
'Konfiguration des Keypads
11
Config Kbd = Portd , Debounce = 20 , Delay = 10

Also das Display selbst geht ohne Probleme, kann beliebigen Text etc. 
auch anzeigen lassen mit lcd "test" ...

Ich meinte das in der ersten Zeile der String "Question" welcher beim 
Aufrufen der Funktion festgelegt wird NICHT angezeigt wird,
1
 Userinput Temp , "Benutzereingabe:" , 4
2
3
...
4
5
Function Userinput(byval Question As String , Byval Length As Byte) As Word


der Rest funktioniert soweit, ich kann was eintippen was auch korrekt 
auf dem Display zu sehen ist.

Das Zweite was nicht Funktioniert hat war, dass die Eingabe die man auf 
dem Keypad getätigt hat auch in der Variablen "temp" gespeichert wird. 
"Temp" ist trotz aufrufen der Funktion und Eingabe danach immer noch "0" 
wie zuvor. (Folgenes führt auch nicht zum Erfolg: )
1
temp = userinput("HierString",4)

Gruß Oneil121

von Oneil121 (Gast)


Lesenswert?

Hi, noch niemand eine Idee wo rann es scheitert?

Gruß Oneil121

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.