mikrocontroller.net

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


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

Bewertung
0 lesenswert
nicht 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):
Do 
Userinput Temp , "Benutzereingabe:" , 4
Cls
Lcd Temp
Wait 3
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 ^^

Autor: Ralph Fischer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

sollte eine Funktion nicht mit "call" aufgerufen werden?

Also
 call Userinput Temp , blabla

Liebe Grüße aus der Wesermarsch

Ralph

Autor: Oneil121 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Danke für die Antwort, hab es mal mit...
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 ^^

Autor: Michael (Gast)
Datum:

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

Autor: Charly B. (charly)
Datum:

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

Autor: Michael (Gast)
Datum:

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

Autor: Charly B. (charly)
Datum:

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

Autor: Ralph Fischer (Gast)
Datum:

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

Autor: Michael (Gast)
Datum:

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

Autor: Oneil121 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
$regfile = "m8def.dat"                                      'Atmega = m8def.dat

$crystal = 8000000                                          'Externen Quarz (8MHz)

'display konfig
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcdbus = 4

'Konfiguration des Keypads
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,
 Userinput Temp , "Benutzereingabe:" , 4

...

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: )
temp = userinput("HierString",4)

Gruß Oneil121

Autor: Oneil121 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, noch niemand eine Idee wo rann es scheitert?

Gruß Oneil121

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.