hi leutz ich ich bin dabei ein programm zu schreiben. es lässt sich in mplab auch schon fehlerfrei simulieren. das problem an der sache ist, dass ich es in der praxis nicht ans laufen bekomme. mplab zeigt mir an, dass der brennvorgang (mit picstart plus) fehlerfrei abgeschlossen ist. es kommt aber nichts raus. testprogramme (lauflicht) von sprut laufen bereits fehlerfrei auf der platine. hier der code: ======================================== list p=16F84A #include <p16F84A.inc> PORTA EQU 0x05 PORTB EQU 0x06 TRISA EQU 0x85 TRISB EQU 0x86 STATUS EQU 0x03 RP0 EQU 0x05 ZAEHL EQU 0x1B INP EQU 0x1C ZEI1 EQU 0x2A ZEI2 EQU 0x2B ZEI3 EQU 0x2C org 00 GOTO main main MOVLW 0x00 MOVWF ZAEHL inita BCF STATUS,RP0 ; PORTA wird als 2 bit eingabeport verwendet CLRF PORTA BSF STATUS,RP0 MOVLW 0x03 MOVWF TRISA BCF STATUS,RP0 initb CLRF PORTB ; PORTB wird als 4 bit ausgabeport verwendet BSF STATUS,RP0 MOVLW 0xF0 MOVWF TRISB BCF STATUS,RP0 MOVLW 0x05 MOVWF ZAEHL MOVWF PORTB anfang MOVF PORTA,0 ; Wert von PORTA einlesen MOVWF INP ; in INC speichern DECFSZ INP,1 ; dekrementiere INC GOTO eins ; ist das ergebnis nicht null, so gehe zu eins GOTO kommen ; ist das ergebnis null, so gehe zu kommen eins DECFSZ INP,1 ; dekrementiere INC GOTO zwei ; ist das ergebnis nicht null, so gehe zu zwei GOTO gehen ; ist das ergebnis null, so gehe zu gehen zwei DECFSZ INP,1 ; dekrementiere INC NOP ; springe in jeden fall zum anfang, GOTO anfang ; auch wenn das ergebnis nicht null ist. kommen INCF ZAEHL,1 ; kommt einer, so inkrementiere das zählregister MOVF ZAEHL,0 MOVWF PORTB ; und gebe dessen inhalt an PORTB aus GOTO zeit ; gehe zur zeitschleife gehen DECF ZAEHL,1 ; geht einer, si dekrementiere das zählregister MOVF ZAEHL,0 MOVWF PORTB ; und gebe dessen inhalt an PORTB aus zeit MOVLW 0x03 ; zeitschleife 3 sekunden MOVWF ZEI1 wei1 MOVLW 0xF9 MOVWF ZEI2 wei2 MOVLW 0xFA MOVWF ZEI3 wei3 NOP DECFSZ ZEI3,1 GOTO wei3 DECFSZ ZEI2,1 GOTO ZEI2 DECFSZ ZEI1,1 GOTO wei1 GOTO anfang ; springe nach 3 sekunden zum anfang end ==================================== ja. was soll das programm können? es soll eine personenzahl ermittlung sein. es zeigt an, wie viele leute in einem raum sind. dabei werden lichtschranken verwendet. es ist nicht möglich durch den ausgang hinein- und durch den eingang heraus zu kommen. PORTB soll die anzahl der leute, die sich in dem raum befinden, anzeigen. an PORTA sind die lichtschranken angeschlossen. hierbei beschreibt a0 den eingang und a1 den ausgang. deshalb wird nichts gemacht, wenn a0 und a1 gleichzeitig auf high sind (wenn einer kommt und gleichzeitig einer geht, sind es genausoviele wie vorher). meine frage: kann es sein, dass ich die include datei falsch eingebunden habe? (ich verwende den PIC16F84A) oder liegt es vielleicht daran, dass PORTA nicht mit den pegeln an den eingängen klar kommt? als anhang habe ich einen stromlaufplan angehängt. wobei der mclr eingang über einen 1k widerstand auf 5v liegt und pro ausgang eine led angeschlossen ist. bitte helft mir. mfg BoB
Ich denke mal, dass liegt an den Interrupts. Du ersparst dir ja jegliche Initialisierung (z.B. bestimmte Interrupts abzuschalten, Pullups,...). Der Interrupt-Einstiegspunkt ist glaube ich bei ORG 0x4, also wird bei jedem Interrupt diese Instruktion angesprungen.
@Kola: Die Interrupts sollten nach dem Reset grundsätzlich inaktiv sein @BoB: Was mir auf Anhieb auffällt, ist der nicht vorhandene Reset, des WDT. Den WDT mußt Du entweder in der Programmer-Software ausschalten oder regelmäßig in ms-Abständen mit "CLRWDT" resetten. Tust Du das nicht, bekommt der PIC regelmäßig einen Master-Reset, bevor er längere Programmsequenzen abarbeiten kann. Jörg
Nochwas: Ist im Config-Register überhaupt der richtige Oszillatortyp gesetzt ? Jörg
aja und wie mach ich das? a) den WDT in der programmersoftware ausschalten und b) nachschauen, ob ich den richtigen oszillatortypen habe. (hab noch nicht so die ahnung vom pic, da ich in ausbildung bin)
Das Schlagwort was du sucht heisst "Fuses". http://www.sprut.de/electronic/pic/config/config.htm Normal kannst du die entweder in MPLAB einstellen und dein Brenner verwendet die Fuses aus dem hex-file oder du stellst es über das Brennprogramm ein. mfg Schoasch
Die Arbeitswiderstände der beiden Lichtschranken erscheinen mir mit 1k doch sehhhr niederohmig. Einfach mal nachmessen ob auch wirklich ein brauchbares Signal an den Eingängen ankommt, so etwa low < 1V und high > 3V.
erst hat er ja alles schön gebrannt (auch hier war das so, dass es in der theorie mit mplab fehlerfrei simuliert wurde und in der praxis sah man nichts). aber nachdem ein kollege mir gesagt hat, dass ich alles nochmal neu schreiben soll, da man ja auch mal fehler überliest, kommt das hier: =================================== PICSTART Program\Verify Report 02-Nov-2006, 15:50:59 Device Type: PIC16F84A Address Range 0-30 Program Memory Errors Address Good Bad 0000: 2801 0000 0001: 3000 0000 0002: 009B 0000 0003: 1283 0000 0004: 0185 0000 0005: 1683 0000 0006: 3003 0000 0007: 0085 0000 0008: 1283 0000 0009: 0186 0000 000A: 1683 0000 000B: 30F0 0000 000C: 0086 0000 000D: 1283 0000 000E: 3005 0000 000F: 009B 0000 0010: 0086 0000 0011: 3001 0000 0012: 009C 0000 0013: 0B9C 0000 0014: 2816 0000 0015: 281C 0000 0016: 0B9C 0000 0017: 2819 0000 0018: 2820 0000 0019: 0B9C 0000 001B: 2811 0000 001C: 0A9B 0000 001D: 081B 0000 001E: 0086 0000 001F: 2823 0000 0020: 039B 0000 Any additional errors are not displayed. Configuration Bits Errors Configuration Setting Expected Received Oscillator RC LP Power Up Timer Off On Code Protect Off On ======================================== was soll das heißen oder was hab ich falsch gemacht? ok die alte version lief in der praxis auch nicht, aber er hat mir ein succeded angezeigt. @ Dieter Werner also ich bin jetzt zu hause. kann somit jetzt nicht nachmessen, in welchem bereich die spannung liegt. wenn ich mich richtig erinnere, liegt die spannung bei 4,5 v. genaue angaben gibts morgen früh.
Sers, das mit dem Messen kannste im Prinzip vergessen, da bei uns nur mit tastern simuliert wird... Doch wo bleiben meine Manieren.... Halo, ich heisse Dominik und bin der Kollege, der BoB geraten hat neu zu programmieren :-D Ich bin ebenfalls in dem PIC - Personenzahl - Ermittlungs - Team mit involviert und kann nur die Hände über dem Kopf zusammenschlgen... Unter http://www.mikrocontroller.net/forum/read-1-416493.html#418417 kann jeder sich das Trauerspiel nochmal anschaun was wir bislang hatten. Meine Gruppe hat jetgzt ein Programm entwickelt, welches ebenfalls noch fehlerhat ist, allerdings interessiert mich die nummer mit dem WDT auch ! Was genau ist da zu tun ? Bitte eine Art anleitung "für Dummies, wenn ihr versteht ;-) Soweit, heute erstmal inner Schule messen... Nebenbei erwähnt: Wir haben da noch ein Phänomen: Unsere Quartze schmieren immer ab ! Sollte zufälig jemand einen Fehler finden. ... Stromlaufplan kann ich nur nachreichen, liegt inner Schule aufm Server... OK, Danke erstmal, gutgehn, Dominik
Hi Lest euch folgendes auf der Seite von Sprut durch: http://www.sprut.de/electronic/pic/config/config.htm#watchdog Hast du die richtigen Fuses für den Quarz gesetzt? Haben die Kondensatoren die richtigen Werte? Hast du es einmal mit dem Widerstand probiert? Sitzt er nahe am PIC? mfg Schoasch
also. ich werd mir jetzt nachmessen und uns die seite von sprut durchlesen. vorab: wir verwenden kondensatoren von 33pF. @ schorsch was für einen widerstand meinst du???
also ich hab dann jetzt gemessen. high: 5,01V low: 7,6mV also mit den eingangspegel müsste er klarkommen
so ich hab jetzt folgende einstellungen eingestellt: Oscillator LC Watchdog Timer OFF Power Up Timer On Code Protect On aber er zeigt mir immer noch die fehlermeldung an. jetzt sogar in dem alten programm. ich hab nochmal ein screenshot als anhang drangehängt. da könnt ihr euch die values und adresses anschauen
Hey leute. verdammt. es funktioniert ja tatsächlich. da wären wir aber nie im leben drauf gekommen, dass man da auch noch einstellungen vornehmen muss. 1000 dank an alle, die uns geholfen haben.
Wieso kann ich denn jetzt, nachdem Bobs Gruppe auf dem Brenner gebrannt hat da nix mehr assemblieren ?! Kriegen immer nur: Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84 "Test_Lauflicht.asm" /l"Test_Lauflicht.lst" /e"Test_Lauflicht.err" /o"Test_Lauflicht.o" Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 52 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 53 : Executable code and data must be defined in an appropriate section Message[302] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 54 : Register in operand not in bank 0. Ensure that bank bits are correct. Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 54 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 55 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 56 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 60 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 65 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 66 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 67 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 74 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 75 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 78 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 79 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 80 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 81 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 82 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 83 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 84 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 85 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 86 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 87 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 89 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 90 : Executable code and data must be defined in an appropriate section Error[152] C:\ERMITTLUNG\TEST_LAUFLICHT.ASM 91 : Executable code and data must be defined in an appropriate section BUILD FAILED: Fri Nov 03 11:45:46 2006
ja. auch komisch ist, dass meine schaltung läuft, bei der eines kollegen, der in meiner gruppe ist, aber alles invertiert ausgibt, obwohl wir den selben PIC mit dem selben programm benutzen. bei mir ist es auch so, dass wenn ich an dem eingang (pin 18) mit einem multimeter die eingangsspannung messe, bzw da drauf rumkratze, er auf einmal einen nach unten zählt. das macht er in unregelmäßigen abständen. warum tut er das?
hehe. es läuft doch. wir haben nur die sensoren für eingang und ausgang vertauscht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.