18F4550 D+ ve D- kapatma(CCS C)

Başlatan ziyaretci, 04 Ağustos 2012, 21:31:52

ziyaretci

 merhaba;

PIC18f4550  nin RC5 ve RC6 da bulunan D+ ve D- usb kontrol pinlerini nasıl kapatırım.PCW kütüphanesinden baktım bulamadım veya ismi değişiktir farkedemedim.

Şimdiden Teşekkürler.

serhat1990

O pinleri sadece dijital giriş olarak kullanabilirsin . Ayrıca rc5 rc6 d+ d- ucu değil. rc4 rc5 , rc6 rx ucu.

Datasheet'e bakarsan sorunun cevabı hazır .

6: RC5 and RC4 are only available as port pins when the USB module is disabled (UCON<3> = 0). USB modülünü kapatırsan disable edersen kullanırsın.
ucon registrenin 3.biti usb enable disable için.

Datasheet sayfa 119'da note bölümünde cevabın hazır :)
adobe reader'daki sayfada 121..

ziyaretci

#2
amacım pinleri I/O olarka kullanmak ama PCW deki 4550 modülünde usb ucon diye bişey  bulamadım.

Açık söylüyorum bir şey anlamadım. :)

Biraz daha yardım rica ediyorum.

----------------------

usb modülü devredışı bırakın diyor normal pinleri kullanmak için yazılıma ekleyeceğim o modülü devre dışı bırakma komutunu bulamadım.


----------------------

DISABLE_INTERRUPTS(INT_USB);   denedim yine aynı



--------------------

(UCON<3> = 0).  anlamı ne bunun ?

mesaj birleştirme:: 05 Ağustos 2012, 03:15:36

2 saattir araştırıyorum.  Yabancı forumlarda da konu açılmış birileri bişeyler anlatmaya çalışmış sadece kodun içine hangi komutlarla usb devre dışı bırakılacağını bilen yok. Dediğim gibi yabancı forumlardada konular açılmış fakat hiç birinde cevap yok :S

Ersin

Normalde default olarak gpio olarak tanımlı olmaları gerekiyo, elindeki örnekte usb ile ilgili butun tanımları kaldırırsan gpio olarak görmesi gerekiyor.
Genelde 4550 yi usb özelliğinden dolayı kullanılır,yerine 4520 kullanabilirsin.

esensoy

UCON<3>  -->  18F4550 datasheet 164. sayfa UCON register ı, 3. bit (sağdan 4.)

bit 3 USBEN: USB Module Enable bit
     1 = USB module and supporting circuitry enabled (device attached)           USB modulu aktif,
     0 = USB module and supporting circuitry disabled (device detached)          USB modulu aktif değil
En tehlikeli an "zafer" anıdır.

ziyaretci

Alıntı yapılan: emresensoy - 05 Ağustos 2012, 10:07:55
UCON<3>  -->  18F4550 datasheet 164. sayfa UCON register ı, 3. bit (sağdan 4.)

bit 3 USBEN: USB Module Enable bit
     1 = USB module and supporting circuitry enabled (device attached)           USB modulu aktif,
     0 = USB module and supporting circuitry disabled (device detached)          USB modulu aktif değil


   tamam iyi güzelde bunu yazılımın içinde nereye hangi komutla uygulayacağız.UCON register nerede? Yabancı forumlar da da yazıyor bu hiç bir şey anlamadım.

serhat1990

#6
burada denedim dediğin komut usb interrupt kesmesini kapatmak bizim demek istediğimiz ise usb modülünü devre dışı bırakmak .
Sana söylemiş olduğumuz bit usb modülünü aktif pasif yapan bit. Bu bite ccs c için nasıl değer giriyorsun bilmiyorum ama usb modülünü devre dışı bıraksan bile rc4, rc5 pinlerini çıkış olarak kullanamassın. Ancak giriş olarak kullanabilirsin. Sadece giriş. Çıkış olarak kullanamazsın.

(UCON<3> = 0).  anlamı ne bunun ? ----> Bunun anlamıda ucon registerinin 3.biti yanı USBEN bitini 0 yapman gerekiyor.

Burası işine yarar sanırım. UCON registerinin üçüncü bitine USBEN biti olarak tanımlamış kodlarda 0 yapmış.

// disable USB module
#byte UCON = 0xF6D
#bit USBEN = UCON.3

// disable on-chip USB transceiver
#byte UCFG = 0xF6F
#bit USBTRANS = UCFG.3

void main()
{
   // ...

   USBEN = 0;
   USBTRANS = 1;

   while (1) {
      if (!input(PIN_C4)) { // Get input state
         output_c(255);
      }
      else {
         output_c(0);
      }
      delay_ms(100);
   }

}

esensoy

Erkan datasheet te biraz daha fazla vakit geçirmen gerekiyor,
mesela datasheet içinde UCON diye bir aratma yapsaydın 66. sayfada UCON'un adresini görecektin,
UCON = 0xF6D    //66. sayfada ki adres


En tehlikeli an "zafer" anıdır.

ziyaretci

@serhat1990 @emresensoy  teşekkür ederim verdiğiniz bilgiler için.

@serhat1990  verdiğin komut dizilimini dün gece sen yazmadan yabancı forumlardan araştırarak buldum , denedim, ben o pinleri çıkış olarak kullanıyorum yazılımda, o komutları kullandığım halde yine çıkış vermiyordu galiba komutlar yanlış dedim.Sadece giriş olduğu için çıkış alamıyormuşum demekki dediğine göre, zaten  baktım araştırmalarda sonuç yok veya ben görememişim devre üzerinde değişiklik yaptım c4 ve c5 pinlerini başka pinlere aktardım.


     Teşekkür ederim tekrar en azından ileride birisi daha bu sorunla karşılaşırsa türkçe bir kaynak olmuş oldu.

serhat1990

Sorun değil konuya ilk verdiğim cevapta sadece giriş olarak kullanabileceğini belirttim :)

İyi çalışmalar.