pc usb pic ve pic usb pc haberleşmesi.

Başlatan omereliusuk, 29 Mart 2012, 13:46:11

omereliusuk

pc'den usb hattıyla pic'e veri gönderimi  //örnek kodlarına ulaşabildim ama yeterli değil.
pic'ten usb hattıyla veri gönderimi.        //verilen cevaplar ne şekilde pc ye gönderiliyor?

bununla ilgili kitap dergi makale  örnek kod vs.
c c# c++
kısaca
pc 'ledi yak' 
               ->pic ledi yakar
pc 'ledi yaktın mı?'  
               -> pic "evet yaktım"
cevabını verebilecek bir kod.

MCansız

c konusunda hiç bilgim yok ama proton biliyorsan sana yardımcı olabilirim proton ve delphi ikilisi ile pc den led yakıp ledin yanıp yanmadığını kontrol eden bir proje yapmıştım tabi hıd arabirimi ile şimdiden kolay gelsin

ibrsel

#2
 mk_29 hocam, Protonda USB ile haberleşme yapmışsınız..Bende 18F4550 ile bilgisayardan veri gönderip LCD de displayde veya LEdlerde görebiliyorum..Aynı şekilde PIC tarafından bilgisayar tarafına da bilgi gönderebiliyorum..Ama iki programı birleştirip tek çatıda topladığımda program USB den bilgi okuma rutinine geldiğinde bekliyor.Bilgisayardan bilgi gelmediği sürece bu rutini geçmiyor. Bu işi interrupt ile yapmam gerekiyor,ama çözemedim.Eğer yardımcı olur iseniz sevinirim..Aşağıda çalıştırdığım Proton programı ve devre şeması mevcut.

Alıntı Yap
''*************************************************************
Device = 18F4550
Xtal = 48
All_Digital = True
''*************************************************************
USB_Descriptor = "PICUSBDESC.inc"        '' USB ayarları için include dosyayı yükle
''*************************************************************
Symbol USBBilgiMax = 8
Symbol USBBilgiTX  = 8
Symbol USBBilgiRX  = 8
Dim    bilgi[USBBilgiMax] As Byte
''*************************************************************   
Dim PP0 As Byte System        ' USBPOLL status return
Symbol CARRY_FLAG = STATUS.0  ' high if microcontroller does not have control over the buffer
Symbol ATTACHED_STATE = 6     ' is USB attached
''************************************************************
TRISD = %00000000
Input PORTC.0 
''*************************************************************
Declare LCD_DTPin PORTD.4
Declare LCD_RSPin PORTD.3
Declare LCD_ENPin PORTD.2
''*************************************************************
Dim i As Byte                        '' Döngü değişkeni   
''*************************************************************       
    GoSub AttachToUSB                  '' USB Hazırmı kontrol ET
''*************************************************************
''        P R O G R A M       B A Ş L I Y O R
''*************************************************************
Main:   
   GoSub DoUSBIn : GoSub yaz   
   If PORTC.0=1 Then
    GoSub ata1 : GoSub DoUSBOut
   EndIf
GoTo Main

''*************************************************************
''        P R O G R A M       B İ T İ Y O R
''*************************************************************

yaz:
        Print At 1,1,"USB Gelen:" : DelayMS 5
    For i=0 To 15
        Print At 2,1+i,bilgi   : DelayMS 2
    Next
Return

''------------------------------------------------------------     
''---------      USB ALT PROGRAMLAR     ---------------------- 

DoUSBIn:       '' ------- USB DATA OKU  ---------------------
    USBIn  1, bilgi, USBBilgiRX,DoUSBIn   
Return
   
DoUSBOut:      '' ------- USB DATA YAZ  ---------------------
    USBOut 1, bilgi, USBBilgiTX,DoUSBOut   
Return

AttachToUSB:   '' ------- USB YÜKLENMESİNİ BEKLE-------------
   Repeat                        
      USBPoll      
   Until PP0 = ATTACHED_STATE
Return   
''------------------------------------------------------------   
ata1:
    bilgi[0]=0
    bilgi[1]=1
    bilgi[2]=2
    bilgi[3]=3
    bilgi[4]=4
    bilgi[5]=5
    bilgi[6]=6
    bilgi[7]=7
Return




MCansız

pc programı olarak ne hangisini kullandınız?

şuan elimde program kurulu bir pc yok onun için deneme yapamıyorum ne yapmak istediğinizi tam anlamı ile söylerseniz daha açıklayıcı olur

şimdi olayı büyük kısmını çözmüşsünüz sorun pc den bilgi gelmediği için pc alt rütüne geçmiyor ise söyle bir şey yapalım (bu işi kesme olayına götürüp işi zorlaştırmaya gerek yok)

öncelikle buffer bilgisini 8 bit den büyük yapın ve pc programında timer olayına girin ve her 5 sn bir boş bir veri yollayın  ayrıca bu yollanan veriyi bir porta yönlendirip ve porta led bağlayıp pc ile devre arasında verinin aktarıldığını görebilirsiniz bu sayede pc devreye 5 sn bir veri gönderecek ve pc rutinleri devam edecek

inş. anlatabilmişimdir elimde pc olmadığı için size maalesef bu kadar yardım edebiliyorum allah nasip ederse kısa zaman içerisinde istediğiniz uygulamaya benzer led yakama+adc sıcaklık ölçüm+lcd yazı yazma projesi geliştiricem  size kolay gelsin


ibrsel

İlginiz için çok teşekkür ederim..Benim asıl amacım USB den bilgi gelmediği sürece PIC işlemcim programdaki işlemlerini gerçekleştirsin.Ama USB den bilgi geldiğinde bu bilgileri bir dizi içerisine kaydetsin.(8 byte bana yetiyor.O yüzden 8 byte ayarladım)..Bunun için USB interrutp ını çözmem gerekiyordu,başaramadım.Ama Muhittin_kaplan hocam bir komutta ki yalnış kullanımımı düzeltti.Sağolsun,şimdilik işimi gördü..Ama yinede USB interrupt olayını çözmek için geniş bir zamanda çalışma yapacağım..Buradan arkadaşlara da paylaşırım..Şimidilik iyi çalışmalar..

omereliusuk

arada bizim konu güme gitmesin...
konuyu en başa alalım.
Alıntı yapılan: omereliusuk - 29 Mart 2012, 13:46:11
pc'den usb hattıyla pic'e veri gönderimi  //örnek kodlarına ulaşabildim ama yeterli değil.
pic'ten usb hattıyla veri gönderimi.        //verilen cevaplar ne şekilde pc ye gönderiliyor?

bununla ilgili kitap dergi makale  örnek kod vs.
c c# c++
kısaca
pc 'ledi yak' 
               ->pic ledi yakar
pc 'ledi yaktın mı?'  
               -> pic "evet yaktım"
cevabını verebilecek bir kod.


muhittin_kaplan