Label not found portd.

Neuuser

Mitglied
11. Aug. 2008
465
0
16
Sprachen
Hallo Leute,
ich habe heute ein komisches Problem mit den Compiler, der meckert das er nicht die Ports 3 und 5 finden kann, obwohl ich sie eigentlich komplett definiert habe und er sagt dann --Label not found portd.3 -- oder die 5, was soll das sein ?

Gruß Neuuser

Config Portb = Output
Config Portd.2 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Config Portd.3 = Output

Config Portd.0 = Input
Config Portd.1 = Input

Config Clock = Soft

Fuss Alias Portd.4 'Fussbodenheizung
'Solar Alias Portd.5 'Solar
Kessel Alias Portd.6 'Relais kessel
Wasser Alias Portd.7 'Relais wasser
Tast1 Alias Pind.0 'Taster1
Tast2 Alias Pind.1 'Taster2
Licht Alias Portd.3

Portd.0 = 1 'Taster1, schaltet gegen
Portd.1 = 1 'Taster2
Portd.2 = 0 'Fussboden relais
Portd.5 = 0 'Solar relais
Portd.6 = 0 'Kessel relais
Portd.7 = 0 'Wasser relais

Portd.3 = 0

Ddrc.3 = 0 'Temp eingang Fussboden
Ddrc.2 = 0 'Temp eingang Solar
Ddrc.1 = 0 'Temp eingang Kessel
Ddrc.0 = 0 'Temp eingang Wasser
 
Hallo Neuuser,

bitte schicke mir mal Dein komplettes Programm. Arbeitest Du ohne Header z.B.

Code:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 80

$baud = 38400

und machst Du Deine Einstellungen in BASCOM?

Also, zunächst finde ich an Deinem Code nichts Auffälliges und bei mir läßt sich der Code mit obigem Header auch compilieren. Die Fehlerursache muss also zunächst wo anders zu suchen sein.

Send mir doch mal Dein komplettes Programm und ich schaus's mir an!

Grüße,
Markus
 
Hallo Markus,
doch natürlich habe ich ein Header und die einstellungen mach ich alle in Bascom.
Er Meckert bei Portd.5 nun.

Der Code ist zu lang für dem Forum, kann ich den irgend wie anders einsetzen, außer das ich ihn auf ein Server zum zihen lege ?

Gruß Neuuser
 
Mach ein ZIP draus und häng es an. ZIP darf über 500kByte große sein, das sollte reichen!

Grüße,
Ma
 
Hi Markus,
ach so, die Klammer da oben zum anhängen, habe ich noch gar nicht gesehen :eek:
OK.

Gruß Neuuser
 

Anhänge

  • noname2.bas.zip
    3,8 KB · Aufrufe: 12
Hallo Neuuser,

Du bist bei Deinem Programm in eine typische Programmierfalle gelaufen. Zugegeben, BASCOm macht es Dir mit den Fehlermeldungen nicht einfacher aber, schau bitte Deinen Code nochmals genau an!!

Du schreibst:

Code:
[B][COLOR="Red"]Solar [/COLOR][/B]Alias Portd.5                                         'Solar

gleichzeitig schreibst Du:

Code:
[COLOR="red"][B]Solar[/B][/COLOR]:
'#################################
Waitms 200
Cls                                                         'lösche Zeilen
und verwendest im Debounce

Code:
          Debounce Tast2 , 0 , [COLOR="red"][B]Solar[/B][/COLOR], Sub

Fazit:
Das kann nicht funktionieren. Du definierst ALIAS und Sprungziele mit dem gleichen Namen. ALIAS bedeutet in BASCOM ersetzen. Also versucht BASCOM das Sprungziel SOLAR: mit PORTD.5 zu ersetzen, findet das Label nicht und liefert Dir die Fehlermeldung.

Namen für Konstaten, Definitionen, Labels, Sprungziele usw. dürfen IMMER NUR EINMAL vergeben werden. Bei Dir aber zweimal. Das funktioniert nicht. Du musst also entweder Dein Sprungziel SOLAR: anders benennen und von Debounce anders anspringen oder Du musst Dein ALIAS SOLAR anders bennennen.

Kapiert? So einfach ist das :D

Also kein Compiler-Fehler sondern ein kleiner Programmierfehler mit großer Wirkung!

Grüße,
Markus
 
Hi Markus,
danke erst mal für die durchsuche des Programm-es, ja ich hatte glaube ich schon mal das Problem aber irgendwann verliert man doch den Überblick über manche Fehler die schon mal waren.
Na ja ich glaub nun vergesse ich ihn nicht noch mal.:rolleyes:

Gruß Nruuser
 
Halb so schlimm...

.... und wenn, Du hast ja mich :p

Grüße,
Markus
 
Ja, das ist schön, :)

da frage ich doch gleich mal weiter.
du hattest dir doch das Programm durchgesehen, ich habe immer Probleme wen ich mit den Taster ins Menü gelangen möchte, da brauche ich oftmals bis zu 4 Tastendrücke bevor er überhaupt ins Menü kommt, woran kann das liegen.
Ist der IC vielleicht zu lange mit den Pausen beschäftigt, die im Untermenü sind.

Gruß Neuuser
 
Hallo neuuser,

zunächst erstmal nicht. Der Code erscheint mir plausibel. Ich könnte mir aber folgendes vorstellen. Je nachdem welchen Taster-Typ Du verwendet hast, könnte es sein, dass der Taster länger prellt als Debounce auf einen gültigen Wert wartet. Debounce hat eine Voreinstellung von 25ms. Wenn sich Dein Taster nicht innerhalb von 25 ms beruhigt hat und einen stationären Zustand eingenommen hat dann läuft Debounce nicht!

Mit dem Kommando "CONFIG DEBOUNCE = time" (time in ms) kannst Du diesen Default-Wert verändern. Das erste was ich also probieren würde ist den Wert mal auf 50ms zu erhöhen und dann ausprobieren, ob sich das Zeitverhalten Deines Tasters geändert hat.

Mir ist aber noch mehr aufgefallen. Es gibt bei Dir im Code die Variablen Ready usw. Soweit ich das sehen kann sind diese Variablen nach der Definition nicht vorinitialisiert. Bedeutte, es kann reiner Zufall sein, was in den Variablen drin steht. Du solltest Variablen immer vorbelegen.

Zunächst glaube ich erstmal nicht, dass der IC zu langsam ist. Denn wenn Du die Taste länger gedrückst hältst dann sollte er auf jeden Fall irgendwann die das Menü einspringen!

Grüße,
Markus
 
Hallo Markus,
ich hatte deine Vorschläge schon alle durchprobiert bis CONFIG DEBOUNCE = 200 es war keine Änderung zu bemerken.
auch ohne DEBOUNCE nur mit Anweisung und Wartezeiten dahinter, so habe ich bisher Entprellt.
Was meinst du mit ready nicht installiert ? sie sind doch oben angegeben, oder:confused:

Dim Ready As Bit
Dim Ready2 As Bit
Dim Ready3 As Bit
Dim Ready4 As Bit

Ja wen ich lange genug drücke springt er immer ins Menü rein, na ja schon seltsam.

Gruß Neuuser
 
Ja schon, natürlich sind sie definiert, sonst wurde ja BASCOm schimpfen. Aber sie sind nicht initialisiert, das bedeutet mit plausiblen Werten vorbelegt.
Zunächst bekommt ja jede Variable eine Speicheradresse zugewiesen. Was da drin steht ist zunächst Zufall. Du setzt die Variablen erst auf einen definierten Wert wenn Dein "Sekundeninterrupt" aufgerufen wird.
Bedeutet, vorher hängen die Variablen aber in "der Luft". D greifst aber schon vorher in der hauptschelife auf die Variablen zu und fräst zustände ab, oder?
Bedeutet, direkt nach Programmstart bis die Variablen erstmalig definiert auf einen bestimmten Zustand gesetzt werden, hängen sie in der Luft und was bei Deinen If-Abfragen rauskommt ist solange zufällig bis die Variablen erstmalig auf einen definierten Zustand gesetzt werden.

Bzgl. Deiner Tastenproblematik: Gib mir noch ein bissle Zeit. Ich versuche in den nächsten Tagen etwas genauer in Deinen Code einzutauchen. Anscheinend ist das Problem nicht offensichtlich und da benötige ich mehr zeit. Vor allem muss ich verstanden haben, was Du mit Deinem Code machst. Vielleicht kommen wir ja noch dahinter.

Grüße,
Markus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)