PIC18F4550 portD dahili Pull-up

Başlatan jrcapa, 29 Mayıs 2015, 23:39:21

jrcapa

Merhabalar.

Datasheette yazan :

Each of the PORTD pins has a weak internal pull-up. A single control bit, RDPU (PORTE<7>), can turn on all the pull-ups. This is performed by setting RDPU. The
weak pull-up is automatically turned off when the port pin is configured as a digital output or as one of the
other multiplexed peripherals. The pull-ups are disabled on a Power-on Reset. The PORTE register is shown in Section 10.5 "PORTE, TRISE and LATE Registers"


yazıya binaen, türlü türlü register ayarlarını denediğim halde başaramadığım PortD'nin pull-up'ını kullanabilen olduysa beni aydınlatabilir mi?

Yaptığım register ayarları şöyle:

ADCON1 |= 0x0F;   // Hepsi digital
CMCON  |= 7;        // Comparator pasif
CCP1CON=0x00;   // ECCP pasif
SPPCON=0x00;     //SSP pasif

RDPU_bit=1;         //porte|=0x80;  --->> portD pullup AKTİF

trisD = 0xFF;         
trisE = 0xFF;

portD = 0x00;         
portE = 0x00;


Teşekkürler.







canbulut

hızlıca port b pull up kullanma şansınız yok mu

jrcapa

B portunda INT0,INT1 VE INT2 kesmelerini kullanmak istediğimden bu yolu zorluyorum. Kesmeler ile pull-up aynı anda yürümüyor,  pull-up pinlerini ayırabilseydik..

canbulut

biraz baktımda sizin pullup ayarlarınızdan  önce şuna benzer bir işlem yapmanız gerekebilir. Kendi kodlarınıza göre deneyiniz.
setup_psp(PSP_DISABLED);
setup_ccp1(CCP_OFF);

OnderGrmz

Merhabalar jrcapa hocam;
Alıntı yapılan: jrcapa - 29 Mayıs 2015, 23:39:21
Yaptığım register ayarları şöyle:

ADCON1 |= 0x0F;   // Hepsi digital
CMCON  |= 7;        // Comparator pasif
CCP1CON=0x00;   // ECCP pasif
SPPCON=0x00;     //SSP pasif
RDPU_bit=1;         //porte|=0x80;  --->> portD pullup AKTİF
trisD = 0xFF;         
trisE = 0xFF;
portD = 0x00;         
portE = 0x00;
RDPU_bit=1; ile Dahili pull-up aktif
trisD=0xFF ile tüm D portunu giriş olarak ayarlıyorsunuz.
fakat portD=0x00 ile D portu çıkışına lojik 0 değeri yazmış olmuyor musunuz ?
D portu için şu şekilde dener misiniz ?

ADCON1 |= 0x0F;   // Hepsi digital
CMCON  |= 7;        // Comparator pasif
CCP1CON=0x00;   // ECCP pasif
SPPCON=0x00;     //SSP pasif
trisD = 0xFF; 
RDPU_bit=1;         //porte|=0x80;  --->> portD pullup AKTİF       

esensoy

pull up ı kullanamadığına nasıl kanaat getirdin? data sheet te weak pull up diye yazar, bazen yeterli gelmiyor, mecburen 4k7 veya 10k atmak gerekiyor?
En tehlikeli an "zafer" anıdır.

jrcapa

Alıntı yapılan: esensoy - 30 Mayıs 2015, 12:30:58
pull up ı kullanamadığına nasıl kanaat getirdin? data sheet te weak pull up diye yazar, bazen yeterli gelmiyor, mecburen 4k7 veya 10k atmak gerekiyor?

Simulasyonda gözlemliyorum, gerçekte bakmadım. Portb için de weak pull up yazılıyor ama simulasyonda görünüyor. Bilemiyorum portb'den farkı var mı.

esensoy

pull up i görünce portD dediğinizi hiç görmedim,
doğrulamak için datasheet e de baktım, portD de pull up yok, B de var,

Sayfa 18
PORTB is a bidirectional I/O port. PORTB can be software
programmed for internal weak pull-ups on all inputs.

Sayfa 20
PORTD is a bidirectional I/O port or a Streaming
Parallel Port (SPP). These pins have TTL input buffers
when the SPP module is enabl
En tehlikeli an "zafer" anıdır.

canbulut

konuyu açan şu an ki hali hakkında bilgi verse belki halledildi konu kapanacak.

selimkoc

Şöyle bir deneme yaptım;

PORTE Registerinin 7. bitini (RDPU) 1 yaptım. (PORTE.RDPU=1;)

PORTD'nin ilk 2 pinini giriş diğerlerini çıkış olarak yönlendirdim. (TRISD=0x03;)

PORTD'yi 0 yaptım (PORTD=0;)

PORTD'nin pinlerini ölçtüm. RD0 ve RD1'de 4.80 V diğer pinlerde 0V okudum.

Yani sonuç olarak PORTD'de dahili Pull-Up kullanılabiliyormuş. Bunu da öğrenmiş olduk.

OnderGrmz

Alıntı yapılan: esensoy - 30 Mayıs 2015, 19:06:07
pull up i görünce portD dediğinizi hiç görmedim,
doğrulamak için datasheet e de baktım, portD de pull up yok, B de var

Esensoy Hocam syf. 120 de aşağıdaki ifadeler
[IMG]http://i59.tinypic.com/2gtcfpd.png[/img]

Alıntı yapılan: selimkoc - 30 Mayıs 2015, 20:59:16
PORTD'nin ilk 2 pinini giriş diğerlerini çıkış olarak yönlendirdim. (TRISD=0x03;)

PORTD'yi 0 yaptım (PORTD=0;)

PORTD'nin pinlerini ölçtüm. RD0 ve RD1'de 4.80 V diğer pinlerde 0V okudum.
Selimkoc Hocam PORTD'yi neden 0 yapıyoruz ?

baran123

PortD de için bakmak lazım ama geçen gün gözüme şu linkdeki ifade çarptı.
http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F4550
Solda özellikler kısmında İnternal pull up resistor yazıyor ama D+, D-  için

esensoy

Gerçekten de 120. sayfaya bakınca var olduğu görülüyor, ama 18. sayfadaki tabloda bahsetmemişler, unutmuşlar belki,
Neyse simulasyondan ziyade gerçekte bakmak lazım diye düşünüyorum,

Baran D+ ve D- deki pulluplar usb device olarak çalıştırdığında hızı belirleyen 1K5 dirençleri ifade ediyor,
En tehlikeli an "zafer" anıdır.

selimkoc

Alıntı YapPORTD'yi neden 0 yapıyoruz

Sadece ölçüm için; girişlerin H, çıkışların L olduğunu görmek için. Varsayılan değer değil, çıkışlar 0 olsun diye.

esensoy

Alıntı yapılan: selimkoc - 30 Mayıs 2015, 22:16:30
Sadece ölçüm için; girişlerin H, çıkışların L olduğunu görmek için. Varsayılan değer değil, çıkışlar 0 olsun diye.
18 serisinde pin i çıkış yaptıysanız pinde portx i değil latxin değerini görürsünüz,
girişler için de , şimdi deneme şansım yok ama, diyelim ki B0 ı giriş yaptık, 4k7 ile de +vcc ye bağladık,
portB = 0x00 desek çıkışı 0 yapar mı ki? bana yapmaz gibi geliyor,

yani portb ye değer atamak pek mantıklı gelmedi bana,
En tehlikeli an "zafer" anıdır.