Guten Morgen zusammen, Ich hab ein Problem mit meinem PIC16F872 und zwar will ich später ein LCD ansteuern mit ihm aber erstmal will ich ihn ganz normal Initialiesieren bzw. überhaupt zum laufen bekommen. Also ich seh den Quarz am CLKOUT mit 4 MHz schwingen, und ich schalte zum test alle 1,2 sekunden den PIN7 an PortB auf High und Low. aber es passiert einfach nix an dem Pin. Ich denke das ich irgentwas bei der Initialisierung vergessen habe. Kann mir da vieleicht jmd auf die Sprünge helfen. Status Bits sind wie Folgt eingestellt: Oszillator XT WDT Disabled PWRT enabled BOR Disabled Code Protect OFF Flsh Memory NOT written bei EEcon High Voltage on MLCR for Programming Vieleicht kann mir da jmd Helfen meine .asm file hab ich mal angehangen Gruss Sebastian
du hast ini auskommentiert! ; org 00 ; goto ini der prozessort findelt also demnach dein programm nicht du musst die beiden zeilen einkommenieren! maddin
-movwf portb ;Pin7 von Port B High -call L600 ;600ms Zeitschleife -call L600 ;600ms Zeitschleife -clrf portb ;Pin7 von Port B Low -call L600 ;600ms Zeitschleife -call L600 ;600ms Zeitschleife das sieht ja ganz nett aus, aber du kannst auch bist setzen mit bsf portb,7 bcf portb,7 du kannst auch trisb direkt clearn -clrw -movwf trisb ;PortB auf Ausgang clrf trisb beim bankwechsel würde ich zur sicherheit auch immer das status bit 6 mit auf null setzen... ...und ich würde empfehlen im mplap unter den optionen deine tabs auf 4spaces zu stllen, da du ansonsten immer probleme beim drucken deiner dateien haben wirst.. und auch so ist das für alle beteiligten besser.. maddin
ach ja, was bei den tris registern immer schön übersichtlich ist: movlw b'00000100' ;0 is output movwf trisb so kannst du dir das etwas flexibler gestalten portb,2 wäre demnach ein eingang..... maddin
Initialisierungs-Beispiele in Assembler für PIC16F677 gibt es unter: http://www.domnick-elektronik.de/picasm.htm
Hmm So sieht das Programm jetzt aus aber es funktioniert immer noch nicht. Ich hab extra nen Hexwert reingeschoben um die ausgänge auf High zu legen und das nicht mit einem "bsf" Befehl gelöst weil wenn ich mehrer ausgänge auf high schalten will dann ist das mit "bsf" umständlicher ich weiß echt nicht mehr woran das liegen könnte. Ich les mir mal diese seite durch.
Hi, was mir noch so affällt: ich kenne die :notation bei den labeln so nicht. wenn ich ein label anlege dann mache ich das wie folgt: goto label1 label1 movlw h'AF' ... wo hast du denn das programm her? maddin
...für den bankwechsel sind diese beiden makros wunderbar - nutze sie auch seit jahren und bin immer auf der sicheren seite damit... M_Bank0 macro bcf STATUS,RP0 ; Bank 0 bcf STATUS,RP1 endm M_Bank1 macro bsf STATUS,RP0 ; Bank 1 bcf STATUS,RP1 endm maddin
Ich benutze dafür die MPASM Direktive banksel. banksel TRISA banksel PORTA etc.
Ehm das Programm habe Ich selbst geschrieben. Das hat Bisher sehr gut Funktioniert. Das letzte Programm was ich die letzten 3Wochen geschrieben hab war das hier. Eine Software PWM um eine Rote, grüne und blaue LED anzusteuern. aber warum das mit dem PIC 16F872 nicht funktioniert ist mir ein rätsel da ja sogar der Quarz anläuft und mit seinen 4 MHz fröhlich daher schwingt
Der simulator findet das eigentlich alles richtig er stellt das trisB register auf ausgang und macht alle 1,2s den RB7 auf High und Low
...vielleicht versteht dein programmer, welchen du da auch immer nutzt, sich nicht mit dem pic... einfach mal port b auf FF setzen und sonst nichts...wenn noch nichtmal das passiert, dann scheint dein prog nicht dort zu landen wo es soll, denn deine letzte version sollte eigentlich laufen... hast du noch einen 2ten da, dann tausch doch mal - vielleicht ist er durch statische aufladungen beschädigt worden... gibt dein programmer eine rückmeldung wie viele bytes erfolgreich ins flash des pics geschrieben wurden, oder ob überhaupt was geschrieben werden konnte...? maddin
Also mit dem Programmer Habe einen ALL-11C2 Hat das brennen eines PIC12F629 geklappt. Nur der PIC16F829 zickt irgentwie etwas rum. Selbst bei dem neuen Programm (siehe Anhang) Schaltet er die PortB Eingänge nicht auf High die 'RBPU' sind enabled. Ich teste ma den Vorschlag nen andern Pic zunehmen.
Also Mein Brenn Programm Meldet nur einen fehler wenn bei der Übertragung etwas fehlgeschlagen sein sollte. Aber beim Pic brennen passiert nix er meldet mir das alles geklappt hat. mhm Komisch ich gucke mal weiter wenn jmd etwas ein fällt bitte bescheid sagen.
...a moment, in deiner letzten version hast du die portb als eingang definiert.... ..
ini: bsf status,5 ;Wechsel zu Bank1 bcf status,6 movlw b'00000000' ;PortB 'IN' or 'OUT' movwf trisb ;1=IN ; 0=OUT bcf option_reg,7 ;Pull-UP PortB enable bcf status,5 ;Wechsel zu Bank 0 bcf status,6 ; Pic Initialisierung Ende start: movlw h`ff` movwf PORTB goto start call L600 ;600ms Zeitschleife bsf portb,6 call L600 ;600ms Zeitschleife call L600 ;600ms Zeitschleife goto start ;Wieder zu start springen versuchs mal damit.... und das problem mit deinen tabs schlägt sich hier gerade nieder... wie du siehst.. maddin
so, und da ich davon ausgehe, das deine probleme auf den brenner in kombi mit deinem pic erscheinen ab zum guru der pic programmer: http://www.sprut.de/electronic/pic/brenner/index.htm maddin
Achja genau diese Tab Stopps wo muss denn was ändern damit das richtig funktioniert ? ich guck mal auf sprut
nur so als info Frage für mich. Kann es überhaupt am Brenner Liegen wenn der Oszillator richtig mit seinen 4MHz schwingt ? also werden doch die Config bits richtig gebrannt oder seh ich da was falsch ?
das problem ist, das ich deinen brenner nicht kenne, deinen aufbau auch nicht, und deine software zum brennen auch nicht. ich nutze mplap zum programmieren und habe hier einen icd speziell für diese typen, von mikrochip. da ich aber in dieser diskussion festgestellt habe, das du schon ein paar erfahrungen gemacht hast, und auch schon ein programm auf einem anderen pic zum laufen bekommen hast - gehe ich mal davon aus, das du in bezug auf die verwendung von pic-asm grundsätzlich schon zu wissen scheinst was du tust - bis auf die paar schusselfehler. ergo muss das problem woanders liegen. das kann bei einer solchen hardware/software sache eben an vielen stellen liegen. und auch noch dazwischen, deswegen würde ich versuchen alle fehler die dir einfallen systematisch auszuklammern. das fängt bei der betriebspannung an, geht über das tauschen zentraler bauelemente, und endet beim einstecken des com port steckers in deinen programmer. selbiges gilt für die software. du kannst z.b software nehmen von der du zu 100% weißt das sie funktioniert usw... letztendlich kann dann irgentwann nur noch der fehler als essens dessens übrig bleiben. maddin
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.