Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: ibrahim96 - 17 Mart 2018, 10:48:55

Başlık: 16f628a seri haberleşme
Gönderen: ibrahim96 - 17 Mart 2018, 10:48:55
Max485 ile rs232 iletişim standartında iletişim kuran bir sistem tasarlıyorum 49 adet olan bu sistem şuan için 1 adet ile deneme yapıyorum bir veri yollandında sistem önceden ayarlanmış şekilde motoru sürüyor fakat motorun yön tur gibi bilgilerini seri haberleşme ile karta gönderemedim bunu nasıl yapabiliriz?
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: kudretuzuner - 17 Mart 2018, 10:59:37
Merhaba,
Yön ve tur eylemleri için de ayrıca değişik datalar yollamanız gerekir.
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 17 Mart 2018, 11:02:22
Data yollamasına yolluyorum araştır dım kadarı ile bir paket halinde gönderilmeli ve de no tur yon isimli 3 adet degişkenim var fakat gelen bilgileri nasıl ayırt edip bunlara aktaracagım çözemedim örnek bir kod varmı acaba ?
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: kudretuzuner - 17 Mart 2018, 11:17:34
Merhaba,
PIC ve PC arasındaki data alışverişlerini PIC tarafına  asm  PC tarafına ise VB.Net 2010 express edition ile yazmaktayım.PC tarafındaki programı da sizin mi?(siz mi yazdınız?)Bu tür projelerde hem PIC hem de PC tarafındaki yazılımları kendiniz yazarsanız ne yolladığınızı ve de ne aldığınızı bilir devrenizi ona göre dizayn edebilirsiniz.Ben size çok basit de olsa bazı çalışmalarımı arşivden bulup çıkarayım drobbox'a yükleyip linklerini vereyim fikir sahibi olacaksınız.Kolay gelsin.

Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 17 Mart 2018, 12:11:15
Sagolun inceleyecegim ben projede bilgisayar yok master bir pic olacak
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: selimkoc - 17 Mart 2018, 15:00:10
https://www.youtube.com/watch?v=Tiui1lmiJG4 (https://www.youtube.com/watch?v=Tiui1lmiJG4)
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 17 Mart 2018, 18:58:11
Alıntı yapılan: selimkoc - 17 Mart 2018, 15:00:10
https://www.youtube.com/watch?v=Tiui1lmiJG4 (https://www.youtube.com/watch?v=Tiui1lmiJG4)

ccsc ile ilgili kodlar gerekli yinede sağolun.
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: tekosis - 18 Mart 2018, 01:01:53
Sizin aradığınız bilgi string parçalama(split) işlemi. bu işi strtok komutu yapar. aşağıdaki forumda tam istediğiniz şey paylaşılmış.

https://ccsinfo.com/forum/viewtopic.php?p=184332 (https://ccsinfo.com/forum/viewtopic.php?p=184332)

ayrıca CCSC nin help kısmında bu komutun kullanımı ile ilgili örnek mevcut.


char string[30], term[3], *ptr; 
strcpy(string,"one,two,three;");
strcpy(term,",;");

ptr = strtok(string, term);
while(ptr!=0) {
   puts(ptr);
   ptr = strtok(0, term);
   }
          // Prints:
             one
             two
             three
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 19 Mart 2018, 07:53:24
Şimdi iletişimi gerçekliştiriyorum fakat değişken tipi olarak chardan int e nasıl aktarabilirim?
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: tekosis - 19 Mart 2018, 09:52:05
Anahtar arama yöntemi: https://www.google.com.tr/search?q=how+to+char+to+int+ccs+c&oq=how+to+char+to+int+ccs&aqs=chrome.1.69i57j33.17088j0j7&client=ms-android-asus&sourceid=chrome-mobile&ie=UTF-8 (https://www.google.com.tr/search?q=how+to+char+to+int+ccs+c&oq=how+to+char+to+int+ccs&aqs=chrome.1.69i57j33.17088j0j7&client=ms-android-asus&sourceid=chrome-mobile&ie=UTF-8)
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: Murat Mert - 19 Mart 2018, 12:28:26

S.A.
Haberleşmen için önce senin alma ve verme için protokol yapman lazım. Sorgu süren önemli. Yazma emri için bir dizi kod ve değerler okuma içinde dizi değerler yollaman lazım.
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 19 Mart 2018, 13:32:54
Anlıyorum fakat internet de aradım taradım ama şöyle adam akıllı bir kodlar açıklama bulamadım tüm forumlarda konular hep yarım bırakılmış konular sonlandırılmamış rda kesmeli bir kod lazım ve step motor çalştıracagım yön ve tur bilgilerini seri iletişim ile alacagım bu kadar ama bir türlü iki degişkene de aktaramadım gelen bilgileri not seri iletişim ile bir data gönder dimde slave de bu data geldinde motor 1 tur atıp durucak fonksiyonu yaptım fakat 2 data geldiginde ilk önce yön sonra tur bilgisi gelecek bunu nasıl yaparım işin içinden çıkamadım
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: tekosis - 19 Mart 2018, 14:31:33
aşağıdaki kodlar serdar çiçeğin ccs c kitabında anlattığı kodlardır.
/******************************************************
      PIC16F877 ile RS232 Seri İletişim Uygulaması
PIC PROG/DEKA     : Port B jumper'ı LCD konumunda olmalı
*******************************************************/


#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.


// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD


#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.


#define use_portb_lcd TRUE   // LCD B portuna bağlı


#include <lcd.c>   // lcd.c dosyası tanıtılıyor


#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) // RS232 protokolünün 9600 bit/sn baud hızında olacağını ve
                                                                  // TX,RX uçlarının hangi pinler olacağını tanımlıyor
                                                                  // parity bitinin olmadığını, stop bitinin 1 bit olacağı belirtiliyor


char   klavye[80];  // klavye isminde 80 üyeli bir dizi tanımlanıyor


#int_rda   // RX ucuna veri gelince meydane gelen kesme
void serihaberlesme_kesmesi ()
{
   disable_interrupts(int_rda); // int_rda kesmesini pasif yap
   gets(klavye); // String ifadeyi al ve "klavye" adlı dizi değişkenine aktar.
   printf(lcd_putc,"\f%s",klavye);  //LCD'yi temizle ve klavye string ifadesini LCD'de göster
}


/********* ANA PROGRAM FONKSİYONU********/


void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı


   output_low(pin_c5); // RC5 çıkışı ilk anda sıfırlanıyor
   lcd_init();   // LCD'yi hazırla


   printf("\r**************** Merhaba *********************"); // Yeni satır, RS232 üzerinden belirtilen metni gönder ve satır atla.
   printf("\n\rKlavyeden girdiginiz bilgiler LCD'de gorunecektir\n\n"); // Satır atla, yeni satır, RS232 üzerinden belirtilen metni gönder
   printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); // Satır atla, yeni satır,RS232 üzerinden belirtilen metni gönder


   enable_interrupts(GLOBAL);  // Aktif edilen tüm kesmelere izin ver


   while(1) // Sonsuz döngü
   {
      enable_interrupts(int_rda); // int_rda kesmesi aktif
   }
}

program sürekli while içinde dönerken rs232 den bir veri gelirse kesme oluşur ve #RDA kesmesinde gets komutu ile enter kararkteri gelene kadar klavye stringine veri yüklenir. siz de gelen bu verinin içinden istediğiniz kısmı çekebilirsiniz.
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 19 Mart 2018, 16:23:16
Bu kitap elimde var kodları denedim sorunum gelen veriyi degişkenlere bölmek char tipini int aktararak motorun tur hesapı yapılıyor birde yön hesapı için int degişkeni var ama char tipinde almaz isem işlem yapmıyor char tipinde alırsam ise iki şekildede degişkenlere aktarmıyor
Başlık: Ynt: 16f628a seri haberleşme
Gönderen: ibrahim96 - 21 Mart 2018, 07:54:39
Devreyi yapabildim putc ile gönderiyorum ve slave den de getch ile verileri alıyorum sıkıntıları çözdüm de putc ile veri geldinde getch aldım da orda takılı kalıyor getch komutu enter görene kadar mı bekliyordu açıklaya bilirmisiniz?