RFID okuyucu

Başlatan Erhan YILMAZ, 21 Şubat 2009, 22:04:09

teknikelektronikci

Alıntı yapılan: Mucit23 - 19 Kasım 2012, 14:46:04
belki interrupt çıkışıdır. Herhangi bir kart okunduğunda kesme oluşmasını sağlar. Bu sayede sürekli veri geldimi diye işlemci meşgul olmaz..

aynen bende öyle düsünüyorum ;)
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

xoom

int1 read_4102(int8* data)
{
   int8 i;

   RF_get(sizeof(RFbuffer)*8, TRUE);    // Fill the buffer with data

   for(i=0; i<2; ++i)
   {
      while(!END_OF_RFBUFFER)
      {
         if(header_search_4102())       // Try to find 9 consecutive 1s
         {
            if(decode_data_4102(data))  // Try to decode the data after the header
            {
               RFbuffer_fill(0xAA);     // Prevents false detection
               
               #ifdef UNIVERSAL_FORMAT
                  i=data[1];
                  data[1]=data[3];
                  data[3]=i;
                  i=data[0];
                  data[0]=data[4];
                  data[4]=i;
               #endif
               
               return TRUE;             // Return sucessful read
            }
         }
      }
      RFbuffer_invert();                // Invert the buffer because the
   }                                    // Manchester encoded data could have
                                        // been read starting at the wrong edge

   RFbuffer_fill(0xAA);                 // Prevents false detection
   return FALSE;                        // Return error
}


Maalesef halen çalışmadı.. pes etmek üzereyim..ne yaptıysam sonuç değişmiyor modül bozuk diyeceğim ama çok ihtimal vermiyorum..ama yarın datasheette yazan referans noktalarındaki gerilim değerlerini ölçeceğim.. yukarida yazdıgım fonksiyon TRUE olarak dönmediği için kart ID'sini alamadım..
Daha sonra DEMOD_OUT bacağında ölçtüğüm 2.4v Dijital olarak "1" kabul edebileceğimi düşünerek..
if(DEMOD_OUT==1) {output_high(pin_a0)} // sonuç olumsuz..

yani bu adamların em4095 ve em4102 için vermiş oldukları CCS C nin kendi içindeki sürücülerini kullanarak sonuç elde edemedim..
if(read_4102(code){output_high(pin_a0)}

CCS C sürücüsüne göre yukaridaki kodla kart yaklaşırsa TRUE olarak dön ve gelirken Kart ID'sını code adlı değişkene at..
gel gelelim bende ne taklalar attım ama olmadı olmadı.. 16f88 ile denedim olmadı 18f452 olmadı.. 16f877 olmadı..4mhz 16mhz. denemeleri sonuç vermedi.. şimdi CCS kodları hatalı dicem ama ortada adam gibi bi kod yazmadık ki.. hepi topu if(read_4102(code){// Ivır Zıvır..} .. Kafayı yemek üzereyim..