PIC 16F872 Initialisierung. Wie gehts richtig?

Gast #400913
Lesenswert?

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
Angehängte Dateien:
Gast #400915
Lesenswert?

-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
Gast #400916
Lesenswert?

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
Gast #400918
Lesenswert?

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.
Angehängte Dateien:
Gast #400919
Lesenswert?

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
Gast #400920
Lesenswert?

...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
Gast #400922
Lesenswert?

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
Angehängte Dateien:
Gast #400925
Lesenswert?

...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
Gast #400927
Lesenswert?

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.
Gast #400929
Lesenswert?

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
Gast #400932
Lesenswert?

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 ?
Gast #400933
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren