PIC'iler Arası İletişim

slckyzc89

Üye
Katılım
8 Ara 2011
Mesajlar
17
Puanları
1
Yaş
34
mrhaba arkadaşlar, 1. picten ölçtüğüm 3 adet potun degerini virtual terminalde gördüm ama okudugum bu verileri 2. pic e gönderemiyorum komutlar konusunda skıntı yasıyorum . 1.picn rx ucunu 2. pic in tx ucuna 1. pic in tx ucunu 2.pic in rx ucuna bagladım , sizden beklentim virtual terminali 2. pic neresine baglayacagım ve 2. pic in kodu nasıl oalcak . 1. pic in kodları aşagıdaki gibidir


#include <16F887.h>
#device adc=8


#FUSES XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)








void main()


{
unsigned long int bilgi1,bilgi2,bilgi3,bilgi4,pot1,pot2,pot3,toplam;


setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);

set_tris_a(0x0F);
set_tris_c(0x00);
output_c(0x00);
setup_adc(adc_clock_div_32);
setup_adc_ports(ALL_ANALOG);

while (1)
{
set_adc_channel (0);
delay_us(25);
bilgi1=read_adc();
printf("pot1=%lu\r",bilgi1);
delay_ms(1000);

set_adc_channel (1);
delay_us(25);
bilgi2=read_adc();
printf("pot2=%lu\r",bilgi2);
delay_ms(1000);

set_adc_channel (2);
delay_us(25);
bilgi3=read_adc();
printf("pot3=%lu\r",bilgi3);
delay_ms(1000);

set_adc_channel (3);
delay_us(25);
bilgi4=read_adc();
bilgi4=bilgi1+bilgi2+bilgi3;
printf("toplam=%lu\r",bilgi4);
delay_ms(1000);
}
}
 
1. pic tx --- 2. pic Rx gelcek yani çapraz bağlancak printf komutu yerine putc() putchar() puts() komutunu kullanmalısınız adc veriniz 16 bit olduğu için 8 bitlik 2 parti halinde gönderme yapıp alıcı tarafta tekrar 16 bit olarak birleştirmeniz gerekiyor nedeni r232 ve diğer bütün seri iletişim protokolleri 8 bit üzerinden taşınıyor olması.
 
herşey aynı olacak sadece pritnf komutu yerine putc() mu kullanacagım birde char ile bir karakter tanımlamam gerekmiyormu
 
herşey aynı olacak sadece pritnf komutu yerine putc() mu kullanacagım birde char ile bir karakter tanımlamam gerekmiyormu

evet alıcı taraftada getc komutu ile alıp işleyebilirsiniz birde adc yi zaten 8 bit okuyosunuz
unsigned long int bilgi1,bilgi2,bilgi3,bilgi4,pot1,pot2,pot3,toplam;

bunu unsigned int olarak değiştirin yani 8 bitlik değişken kullanırsanız karşı tarafta doğru bilgi okursunuz.
 
the_nigth kardeş gect mail adresini varsa veririmisin yaptgm devreyi bir gözatmanı istiyorumda :)
 
Moderatör tarafında düzenlendi:
verici taraf
Kod:
#include <16f877a.h>
#device adc=8
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#define use_portb_lcd TRUE
#include <LCD.c>
#include <stdlib.h>
char r;
unsigned int a,b;
void main()
{
   set_tris_a(0x01);
   set_tris_c(0xff);
   setup_adc(ADC_CLOCK_INTERNAL);
 setup_adc_ports(RA0_ANALOG);
    set_adc_channel(0); 
lcd_init();
    while(1)
    {
  putc(read_adc());  
    
    }
    }
alıcı taraf
Kod:
#include <16f877a.h>
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#define use_portb_lcd TRUE
#include <LCD.c>
#include <stdlib.h>
char r;
unsigned long int adc;
unsigned int a,b;
void main()
{
lcd_init();
    while(1)
    {
    getc();
lcd_gotoxy(4,1);
   printf(lcd_putc,"adc=%u\r",getc()); 
    }
    }
bu şekilde yaparsanız adc nin ham değerini karşıda okursunuz okuyacağınız değer 255 olur çünki adc yi 8 bit çözünürlüklü okuduk.
 
teşekkür ederm yalnız verici kodunda adc kısmında hata veriyor ve düzeltemedim hatayı , hakkını helal et çok sagolasın
 
estafurullah
kodları buraya yazmadan önce denedim çalıştırdım şimdi kodları burdan alıp tekrar derledim hata vermedi çalışması lazım bide şu şekilde deneyin hala hata alıyosanız derleyicide sıkıntı var demektir.

a=read_adc();
putc(a);

 
#device adc=8 kısmında skıntı veriyor farklı bir programda hata vermiyor ,
 

Forum istatistikleri

Konular
128,179
Mesajlar
915,659
Kullanıcılar
449,943
Son üye
Ali4129

Yeni konular

Geri
Üst