-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Anfängerfehler? Call mit parameterübergabe

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2010
    Beiträge
    12

    Anfängerfehler? Call mit parameterübergabe

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo!

    ich bin ziemlich neu in Bascom und dies ist auch mein erstes komplett selbst aufgebautes projekt mit einem µC, und anscheinend brauche ich hilfe:

    die parameterübergabe bei call funktioniert irgendwie nicht, bzw gibt je nachdem wie ich den variablentyp wähle IMMER 0 (bei integer) oder IMMER 254 (bei byte... wie kommt man da auf so was "krummes" btw?)

    ich filter mal kurz die wichtigen codezeilen raus, und häng auch nochmal den kompletten source an.

    Das ganze passiert im ATmega16

    Code:
    Const Pos0 = 200
    Const Pos1 = 400
    Const Pos2 = 600
    Const Pos3 = 800
    Const Pos4 = 1000
    Const Pos5 = 1200
    
    Dim Slt As Integer
    Declare Sub Pour(byval Slt As Integer)
    
    [...]
    
    Select Case Makedrink
    
             Case 0:
               Call Pour(pos0)
    
             Case 1:
                Call Pour(pos1)
    
             [...]
    
             Case 7:
                Call Pour(pos2)
                Call Pour(pos3)
    
          End Select
    
    [...]
    
    Sub Pour(byval Slt As Integer)
    Local I As Integer
    
       For I = 0 To Slt
          Toggle Clk1
          Toggle Clk2
          Waitms 7
       Next I
    
    Return
    End Sub
    also soweit ich das richtig gelesen habe und die helpfile mir das sagt muss das doch stimmen oder?

    Im Prinzip sind das ja die code-beispiele, bei denen ich die variablennamen und -typen geändert habe. Ich hatte mich aber gewundert warum in allen beispielen immer nur byte verwendet wird und hab es auch mal so versucht.
    aber wie gesagt, selbst wenn ich den datentyp ändere und die auswahl der richtigen PosX innerhalb der sub mache passiert nichts, weil einfach anstatt 0 immer 254 angenommen wird.


    und wenn mich das schon vor probleme stellt, stellt euch mal vor wie ich geflucht hab bis ich gemerkt hab, dass ich an den fusebits rumfummeln muss um portc zu verwenden! xD

    achja, falls es so ein ähnlicvhes thema schon gab entschuldigt bitte, aber irgendwie hat die suchoption mehrmals gebuggt
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Hallo,

    du hast den Parameter der Funktion gleich benannt wie eine globale Variable, da wird wohl das Problem liegen. Lösch mal Zeile 72 aus deinem Programm.
    Statt dem Integer solltest du ein Word nehmen (siehe Wertebereiche in der Hilfe), geht aber auch so.

    mfg

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2010
    Beiträge
    12
    Tut mir leid dass ich so spät antwortete, aber ich hatte die letzte Woche Berufsschule und die Hardware steht auf der Arbeit, sodass ich vorher noch nicht weitermachen konnte.

    Das hat leider nicht weitergeholfen. Wenn ich in der Schleife Slt mit einer Zahl ersetze, klappt das wunderbar!

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Dein Werte sind nicht ausreichend. Probier' mal:

    $swstack = 128 ' Größe des Software Stacks
    $hwstack = 80 ' Größe des Hardware Stacks


    http://www.rn-wissen.de/index.php/Ba...#Bascom_Inside
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2010
    Beiträge
    12
    Ok, das hab ich jetzt probiert, funktioniert aber immernoch nicht. In dem arbeitsgang hab ich auch noch die framesize nach oben korrigiert. Jetzt müsste das doch masse genug sein?
    nun habe ich folgende werte:

    Frame 128
    Swstack 128
    hwstack 100

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Sei so gut und stell' die allerletzte/neuste Version deines Progs da rein.
    Das sollten wir doch rauskriegen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2010
    Beiträge
    12
    so, hier nochmal die aktuelle version des quelltextes.
    ich hab hier zuhause allerdings keine möglichkeit etwaige vorschläge zu testen, weil ich die hardware nur auf der arbeit hab. also geduld mit mir ^^°
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Eine Sub/Function braucht kein Return, ohne habe ich in der Simulation im Sub den Parameter den ich übergebe.

    mfg

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2010
    Beiträge
    12
    Das hat leider auch nichts gebracht, aber danke für den tipp. Hätte mich allerdings auch gewundert, da es ja funktioniert wenn ich anstatt slt ne feste zahl angebe. Das problem liegt ja anscheinend nur in der parameterübergabe.

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich hatte leider Probleme, das Programm als Ganzes im Simulator anzusehen. Ich muss da wohl erstmal ein Extrakt machen.

    Ich vermute ja, dass Bascom ein Problem hat im Zusammenhang mit der "CONST" und "BYVAL" Angabe.

    Das wollt ich einkreisen durch eine Temporär-Variable:

    DIM temp AS INTEGER

    und dann, beim CALL:

    temp = Par0
    Call Pour(temp)

    temp = Par1
    Call Pour(temp)

    etc.

    in dieser Form gibt's keine Ausreden.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •