Keil C ile Usb iletişimi hakkında. (LPC2368)

Başlatan computerboy, 10 Mayıs 2010, 12:07:15

computerboy

#include <LPC23xx.H>
#include "type.h"
#include "usb.h"
#include "usbcfg.h"
#include "usbhw.h"
#include "usbcore.h"
#include "demo.h"
#include "stdio.h"

BYTE InReport[INREPORT_SIZE];
BYTE OutReport[OUTREPORT_SIZE];

void GetInReport (void) {
if (OutReport[0] == 'A' & OutReport[1] == '1'){
LED1ON();
InReport[0] = 'L';
InReport[1] = 'E';
InReport[2] = 'D';
InReport[3] = ' ';
InReport[4] = '1';
InReport[5] = ' ';
InReport[6] = 'O';
InReport[7] = 'N';
InReport[8] = ' ';
}
if (OutReport[0] == 'A' & OutReport[1] == '0'){
LED1OFF();
InReport[0] = 'L';
InReport[1] = 'E';
InReport[2] = 'D';
InReport[3] = ' ';
InReport[4] = '1';
InReport[5] = ' ';
InReport[6] = 'O';
InReport[7] = 'F';
InReport[8] = 'F';
InReport[9] = ' ';
}
}

void SetOutReport (void) {


}

int main (void) {

IODIR0 = 0x06000400;
BUZZEROFF();

USB_Init();
USB_Connect(TRUE);

while (1);
}

arkadaşlar bu komutlarla cihazdan bilgisayara usb aracılığı ile veri gönderiyorum ama veriler sürekli arka arkaya hiç durmadan geliyor bir kere gelip durmasını istiyorum nasıl bir kod kullanmam lazım? tahminimce usbhid ve usbdesc dosyalarında modifiye yapmak gerekiyor işin içinden çıkamadım bana bir fikir verirmisiniz.

ben şu şekilde denedim ama kilitleniyor

void SetOutReport (void) {
while (1); //
}

Link: http://www.4shared.com/file/pG7Rhw8D/USBHID.html

computerboy

Bi fikri olan yokmu arkadaşlar yada şuradaki kodu değiştir mantığı şu gibi felan :)

ahmet2004

USB_Connect(TRUE);  satırından sonra gönder datanı.

while döngüsünün içine koyma hiçbirşey ozaman bir defa göndermiş olursun.

computerboy

Üstad dediğiniz şekildede az önce denedim ama olmuyor veriler gene arka arkaya geliyor. tahminimce aşağıda örnekte göründüğü gibi bufferde gönderdiğim veri atanıyor ve sıfırlayamıyor. sıfırlaması için 'O' yerine 0x0 atıyorum o zamanda veri gelmiyor.

InReport[0]='O';InReport[1]='K';

computerboy

#4
arkadaşlar çıkamadım işin içinden. usb datayı aşağıdaki kod ile gönderiyorum ama hep arka arkaya geliyor ben bir kere gelip dursun istiyorum. while(1) döngüsünden önce gönderdiğim zaman ise ne gönderebiliyorum ne alabiliyorum yardımlarınızı bekliyorum.

int main (void)
{
IODIR0 = 0x06000400;
BUZZEROFF();

init_serial();
USB_Init();                             
USB_Connect(TRUE);
while(1){

if (OutReport[0] == 'A' & OutReport[1] == '1'){

   InReport[0] = 'O';
   InReport[1] = 'N';
   LED1ON();}

if (OutReport[0] == 'A' & OutReport[1] == '0'){
   InReport[0] = 'O';
   InReport[1] = 'F';
   InReport[2] = 'F';
   LED1OFF();}
   }

}



picusta

Hatan : & yerine && kullanmalisin.
OutReport degisirse tamamdir.
Nereden esti ? kaç aydir ilgilenmemissin.

computerboy

#6
Teşekkürler.
Hocam o zaman projeyi LPC ile yapacaktım baktım olmadı picle yaptım. şimdi kaldığım yerden devam edeyim dedim uzun bi ara oldu ama tekrar heveslendim:)

birde bende anlamadım ama OutReport[0] == 'A' & OutReport[1] == '0' bu tanımlama pcden gelen veri için

üstad sizin dediğiniz şekildede denedim ama yapamadım C dilini yeni yeni öğreniyorum.

computerboy

arkadaşlar örnek dosya burda lpc2368 için yapılmış bi incelerseniz sevinirim.

http://www.4shared.com/file/O5RWOotK/LPC2368-GSM.html

computerboy

arkadaşlar her yeri inceledim kod parçaları ekledim onu dene bunu dene olmuyor :) kimse yardımcı olmayacakmı bana ? ustalara heralde zor değildir. en azından şu sebepten dolayı böyle oluyor şu kısmı bu mantıkla değiştirmen lazım desenizde olur :)