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
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
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
...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.
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