tenam12
Üye
- Katılım
- 1 Ocak 2018
- Mesajlar
- 1
- Puanları
- 1
- Yaş
- 44
18f4550 kullanarak bilgisayara usb bağlantısı yapıyorum c# ile yazdığım yazılımla rf veya 18f4550 pic'ine bağlı bir picten veri almak istiyorum gönderdiğim sayılar yerine daha farklı sayılar geliyor... tespitim bir hız farkı var.. çünkü 18f baud düşürüp diğerini yükseltince sayılar benim gönderdiğim değere yaklaşıyor.. haftalardır uğraşıyorum lütfen bir yardım eli... usb rf alıcı yapmak istiyorum etraftan gelen verileri bir yazılımla değerlendiriyorum... kodları yapıştırıyorum...
alıcı:
verici:
alıcı:
Kod:
#include <18F4550.h>
#device ADC=10
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,CPUDIV1,PLL1,VREGEN,NOPBADEN //4mh
#use delay(clock=4000000)
#use rs232(baud=9600,rcv=PIN_C7,bits=8)
#define USB_HID_DEVICE TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //Uçnokta1'de Kesme transferi aktif
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 64 //Uçnokta1 için maksimum alınacak ve gonderilecek
#define USB_EP1_RX_SIZE 64 //veri boyutu (64 byte)
#include <pic18_usb.h>
#include "USB_Konfigurasyon.h" //USB konfigurasyon bilgileri bu dosyadadır.
#include <usb.c>
//////////////
/////////////
#define UcNokta1 1
#define usb_durum paket[0]
#define hata paket[1]
#define port_durum paket[2]
#define kontrol paket[3]
#define bekle paket[4]
/////////////
unsigned int8 paket[64];
unsigned int8 a,b,c,d,k=0;
void main(void)
{
usb_init();
usb_task();
usb_wait_for_enumeration(); //Cihaz, hazır olana kadar bekle
while(TRUE)
{
if(usb_enumerated())
{
a=getc();
b=getc();
c=getc();
d=getc();
k++;
if (usb_kbhit(1)) //Eğer pc'den yeni bir paket geldiyse
{
usb_get_packet(UcNokta1, paket, 64);
switch(kontrol) // Paketin ilk elemanındaki komutu oku ve ilgili göreve git
{
case 'o':
port_durum=8;
usb_durum=9;
paket[5]=a;
paket[6]=b;
paket[7]=c;
paket[8]=d;
paket[9]=k;
hata=input_b();
usb_put_packet(UcNokta1, paket, 64, USB_DTS_TOGGLE);//64
break;
}
}
}
}
}
verici:
Kod:
#include <12F675.h>
#fuses NOWDT, NOMCLR, BROWNOUT,XT,INTRC_IO
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=PIN_A1,bits=8)
#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5
void main()
{
output_HIGH(pin_a0);
delay_ms(100);
output_LOW(pin_a0);
delay_ms(100);
output_HIGH(pin_a0);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_timer_1(T1_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_comparator(NC_NC);
while ( TRUE ) // blink LED {
{
putc(12);
putc(13);
putc(14);
putc(15);
}
}