Forum: Mikrocontroller und Digitale Elektronik Probleme mit erstem PIC -Programm


von Jens P. (Gast)


Angehängte Dateien:

Lesenswert?

Hi leute, habe heute mein erstes PIC-Programm geschrieben. Soll für eine 
Steuerung sein.

Das asm-file ist im anhang.

Ich bekomme folgende Fehlermeldung beim compilieren, und werde einfach 
nicht schlau draus. ich denke mal ich bin in einen typischen noob-fehler 
getappt, den ich übersehen habe.

Kann mir jemand dabei helfen?

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p12F675 
"Sprachlab.asm" /l"Sprachlab.lst" /e"Sprachlab.err"
Warning[205] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 29 : 
Found directive in column 1. (list)
Warning[205] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 33 : 
Found directive in column 1. (__CONFIG)
Warning[205] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 35 : 
Found directive in column 1. (Errorlevel)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 40 : 
Found opcode in column 1. (call)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 41 : 
Found opcode in column 1. (movwf)
Error[115]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 47 : 
Duplicate label ("loops3" or redefining symbol that cannot be redefined)
Warning[205] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 49 : 
Found directive in column 1. (org)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 51 : 
Found opcode in column 1. (bsf)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 51 : 
Overwriting previous address contents (0000)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 51 : 
Overwriting previous address contents (0000)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 52 : 
Found opcode in column 1. (bsf)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 52 : 
Overwriting previous address contents (0001)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 52 : 
Overwriting previous address contents (0001)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 53 : 
Found opcode in column 1. (bsf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 54 : 
Found opcode in column 1. (bsf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 70 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 72 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 73 : 
Found opcode in column 1. (clrf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 74 : 
Found opcode in column 1. (bcf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 76 : 
Found opcode in column 1. (clrf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 77 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 78 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 79 : 
Found opcode in column 1. (clrf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 86 : 
Found opcode in column 1. (btfsc)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 88 : 
Found opcode in column 1. (goto)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 91 : 
Found opcode in column 1. (btfss)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 93 : 
Found opcode in column 1. (goto)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 100 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 101 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 102 : 
Found opcode in column 1. (bcf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 103 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 104 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 105 : 
Found opcode in column 1. (call)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 106 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 107 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 108 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 109 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 110 : 
Found opcode in column 1. (call)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 111 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 112 : 
Found opcode in column 1. (goto)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 119 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 120 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 121 : 
Found opcode in column 1. (bsf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 122 : 
Found opcode in column 1. (movlw)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 123 : 
Found opcode in column 1. (movwf)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 124 : 
Found opcode in column 1. (call)
Warning[203] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 126 : 
Found opcode in column 1. (goto)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 136 : 
Found label after column 1. (W1)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 139 : 
Found label after column 1. (W2)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 141 : 
Found label after column 1. (W3)
Error[113]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 143 : 
Symbol not previously defined (loops4)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 144 : 
Found label after column 1. (W4)
Error[113]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 151 : 
Symbol not previously defined (loops4)
Message[305] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 157 : 
Using default destination of 1 (file).
Halting build on first failure as requested.
BUILD FAILED: Sun Jun 03 18:56:17 2007



bin für jede antwort dankbar. greets, Jens

von Florian (Gast)


Lesenswert?

Die Warnungen bekommst du schon mal weg, wenn Du Leerzeichen (besser 
Tabs) vor den einzelnen Anweisungen einfügst. Vielleicht kannst Du ja 
dann die Fehler noch einmal posten. Das ist ein wenig unübersichtlich.

von Florian (Gast)


Lesenswert?

Außerdem hast du 2x loops3 definiert. Wenn Du das zweite loops3 in 
loops4 umbenennst, sollten zumindest 2 Fehler weg sein.

von Florian (Gast)


Lesenswert?

... und das org sollte vor das erste call.

von Frank (Gast)


Lesenswert?

schreibt der Compiler doch. Er hat in der ersten Spalte einen Opcode 
gefunden. Rück den Kram mal ein, dann sind die Warnungen weg. Und dann 
noch das Label definieren und schon sollte auch der Fehler weg sein.
Vielleicht wäre es besser mal was über den Compiler zu lesen bevor man 
wild drauflosprogrammiert?!? Oder wurde garnicht erst programmiert 
sondern nur mit Cut&Paste gespielt?

bye

Frank

von Jens P. (Gast)


Lesenswert?

Also das kommt jetzt nach einrücken der anweisungen raus:

thx, Jens

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p12F675 
"Sprachlab.asm" /l"Sprachlab.lst" /e"Sprachlab.err"
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 43 : 
Found label after column 1. (EINAUS)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 44 : 
Found label after column 1. (sekunden)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 45 : 
Found label after column 1. (loops2)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 46 : 
Found label after column 1. (loops3)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 47 : 
Found label after column 1. (loops3)
Error[115]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 47 : 
Duplicate label ("loops3" or redefining symbol that cannot be redefined)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 51 : 
Overwriting previous address contents (0000)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 51 : 
Overwriting previous address contents (0000)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 52 : 
Overwriting previous address contents (0001)
Error[118]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 52 : 
Overwriting previous address contents (0001)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 85 : 
Found label after column 1. (MAIN)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 98 : 
Found label after column 1. (AUSSCHALTEN)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 117 : 
Found label after column 1. (EINSCHALTEN)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 132 : 
Found label after column 1. (WAIT)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 136 : 
Found label after column 1. (W1)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 139 : 
Found label after column 1. (W2)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 141 : 
Found label after column 1. (W3)
Error[113]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 143 : 
Symbol not previously defined (loops4)
Warning[207] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 144 : 
Found label after column 1. (W4)
Error[113]   C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 151 : 
Symbol not previously defined (loops4)
Message[305] C:\PIC-ASSEMBLER\SPRACHLABORSTEUERUNG\SPRACHLAB.ASM 157 : 
Using default destination of 1 (file).
Halting build on first failure as requested.
BUILD FAILED: Sun Jun 03 19:09:41 2007

von Jens P. (Gast)


Lesenswert?

sorry, hatteeben die weiteren posts überlesen. Stimmt, diese sachen sind 
mir noch nicht aufgefallen. Über den compiler selbst bzw seine 
Fehlermeldungen habe ich nich wirklich was gefunden (wasz.b. opcode sein 
soll)

und: nein: es ist kein C&C. lediglich die warteschleife is an sprut 
angelehnt.

thx so far, Jens

von Florian (Gast)


Lesenswert?

Das Problem mit dem org besteht noch. Außerdem kommen die Labels 
unmittelbar vor das Kommando an Position 1:

Aus
1
MAIN              ; Label MAIN = Hauptprogrammschleife
2
btfsc   GPIO, 3          ; überspringe nächsten Befehl wenn schalterbit NICHT gesetzt ist
3
                ; (Im Ruhezustand ist Bit gesetzt)
4
goto   MAIN          ; Wenn Schalter in Ruhezustand frage weiter ab

sollte
1
MAIN   btfsc GPIO, 3
2
       goto MAIN
werden.

von Jens P. (Gast)


Lesenswert?

Vielen dank! jetzt lässt es sich kompilieren. Wenns euch interessiert, 
kann ich euch noch sagen obs mir der hardware auch so tut wies soll.

Als Anfänger war ich jetzt an dem bisschen kram Stundenlang gesessen, 
musste immer wieder nachlesen usw. Da is  ma irgendwann a bisserl 
matschig in der birne und "Betriebsblind".

Ich hoffe das ich mit etwas übung mit den Dingern zurecht komm.

Vielen herzlichen dank nochmal! greets, Jens

von Jens P. (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang habe ich das aktuelle listing.
Mein Problem ist folgendes:

Der Controller macht zwar das, was er machen soll, wenn erdie Routine 
"Einschalten" abarbeiten soll, doch das wars. Erhängt dann dort fest und 
reagiert nicht mehr auf Tastendrücke. Hat jemand vielleicht hierzu noch 
eine Idee? vielen dank schonmal. mfg, Jens

von Jens P. (Gast)


Lesenswert?

Nach einiger Zeit (gefühlt ca 2min.) kann ich weiter schalten zu dem 
Punkt an dem die gelbe LED kommen soll. Kann es sein dass ich mich in 
der Zeitschleife verrant habe?

greets,Jens

von Florian (Gast)


Lesenswert?

was steht denn im Datenblatt, wie schnell der interne Oszillator läuft? 
Habe das Datenblatt jetzt leider nicht parat.

von gravewarrior (Gast)


Lesenswert?

4MHz hat er. er lässt sich auch nach einiger zeit weiter schalten zum 
zustand mit der gelben LED (in der ausschaltroutine). Schaltet dann 
sogar irgendwann wieder das PC-PWR-Relais ab. Doch das wars dann 
endgültig. 5 Minuten später drücken führt dazu dass er wieder in den 
eingeschalteten (grüne LED, nur 12V Relais)-zustand zurückkehrt.

von gravewarrior (Gast)


Lesenswert?

wenn ich die warteaschlkeife deaktiviere lässt er sich zwischen gelb und 
grün umschalten. jedoch völlig chaotisch. mal nach dreimal mal nach zwei 
mal drücken. zu rot kehrt er nie zurück. Taster ist übrigens entprellt.

Solangsam fang ich echt an zu verzweifeln

von Florian (Gast)


Lesenswert?

Zu Deiner Warte-Routine:

Bei 4 MHz dauert im PIC jeder Befehl 1µs. Du hast 6 NOPs + einen decfsz 
+ ein goto. Das macht 8 Befehle (+/-). Das je 110 mal macht 880 µs, also 
knapp eine 1 ms. Die Ungenauigkeiten, daher +/- kommen dadurch, dass für 
die anderen Schleifen ja auch jeweils noch ein paar Befehle aufgebraucht 
werden. Aber im Großen und Ganzen kommt das hin.

Wie genau hast Du denn den Taster verdrahtet?

von gravewarrior (Gast)


Lesenswert?

1k zum port, 10k pull-up, 0,33uF nach masse. Taster parallel zum elko

V++
 |
| |
| | 10k
| |
 |    __1k_
  ----_______-----port
 |
 |
 |--------|
___     |
-----     |
0.33u         Taster
-----
 |        |
 |        |
V----------

von gravewarrior (Gast)


Lesenswert?

Ich weiss auch ned, ich gugg mir das Programm jetzt seit stunden immer 
wieder durch und weiss nicht was keinen sinn macht.

von Florian (Gast)


Lesenswert?

Ich würde vorschlagen, dass Du erst einmal direkt versuchst, in Deiner 
Hauptschleife nur eine LED mit dem Input zu koppeln, d.h. wenn der 
Taster gedrückt ist, die LED leuchten zu lassen und wenn er wieder 
losgelassen wird, die LED ausgehen zu lassen, um auszuschließen, dass es 
Probleme mit diesem Teil gibt. Vielleicht ist auch der 1k-Widerstand zu 
hoch, so dass ggf. der PIC durch den Spannungsabfall am 1k-Widerstand 
noch einen High-Pegel erkennt.

von Florian (Gast)


Lesenswert?

... falls die internen Pull-Ups an sein sollten.

von gravewarrior (Gast)


Lesenswert?

interne pull ups sind aus bzw nicht vorhanden

von gravewarrior (Gast)


Lesenswert?

einfaches schalten (taster-LED aus/an geht auch mit meiner schaltung. An 
der Hardware sollte es also nicht liegen.

von Florian (Gast)


Lesenswert?

Jetzt wäre es wohl an der Zeit, den Code mal in der MPLAB IDE 
durchzusteppen. Vielleicht fällt dadurch ja etwas auf.

von Florian (Gast)


Lesenswert?

Doch noch was gefunden. In Deiner Wait-Funktion hast Du an erster Stelle 
movwf und movfw verdreht.

von gravewarrior (Gast)


Lesenswert?

hmm, wenn ich wüsste wie das geht... gibts dazu irgendwo ne 
verständliche erklärung?

von Florian (Gast)


Lesenswert?

WAIT  movlw   D'4'             ; 4x250ms =1s
    movfw   loops2

müsste

WAIT movlw D'4'
     movwf loops2

heißen

von gravewarrior (Gast)


Lesenswert?

jepp, danke, das hab ich echt übersehen, verdreht. jetzt scheint es zwar 
von den schaltwerten her schneller zu gehen (also die schleife dürfte 
jetzt stimmen), aber er bleibt noch bei gelb hängen. da schau ich jetzt 
nochmal genauer nach!

Auf jeden fall einen rießen fetten dank an dich!

von gravewarrior (Gast)


Lesenswert?

in der funktion ausschalten hab ich unten nur movlw gemacht, aber das w 
nirgends hingeschrieben!

von gravewarrior (Gast)


Lesenswert?

DAS GERÄTLE LÄUFT!

DANKE NOCHMAL! DANKE DANKE DANKE!!!!!!!!!!

Ich glaub das sind erfahrungen die man erst mal sammeln muss. als ich 
mit elektronik angefangen hab bin ich auch nem falschen widerstand nen 
tag lang als phantom hinterhergejagt!

DANKE AUF JEDEN FALL NOCHMAL!

von Florian (Gast)


Lesenswert?

also noch
movwf GPIO

einbauen.

von gravewarrior (Gast)


Lesenswert?

genau das war der springende hüpfer

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.