Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

IPUCLARI

Başlatan OG, 07 Ocak 2015, 10:55:02

OG

Karşılaşılan bazı sıkıntılı hususlarda, sebepleri akla gelmeyen ve ancak sonradan çözülmüş konular için ufak bir başlık.
Benim sıradan bir program çalışırken takıldığım, sebebine olasılık vermediğimden dokunmadığım, ancak birkaç günüme sebep olan husus ile başlayacağım. Basit bir konu bile o kadar zaman kaybına sebep olduğundan küçük ipuçlarıda olsa hayat kurtarabilir.

-----
LOW yapılamayan PIN PORTB.3
Konu proton uzerinde yaşandı ancak diğer derleyicilerdede karşılaşılabilir.

İşin başında iken, devre ile dışarısı arasında USART ile haberleşmek üzere başladım. Daha sonra bazı ara hız değerleri kullanmam gerekliliği doğdu USART dan vazgectim yazılımsal haberleşme kodlarını ilave ettim. USART declaration ları, usart set işlemlerini falan kapatmıştım. Ancak USART TX pinin bağlı olduğu PORTB.3 ü bir türlü LOW a cekemedim. USART açık ise böyle olmasının normal olduğunu biliyorum ama hepsini kapattığımdan bu duruma anlam veremeden birkaç gün uğraştım. Porta blink yaptıramadım bir türlü.

Onceden yazdığım USART lı kodlardan sonra belki tekrar geri donerim lazım olur diye silmeyip programın altına kullanılmayan yere itelediğim küçük bir bolum vardı. O bolumun label ı bile olmamasına rağmen yani program oraya asla uğramayacak durumda olmasına rağmen oradaki tek satırlık Hserout komutu USART'ın açılmasına sebep oluyormuş. Portun LOW yapılamamasına sebep buymuş. Yani deklarasyon gibi veya RCSTA.7 biti gibi açıyormuş.

Açabilir, komutu görünce açar, bu normal. Ancak programın asla uğramayacağı boş bir alandaki (aynı zamanda en alttaki) bolumunde o komutun görülmesi USART'ı açmakta. Başa gelebilir..
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Maxim

#1
usta çok karışık anlatmışsın :)
aynı sorunu bende yaşadım, bir kaç saat uğraştırmıştı
datasheet sağolsun.

proton ile ilgisi yok aslında
seri port bazı işlemcilerde default açık olabiliyor yada açık kalıyor diyelim.
eğer o port ile işlem yapacaksak önce seri portu kapatmamız lazım.

üst satıra şu komutu yazmak gerekiyor
RCSTA.7=0

eğer 2 seri portu olan işlemci varsa
RCSTA1.7=0
RCSTA2.7=0


*seri port bazı işlemcilerde portb.3 olabilir
bazılarında portc.6-c.7

mesaj birleştirme:: 07 Ocak 2015, 11:31:02

başlık güzel, eklemeler yapalım

mesela dün bir arkadaş sormuştu
yüksek hafızalı bir işlemcide 64k nın üzerine çıkamıyordu
şunu eklemek lazım
Declare ACCESS_UPPER_64k = on

t2

#2
Programın en başına  hangi sürümle derlendiğini belirten açıklama eklemek iyi olur.
Çünkü sürümden sürüme fark edebilir. Projeniz başka sürümde derlenirse çalışmayabilir. Ya da hatalı çalışır.

Bu durum her PIC de olmuyor. bazı yeni eklenen piclerde oluyordu. 16f628a da pek olmaz.
Kaspersky açık kapalı durumu da fark ediyordu.

AKIL

#3
bende de 4685 te PORTD ve PORTE portlarında girişmi olmuyor çıkışmı yapamıyordum tam hatırlamıyorum
aşağıdaki gibi trisden hemen sonra PORTD VE PORTE hepsini 1 yaptığımda sorun düzeldi

TRISA=%11010000
TRISB=%11111010
TRISC=%10010001
TRISD=%11111110
TRISE=%00001111
LATE =%00000111  'açılışta bunu yapmazisek porte ve portd çalışmıyordu nedense 4685 de                                             
LATD =%11111111  'açılışta bunu yapmazisek porte ve portd çalışmıyordu nedense 4685 de                                             
PORTA=0:PORTB=0:PORTC=0:PORTD=0:PORTE=0 '     
LATA=0 :LATB=0 :LATC=0 :LATD=0 :LATE=0

magic_gun

Alıntı yapılan: AKIL - 09 Ocak 2015, 13:20:24
bende de 4685 te PORTD ve PORTE portlarında girişmi olmuyor çıkışmı yapamıyordum tam hatırlamıyorum
aşağıdaki gibi trisden hemen sonra PORTD VE PORTE hepsini 1 yaptığımda sorun düzeldi

TRISA=%11010000
TRISB=%11111010
TRISC=%10010001
TRISD=%11111110
TRISE=%00001111
LATE =%00000111  'açılışta bunu yapmazisek porte ve portd çalışmıyordu nedense 4685 de                                             
LATD =%11111111  'açılışta bunu yapmazisek porte ve portd çalışmıyordu nedense 4685 de                                             
PORTA=0:PORTB=0:PORTC=0:PORTD=0:PORTE=0 '     
LATA=0 :LATB=0 :LATC=0 :LATD=0 :LATE=0


bu sorun pic in PSP modunun acık veya kapalı olmasından kaynaklanıyor TRISE.4  psp enable/disable bitidir  bkz dataSheet  saygılarımla
hayal etmeden basaramazsınız www.atariturkiye.com