Trasig PIC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Trasig PIC?

Inlägg av squiz3r »

Jag har prblem med min PIC16F628A, en pinne på den (som jag aldrig har använt) fungerar inte nu när jag skulle använda den... Det är PORTA,4 på ben nr. 3. Är det någon speciel instälning man ska göra till den?
Här är programet jag testat med:

Kod: Markera allt

; Assign your microcontroller
        LIST P=16F628A

; This include file makes programming more understandeble
        include <P16F628A.INC>
        
        
    __CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF

; save on free ram in bank0

delay2_var1       	equ	20h
delay2_var2       	equ	21h  
delay2_var3       	equ	22h 
;***

delay_var1       	equ	23h
delay_var2       	equ	24h  
delay_var3       	equ	25h  
;***

pause_var1	equ           26h 
;***

time		equ           27h
sens_flags		equ	30h

;define flags m.m.

#DEFINE FLAG1		sens_flags, 0 ;**************************
#DEFINE FLAG2		sens_flags, 1 ;
#DEFINE FLAG3		sens_flags, 2 ;
#DEFINE FLAG4 	 	sens_flags, 3 ;Define a name on each flag.
#DEFINE FLAG5 		sens_flags, 4 ;
#DEFINE FLAG6		sens_flags, 5 ;
#DEFINE FLAG7		sens_flags, 6 ;
#DEFINE FLAG8		sens_flags, 7 ;**************************
	


;define pinouts

#define  _G		PORTA,0 
#define  _F			PORTA,1 
#define  _A		PORTA,2
#define  _B		PORTA,3
#define  _E			PORTA,4
#define  _D		PORTA,6 
#define  _C		PORTA,7

#define  __			PORTB,0
#define  ___		PORTB,2 
#define  ____		PORTB,3
#define  _____		PORTB,4 
#define  sens1		PORTB,5



;startadres of the controller
	 org 0x0000


; For using A0-A3 as digital I/O 
    	movlw	D'7'	; 
	movwf	CMCON	; Comparators off, all pins digital I/O 

; Reset Port values
        clrf	PORTA	
        clrf	PORTB
        
; define your pin direction (input/output)

    bsf	STATUS, RP0	; Switch to bank 1
    movlw	b'00000000'	;
    movwf	TRISA		; PORTA = all outputs (not MCLRE)

    movlw	b'00000000'	; 
    movwf	TRISB		; PORTB = all outputs

    bcf   OPTION_REG,7	                ;sätt på weak pull-ups	

    bcf	STATUS, RP0	;   Switch to bank 0
;************************************

	Goto	watch_resistans		

;************************************
;**** subroutins *******


;***********************
;**** Main program *****

watch_resistans

	
	bsf	_E
	call	delay1

	goto	watch_resistans

mov

	RLF		PORTA,1
	call	delay1
	goto	mov








; Delay routine 
; This code uses about 5 x 99975 instructions. At 4Mhz this is approx 500 milliseconds.


delay1   movlw	h'10'			;***************
	    movwf	delay2_var3		;
delay11  movlw	h'30'			;
	    movwf	delay2_var2		;Gör en låång pause
delay12  movlw	h'FF'			;
	    movwf	delay2_var1		;
delay13	decfsz	delay2_var1, f 	;
	    goto	delay13			;
	    decfsz	delay2_var2, f	;
        goto	delay12			;
     	decfsz	delay2_var3, f	;
        goto	delay11			;
    	return					;***************

pause	movlw	d'50'			;****************
	    movwf	pause_var1		;gör en kort pause
pause2	decfsz	pause_var1,1	;	
   		goto	pause2			;
		return					;*****************

delay   movlw	0x5				;*****************
	    movwf	delay_var3		;
delay21  movlw	0x5				;
	    movwf	delay_var2		;gör en mellan pause
delay22  movlw	0xFF			;
	    movwf	delay_var1		;
delay23	decfsz	delay_var1, f 	;
	    goto	delay23			;
	    decfsz	delay_var2, f	;
        goto	delay22			;
     	decfsz	delay_var3, f	;
        goto	delay21			;
    	return					;******************


        END


Någon som kan se något problem?

Tack på förhand!
//Daniel A
BoF
EF Sponsor
Inlägg: 222
Blev medlem: 7 oktober 2006, 16:43:37

Inlägg av BoF »

Kod: Markera allt

           banksel VRCON       
           movlw 	0x06
           movwf 	VRCON
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Hur märker du att den inte funkar?

Edit: Fattar inte riktigt hur VRCON påverkar PORTA,4? Får det bara till att pinne 2 kan påverkas?
Senast redigerad av RasmusB 16 mars 2007, 18:59:19, redigerad totalt 1 gång.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Denna pinne är open-drain, den ka bara sänka, inte sourca någon ström

Tyvärr finns det ingen inställning som ändrar på detta, det är bara till att byta pinne ellerbyta PIC till en annan modell. F88 t.ex. har inte denna absolut oumbärliga "finess" som är så fantastiskt användbar..

Ett yttre pull-up motstånd kanske kan hjälpa om den skall driva t.ex. en cmos-ingång och det inte är några krav på snabb stigtid.
Senast redigerad av Marta 16 mars 2007, 19:00:42, redigerad totalt 2 gånger.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

RasmusB: Den är låg oavsett vad jag säger till den.

BoF: Jag ska testa det istället.

tack!
//Daniel A
BoF
EF Sponsor
Inlägg: 222
Blev medlem: 7 oktober 2006, 16:43:37

Inlägg av BoF »

Inte istället utan lägg till det!
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Marta: Håller nog med om din teori.

(s. 37 i databladet för den nyfikne)
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Det är ingen teori, det är hårda fakta. Jag lärde mig den hårda vägen för ett tag sedan...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Marta: Jasså, då har vi det förklarat där... Det är en LED-display jag ska driva, så då går det väll inte med ett pull upp? Led ska ha ungefär 500Ω motstånd o så mycket kan väll inte en PIC dra ner?

BoF:Jaha! Jag läste fel, jag tyckte att du skrev CMCON, så då lägger jag till det :) (får ta o leta reda på vad det gör också)

Tack!
//Daniel A
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

En pinne kan sänka 20 eller 25mA, men inte på alla samtidigt. Nackdelen är ju att man bränner av effekt till ingen nytta.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Led ska ha ungefär 500Ω motstånd o så mycket kan väll inte en PIC dra ner?

"Dra ner" 500 ohm ?

En PIC pinne har en maximal *ström* definierat. Normalt 25 mA.
Så läge du ligger under det (och under hela portens sammanlagda
maxström) så är det OK.
Skriv svar