avatar_xoom

Radyo Frekansı ile Tanımlama

Başlatan xoom, 06 Kasım 2012, 16:54:57

xoom

 Forumda Madem CCS C ile ilgili bölüm açıldı umarım bu diğer forumlarda bulamadıgım desteği bu forumda CCS C ile ilgilenenler yardımcı olursa sevinirim.. Aşağıdaki kodla MikroElektronika'nın 125Khz'lik rfid okuyucusuna bir türlü kartı okutma işlemi gerçekleştiremedim.. kodu bir inceleyebilirmisiniz?
#include "main.h"
#include <string.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#define use_portb_lcd TRUE   
#include <lcd.c>
#include <em4095_read.c>
#include <em4102.c>
#define kirmizi PIN_a0

//***********************************************// 
int32 tagNum;
int8  customerCode;
int8 code[5];
//***********************************************//
void main ( )
{
   setup_adc_ports(NO_ANALOGS);
   setup_psp(PSP_DISABLED);        // PSP birimi devre dişi
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dişi
   setup_timer_1(T1_DISABLED);     // T1 Zamanlayicisi devre dişi
   setup_timer_2(T2_DISABLED,0,1); // T2 Zamanlayicisi devre dişi
   setup_adc_ports(NO_ANALOGS);    // ANALOG Giris yok
   setup_adc(ADC_OFF);             // ADC birimi devre dişi
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dişi
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dişi
   
//***********************************************//

   set_tris_b(0x00);        // B portu komple çıkış
   set_tris_a(0x00);        // B portu çıkış
   set_tris_c(0b00000100);  //  BURAYı ekledim   PIN c2 input yapıldı
   output_a(0x00);          // a portu sıfı
   output_a(0x00);          // a portu sıfı
   
//***********************************************//   
   rf_init();              // Rfid hazir.
   rf_powerUp();           // Power up the antenna
   lcd_init();             // LCD hazır
   
//***********************************************//   

   printf(lcd_putc,"\f Okuma yapılıyor"); // LCD'ye veri gönderiliyor.
   delay_ms(100);
   
   while(1) // Sonsuz Döngü
   {
      output_high(kirmizi);

      if(read_4102(code))  //kart antene yapklaştırılırsa
      {
         output_high(kirmizi);
         delay_ms(50);
         output_low(kirmizi);
         delay_ms(50);
         output_high(kirmizi);
         delay_ms(50);
         output_low(kirmizi);
                 
         tagNum = make32(code[1],code[2],code[3],code[4]);
         customerCode = code[0];
         printf(lcd_putc,"Tag Number: %lu", tagNum); 
         delay_ms(1000);
      }
   }
}


Ek'te em4095.c ve em4102.c dosyalarını ekledim..

Erata

#1
asagidaki pin tanımlamalarını programın başına  ekleyip deneyebilirmisin

#define RF_RDY_CLK   PIN_C5         // External interrupt used to read clock
#define RF_SHD           PIN_C4         // High disables the antenna signal
#define RF_MOD          PIN_C3         // High does 100% modulation
#define RF_DEMOD_OUT PIN_C2      // Data read in interrupt service routine


birde A serisi pic kullaniyosan  (877A) gibi 

main fonksiyonu icine

cmcon=7;


ekleyip deneyebilirsin


gene olmassa   pinleri C portundan başka bir porta alıp deneyebilirsin


xoom

Programın başında yapılan pin tanımlamalarını Program içerisinde Kullanmadığımız için programa dahil etmek gerekmediğini düşünerek kullanmadım.. ama birde ekleyip derledim yarın deneyeceğim..incelediğime göre programın çalışması gerekiyor fakat mantığıma yatmayan if(read_4102(code)) bu fonsiyona bir türlü girmiyor modül..

Erata

pc de asagıdaki klasorde ccs nin kendi örnegide var ama pek farklı bişey göremedim senin programda çalışması lazım


c:\program files\picc\examples\ex_rfid.c
c:\program files\picc\drivers\em4095.c
c:\program files\picc\drivers\em4102.c

xoom

Evet o örneğe göre yazılmış bir program fakat bi hata yapıyorum daha doğrusu eksik ama neresi çıkamadım işin içinden..

Powered by EzPortal