Forum: Mikrocontroller und Digitale Elektronik PIC16F88 PORTA reagiert nicht


von Jonny B. (jonnybgood)


Lesenswert?

Hallo

Ich verwende bei meiner Schaltung den internen Komparator des PICs, und 
initialisiere diesen durch beschreiben des CMCON Registers.
Da die Schaltung nicht wie geplant funktioniert, habe ich das ganze 
Programm im Debug Modus laufen lassen, und die "Watch" funktion zeigt 
mir, das nachdem das Register CMCON beschrieben wurde das PORTA einfach 
auf Null gesetzt wird, und auch im weiteren Verlauf keine Änderungen 
mehr annimmt.
Kann mir jemand sagen woran das liegt?

Danke...

PS: Im Anhang befindet sich die Initialisierung meines Programms.

von Jonny B. (jonnybgood)


Lesenswert?

Ok, scheinbar funktioiert das mit dem Anhang nicht...


memory EQU 0xf1

#define  Cal  PORTA, 5
#define  Cal_LED PORTA, 4
#define  OUT_stdby PORTA, 0
#define  OUT_msr PORTA, 1
#define  Start  PORTB, 0
#define  Pwr_LED  PORTB, 1



;**********************************************************************
    ORG     0x000
      goto    init
    ORG   0x4
    goto   wake_up



init    movlw b'00000001'
    movwf PORTA
    clrf PORTB

    bsf STATUS, RP0
    bcf STATUS, RP1

    movlw b'10101100'
    movwf TRISA
    movlw b'11111101'
    movwf TRISB

    movlw b'00000101'
    movwf OPTION_REG

    movlw b'11010000'
    movwf INTCON

    clrf PIE1
    clrf PIE2
    clrf PCON
    clrf OSCTUNE
    clrf OSCCON

    movlw b'00001100'
    movwf ANSEL

    clrf ADCON1

    bcf STATUS, RP0
    bcf STATUS, RP1

    clrf T1CON

    clrf ADCON0

    clrf PIR1

;  Komperator init
    bsf STATUS, RP0
    bcf STATUS, RP1

    movlw b'00001010'
    movwf CMCON    ; !!!!!!!!!!!!!!!

    movlw b'10000100'
    movwf CVRCON

    bcf STATUS, RP0
    bcf STATUS, RP1
;  Komperator init ende

;  Komperator Interrupt init
    bcf PIR2, CMIF
    bsf INTCON, GIE
    bsf INTCON, PEIE

    bsf STATUS, RP0
    bcf STATUS, RP1

    bsf PIE2, CMIE

    bcf STATUS, RP0
    bcf STATUS, RP1
;  Komperator Interrupt init ende

    bsf Pwr_LED
    bcf Cal_LED
    bsf OUT_stdby
    bcf OUT_msr
    clrf memory

    goto main

von Sebastian H. (sebihepp)


Lesenswert?

Du bist in die berüchtige Analog-Falle getappt. =)
Du musst PORTA auf Digital umstellen. Dazu löschst du
die betreffenden Bits im Register ANSEL.

von Sebastian H. (sebihepp)


Lesenswert?

Sorry, hab nicht genau genug gelesen. Schäm
Ich schau mal nach und melde mich, wenn ich eine Idee habe

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.