Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: emox - 08 Ocak 2012, 22:04:51

Başlık: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 08 Ocak 2012, 22:04:51
Arkadaşlar
pic 16f877 ve pic 18f2480  usart üzerinden nasıl haberleşir. Örneğin 16f877 den
unsigned char Speed[6] = "010D1\r" verisini göndericek ve ardından 18f2480 in cevabını alacak. Proteus üzerinden rx ve tx bacaklarını seri bağlayacağım. Arada rs 232 veya usb bağlantısı olmadan iki pic seri haberleşecek. ccs c de nasıl bir kod yazmalıyım.

Teşekkürler.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: Kabil ATICI - 09 Ocak 2012, 11:58:37
Bir bilgisayarla nasıl haberleşiyorsa o şekilde. Araya hiç bir çevirici bağlamadan tx-rx   rx-tx şeklinde bağlamanız yeterli. Yeterki hr ikisinin iletişimi için  doğru hızlarda ayarlanmış olsun...
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 09 Ocak 2012, 13:13:12
Abi bir örnek kod var mı ? Yani basit bişi ama bir türlü sorunu çözemedim. Birazda yeniyim bu konularda...
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: Kabil ATICI - 09 Ocak 2012, 13:55:23
kullandığım programlama dili asembler. ccs c ile pic 16f877 örnekleri var. Diğer işlemci için bir şey diyemem...

http://ccspic.com/ccs-c-dersleri/ccs-c-dersleri-seri-port-kullanimi.html (http://ccspic.com/ccs-c-dersleri/ccs-c-dersleri-seri-port-kullanimi.html)
ilk başta doğrudan işlemci iletişimini girmeden seri port ile tek veri gönder, en azından led veya anahtar üzerinden dene.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: fahri- - 09 Ocak 2012, 15:51:45
CCS nin örnek kodları var. help indede açıklama var.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 09 Ocak 2012, 19:42:52
Usart üzerinden bağlantı ne verdiğiniz linkte anlatılıyor. Ne de Ccs c nin yardım dosyalarında... usart bağlantısı rs232 bağlantısından çok farklı. ve önerdiğiniz şekilde sistem çalışmıyor. Eğer elinizde Isıs cizimleri ve ccs c de yazılmış usart bağlantısı kodları varsa ve paylaşırsanız birçok arkadaşa faydalı olur.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 10 Ocak 2012, 00:45:27
http://courses.cit.cornell.edu/ee476/FinalProjects/s2009/ama64_maa66/ama64_maa66/images/OBD2_uart.c (http://courses.cit.cornell.edu/ee476/FinalProjects/s2009/ama64_maa66/ama64_maa66/images/OBD2_uart.c)

Bu linkteki kodlar atmel atmega644 için yazılmış. Atmega644 ile pic 18f2480 veri alıp veriyor. Şimdi bu kodu  ccs c de pic 16f877 için düzenlemek istiyorum. Nasıl yapılabilir. İki pic nasıl haberleşir. Lütfen yardımcı olun.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 10 Ocak 2012, 14:33:23
Arkadaşlar iki pic uart üzerinden nasıl haberleşir. Hiç deneyen olmadımı?  Hep rs232 den bilgisayarla haberleştrilimiş örnekler. Ama iki pic arası karakter yollayamıyorum. Deneme yanılma bile yapamıyorum.

rx tx uçları virtual terminale bağlı. İki pic rx tx ten bağlı fakat haberleşmiyorlar. Lütfen yardımcı olun.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: mozkan87 - 10 Ocak 2012, 14:45:55
GND yide ortak bağlayın. Ben daha önce sorunsuz haberleştirdim.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: skara1214 - 10 Ocak 2012, 14:49:19
ben çok yaptım çok da güzel çalılşıyor birisinin tx i diğerinin rx i ne bağlayacksın aynı sekide rx de tx e mis gibi çalışacak yanlız burada trick nokta putc v.s gibi komutlarla tek bir char  yollarsan problem yok ama string yollarken stringin sonuna /r eklemelisin kod ccs
verici

#include <16F877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses HS,NOWDT
#use delay (clock=20000000)
#use rs232 (baud=9600,xmit=PIN_C6, rcv=PIN_C7, parity=N, stop=1)
char klavye[20]
void main ( )
{
delay_ms(1000);
    while(1)
{
printf("verici pic konusuyor\r");
gets(klavye);
delay_ms(1000);
}
}

alıcı

#include <16F877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses HS,NOWDT
#use delay (clock=20000000)
#use rs232 (baud=9600,xmit=PIN_C6, rcv=PIN_C7, parity=N, stop=1)
char klavye[80];
#int_rda   
void haberlesme_kesmesi ()
{
   disable_interrupts(int_rda); // int_rda kesmesini pasif yap
   gets(klavye); // String ifadeyi al ve "klavye" adlı dizi değişkenine aktar.
   printf("yazdiginiz metin %s\r",klavye);
   enable_interrupts(int_rda);
}
void main ( )
{
   enable_interrupts(GLOBAL);  // Aktif edilen tüm kesmelere izin ver
   enable_interrupts(int_rda);   
    while(1) ;
}
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 10 Ocak 2012, 17:14:33


Isıs te gnd nin ortak bağlı olduğu bir örnek devre şeması paylaşabilir misiniz?
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: skara1214 - 10 Ocak 2012, 19:17:31
kendi sözüne alıntı yapmışsın :D. Ama arkadasın dediği gerçek devre sen isiste simülasyon yapıyorsun gerek yok gnd yi birleştirmeye.Benim verdiğim kodların  çalışması gerekli(gerçek devrede çalışıyor,çalışmıyorsa proteustan kaynaklıdır) dene ondan sonra haber ver
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 10 Ocak 2012, 19:33:48
(http://b1201.hizliresim.com/t/b/1qgjf.jpg)

Abi vericideki butona basılarak sayi değişkeni 1 artıyor. Ve anında alıcıya gidiyor. Alıcı gerekli işlemi yapıp sayıyı digit te gösteriyor.

Bu sayıyı bir türlü vericiden alıcıya gönderemedim. Senin koduda kullandım ama sanırım giden veriyi terminalde göstermiyor. Ve klavye girişi var senin kodda fakat terminalden giriş yapamıyorum.

Bu projenin ileriki aşamasında vericiden ,alıcıya bilgi gidebilmeli bu sayede alıcı tetiklenecek ve bilgileri tekrar vericiye aktaracak abi.  Yukarıda verdiğim linkte atmega için yapılmış bir kodlama var. Aynı kodu pic için yazmak istiyorum nasıl yapabilirim bilmiyorum.
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: skara1214 - 10 Ocak 2012, 20:23:00
isis simülsayonunda denedim ve çalıştı.test edersen lambanın 1 sn de bir yanıp söndüğünü göreceksin buda iletişimin doğru olduğunu gösterir
Verici
#include <16F877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses HS,NOWDT
#use delay (clock=20000000)
#use rs232 (baud=9600,xmit=PIN_C6, rcv=PIN_C7, parity=N, stop=1)
void main ( )
{
delay_ms(1000);
    while(1)
{
printf("ve\r");
delay_ms(1000);
}
}

Alıcı
#include <16F877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses HS,NOWDT
#use delay (clock=20000000)
#use rs232 (baud=9600,xmit=PIN_C6, rcv=PIN_C7, parity=N, stop=1)
char kk[20];
void main ( )
{
    while(1)
{
gets(kk);
if(kk[0]=='v'&&kk[1]=='e')
output_toggle(pin_a0);
}
}

(http://a1201.hizliresim.com/t/b/1qj2g.jpg)
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: emox - 10 Ocak 2012, 22:40:00
Abi isis dosyasını gönderebilir misin? Aynı kodlar aynı devre çalışmıyor bende... Kafayı yicem ya...
Başlık: Ynt: usart üzerinden pic 16f877 ve pic 18f2480 haberleşmesi
Gönderen: skara1214 - 11 Ocak 2012, 10:12:53
ilk olarak piclerin 2 sininde 16f877a olmasına dikkat et 2. olarak hexlerin nasıl yüklendiğini bildiğini var sayıyorum ama o ekranda kristal ayarıda var onuda 20 Mhz yapacaksın ondan kaynaklı olabilir...