Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Bozuk PIC

Başlatan eseneren, 31 Aralık 2010, 12:22:03

eseneren

Selamlar, sanırım bazı pinlerden cok akım cektım ( portb tum cıkıslarına 1k ohm direc her biri sevensegmente data olarak , ortak eksi kısmınıda portc ye bagladım )
velhasıl bı garıp calısıyor pic su an, programlarken sorun yok, butun cıkısları out yapıp set edıyorum hepsı set oluyor. hepsını clear yapan program program yapıyorum sıfır oluyor ledı yak son yapamadım gecıkme yarım sanıye bozulma nasıl oluyor tamamen calısmıyormu bu sekılde garıplıkler mı oluyor.
Saygılar
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

erdogan2734

valla hiç bir şey anlamadım kardeşim pic bozuk olsa programlayıcı pici tanımaz zaten ama eğer daha detaylı bilgiverirsen yardımcı olabiliriz...
bu arada 1kohm dırenc cok fazla deılmı 220 yada 330 kullanıyorum ben led yada seven segment için...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

serdararikan

muhtemelen picde sorun yoktur.benimde başıma gelmişti bi ara gariptir ama portu program başında sıfırlamayı dene.

X-Fi

eğer tüm dijit anotlarını 1k ile besleyip ortak katodu picin tek pinine girdiyseniz arıza verebilir. picde tek pin üzerinden max 25mA akım akar toplam akımlar bu 25mA i açarsa ve beslemenizde düşüyorsa boden reset atıyor olabilir. Akım dağılımına dikkat edin. Bu şekilde tek pin ortak bağlantılarda tarama yöntemiylede akım düşürülebilir.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

bigbey

Eğer port'u giriş ve çıkış olarak çalıştırabiliyorsanız, herhangi bir bit'i de giriş çıkış çalıştırabilirsiniz. ledi yakıp söndürme yazılımınızı inceleyelim belki sorun oradadır.
TA6R

eseneren

Multiplex 7 segment calıstırmaya calıstırdım. daha sonra devreyı bozdum artık pıc ı kullanamıyorum bır turlu hatayı bulamadım. yarım sanıye yan yarım sanıye son bıle yapamıyorum.
İlk devrem bır port mısal portc data cıkıs herbırınde 1kohm dırenc vardı (10 kohm degıl ) bunlar seven segmentın a b c d ... segmentlerıne gıdıyor orta negatıf ucda portb nın bır pınıne gıdıyor.Aynı anda butun ledler yansa
V=ı.r      5v=i*1kohmise  i = 5mA den 5*7 =35 ma akım cektım sanırım. Hata ettım :)

pic bozuldumu bozulmadımı sımdı onu anlayamıyorum butun pinlerı 0 yapıyorum programı atıyorum hepsı sıfır .
baska bır program yazıyorum hepsını 1 yapıyorum portların oda calısıyor.
ama yarım sanıye yan yarım sanıye son calısmıyor ISIS de calısan porgram.Osilatordemı sorun var vs kondansatırdemı degıstır degıstır cıkamadım ısın ıcınden....
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

erdogan2734

Yazdıgın programı yazarmısın buraya....
Bildiğim tek şey henüz hiç bir şey bilmediğim...

eseneren

Alıntı yapılan: erdogan2734 - 02 Ocak 2011, 21:08:58
Yazdıgın programı yazarmısın buraya....

RA4 haric tam yarım sanıye degıl ama gozle gorulur zamanda yanıp sonecek dıye beklıyorum.... breadboarddan suphe etmeye basladım,
Keske ctrl+z hayatta olsa calıstıgı gunlere donmek ıstıyorum :)


LIST		P=16F877A	
	#INCLUDE	<P16F877A.INC>	
	__CONFIG H'3F31' 	;PWRT ON, DIGERLERI KAPALI
;-----------------------------------------------------------
;DEGISKENLER TANIMLANIR
;-----------------------------------------------------------
	WAIT EQU 0X020		;BEKLEME 
	WAIT2 EQU 0X021		;BEKLEME 2
	WAIT3 EQU 0X022		;BEKLEME 3

ORG	0x000			;BASLANGIC ADRESI
	GOTO MAIN

;}
START
;{		ORG 0X010
;-----------------------------------------------------------
;ANA PROGRAM
;-----------------------------------------------------------
MAIN
	CALL INIT
LOOP 
	CALL DELAY
	CALL SETALL	
	CALL DELAY
	CALL CLEARALL
GOTO LOOP

SETALL
;{
	MOVLW H'FF'
	MOVWF PORTA
	MOVLW H'FF'
	MOVWF PORTB
	MOVLW H'FF'
	MOVWF PORTC
	MOVLW H'FF'
	MOVWF PORTD
	MOVLW H'FF'
	MOVWF PORTE
RETURN
;};

CLEARALL
;{
	MOVLW H'00'
	MOVWF PORTA
	MOVLW H'00'
	MOVWF PORTB
	MOVLW H'00'
	MOVWF PORTC
	MOVLW H'00'
	MOVWF PORTD
	MOVLW H'00'
	MOVWF PORTE
RETURN
;};

INIT
;{	
	BSF STATUS,5		;BANK 1 E GEC
	MOVLW 0X06
	MOVWF ADCON1
	MOVLW b'00000000'	;PORT B I/0 AYARLANIR
	MOVWF TRISA
	MOVLW b'00000000'	;PORT B I/0 AYARLANIR
	MOVWF TRISB
	MOVLW b'00000000'	;PORT C I/0 AYARLANIR
	MOVWF TRISC
	MOVLW b'00000000'	;PORT D I/0 AYARLANIR
	MOVWF TRISD
MOVLW b'00000000'	;PORT D I/0 AYARLANIR
	MOVWF TRISE	
BCF STATUS,5		;BANK 0 E GEC
RETURN
;};
DELAY				
	MOVLW H'0F'
	MOVWF WAIT
LOOP1
	MOVLW H'FF'
	MOVWF WAIT2
LOOP2
	MOVLW h'FF'
	MOVWF WAIT3
LOOP3
	DECFSZ WAIT3,F
	GOTO LOOP3
	DECFSZ WAIT2,F
	GOTO LOOP2
	DECFSZ WAIT,F
	GOTO LOOP1
	RETURN

END


Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

erdogan2734

kardeşim ben sana tüm portlrı a b c d e yi komple yarım sanıye yanıp sondurecek bı program yazsam ve dırek hex dosyasını atsam olurmu? tum ayarları yapılmıs bır sekılde?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

eseneren

Alıntı yapılan: erdogan2734 - 02 Ocak 2011, 21:57:45
kardeşim ben sana tüm portlrı a b c d e yi komple yarım sanıye yanıp sondurecek bı program yazsam ve dırek hex dosyasını atsam olurmu? tum ayarları yapılmıs bır sekılde?
Minnettar olurum....
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

bigbey

;***********PORT YAKIP SONDURME**************************
	LIST		P=16F877A
	INCLUDE		"X:\MPLAB\P16F877A.INC"
	__CONFIG(_CP_OFF & _PWRTE_OFF & _HS_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)
		ERRORLEVEL	-302
		ERRORLEVEL	-306
		CBLOCK	H'20'
		REG1,REG2,REG3

		ENDC




		ORG	0X000
		GOTO	SETUP

MAIN
		CALL	YAK
		CALL	BEKLE
		CALL	SONDUR
		CALL	BEKLE
		GOTO	MAIN

YAK
		COMF	PORTA,F
		COMF	PORTB,F
		COMF	PORTC,F
		COMF	PORTD,F
		COMF	PORTE,F
		RETURN

SONDUR
		CLRF	PORTA
		CLRF	PORTB
		CLRF	PORTC
		CLRF	PORTD
		CLRF	PORTE
		RETURN
BEKLE

		MOVLW	0X03
		MOVWF	REG3
MMS
		MOVLW	0XDF
		MOVWF	REG1
MM		MOVLW	0XCD
		MOVWF	REG2
		DECFSZ	REG2,F
		GOTO	$ - 1
		DECFSZ	REG1,F		
		GOTO	MM
		DECFSZ	REG3,F		
		GOTO	MMS
		RETURN

SETUP
		BSF	STATUS,5
		CLRF	TRISA
		CLRF	TRISB
		CLRF	TRISC
		CLRF	TRISD
		CLRF	TRISE
		BCF	STATUS,5

		CLRF	PORTA
		CLRF	PORTB
		CLRF	PORTC
		CLRF	PORTD
		CLRF	PORTE
		GOTO	MAIN

		END[left][/left]


Buradaki kodları bir dene
TA6R

eseneren

@bigbey

Yazdıgın programı X:..P16F877A olan satırı P16F877A yapınca hatasız derledım ve ISIS de ve reelde calıstı.
Yazdıgın programı ıncelıyorum ben nerede hata ettım dıye, yok yaa satır satır debug yaptım hem ısıs de hem mplabda calısıyor anlyamadım nerde yanlıs yapıyorum
asagıdakı satırları yazmıssın kodda su 5 satır ıcın acıklama yaparmısın asm yenıyım sayılır bunları gormemıs ıdım.

Saygılar

                ERRORLEVEL   -302
      ERRORLEVEL   -306
      CBLOCK   H'20'
      REG1,REG2,REG3

      ENDC

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

eseneren

__CONFIG H'3F31'

yerine

__CONFIG(_CP_OFF & _PWRTE_OFF & _HS_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)

yazdım cozuldu ?? ama anlamadım sımdıye kadarkı tum programlarımda hep __CONFIG H'3F31' yazardım.
Velhasıl calıstı cok sukur yardımlarınızla sebebını anlayan varsa yardımcı olsun ltf..

Saygılar
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

bigbey

ERRORLEVEL   -302       
ERRORLEVEL   -306
Bu yazı 302 nolu ve 306 nolu hata mesajlarını derleme bitince verilen rapor dosyasında gösterme demek oluyor.

      CBLOCK   H'20'    bu satır değişken tanımlamalarında bizim RAM başlangıç adresini ifade ediyor. Bu satırdan sonra yazılan ve virgül ile ayrılan tanımlamalar REG1= H'20' adresine, REG2= H'21' adresine REG^=H'22' adresine atanıyor. Derleyici bu şekilde kendisi sıralı olarak atama yapıyor.
      REG1,REG2,REG3

      ENDC       (CBLOCK komutunun bitirildiği yer olarak tanımlama.)

Bu register tanımlamasını şu şekilde yapmak yerine daha az uğraşmak için.

REG1         EQU         0X20
REG2         EQU         0X21
REG3         EQU         0X22
TA6R

eseneren

@bigbey allah razı olsun,
Aşağıdaki komultar datasheette instruction sette yok.Bunları nerden ogrenebilirim daha varsa eger misal $-1 PC dan bir sayı cıkartıyor heralde tahmin ediyorum emin değilim varmı bu farkları yazan bir dokuman.

CBLOCK   H'20'
ENDC
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk