<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jems</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jems"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Jems"/>
	<updated>2026-04-10T23:21:32Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:Jems&amp;diff=63623</id>
		<title>Benutzer Diskussion:Jems</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:Jems&amp;diff=63623"/>
		<updated>2012-01-30T09:00:57Z</updated>

		<summary type="html">&lt;p&gt;Jems: Drigend :RFID-Tag mit Atmega644 auslesen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guten Tag zuerst,&lt;br /&gt;
ich bin neu in diesem Forum und ich hoffe, dass jemand mir helfen könnte.&lt;br /&gt;
Ich soll mit dem Atmega644 RFID-Tag auslesen.Ich habe schon die Funktion geschrieben die den ManchesterCode dekodieren soll und die, die die Paritäten überprüfen und gegebenfalls die Daten extrahieren soll. Aber seit Freitag passiert einfach nichts.Ich kann sogar den Header( 9 einsen) nicht erkennen.&lt;br /&gt;
Ich bin ein bisschen verwirrt und frage mich sogar, ob dies überhaupt deterministisch ist.&lt;br /&gt;
Ich habe nämlich am Mittwoch meinen Versuch an der UNI und falls ich überhaupt nichts auslesen kann, falle ich bestimmt durch.&lt;br /&gt;
&lt;br /&gt;
Im folgenden finden Sie meinen Code.&lt;br /&gt;
Beachte : ich bin kein Expert in Sachen Microcontroller.&lt;br /&gt;
         Das Grundgerüst haben wir vom Lehrstuhl bekommen , wir sollten nur die Funktionen decodeManchester() und getData() udn receive().&lt;br /&gt;
Danke im Voraus für die Hilfe.&lt;br /&gt;
&lt;br /&gt;
//-------------------------Code beginnt hier---------------------------&lt;br /&gt;
#include &amp;quot;os_rfid.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;defines.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;util.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;quot;os_memory.h&amp;quot;&lt;br /&gt;
#include &amp;quot;os_core.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;quot;os_scheduler.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//! if set to 1 a received Tag will be written as HEX-String to the LCD&lt;br /&gt;
#define DISPLAY_RFID_TAG_AFTER_RECEIVE  1&lt;br /&gt;
&lt;br /&gt;
 //----------------------------------------------------------------------------&lt;br /&gt;
// RFID Constants&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
//! Frequency of the RFID tag in Hz&lt;br /&gt;
#define F_RFID_OSC 125000&lt;br /&gt;
//! Ratio of RFID Tag Frequency to RFID data rate&lt;br /&gt;
#define  RFID_SCALER 64&lt;br /&gt;
//! Prescaler used for the timer&lt;br /&gt;
#define  TIMER_SCALER 256&lt;br /&gt;
//! Number of timer ticks for a long edge&lt;br /&gt;
#define TICKSRATIO  ( ( F_CPU * RFID_SCALER ) / ( F_RFID_OSC * TIMER_SCALER ) )&lt;br /&gt;
&lt;br /&gt;
//! Noise threshold for the RFID Reader&lt;br /&gt;
#define NOISE_THRESHOLD (TICKSRATIO / 4)  /* Minimum noise threshold*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//! Length of Bit Record Buffer&lt;br /&gt;
#define RECORD_NUM (3*64)  /* Number of records*/&lt;br /&gt;
//! Pin MOD&lt;br /&gt;
#define MOD PD5&lt;br /&gt;
//! Pin DEMOD_OUT&lt;br /&gt;
#define DEMOD_OUT PD6&lt;br /&gt;
//! Pin SHD&lt;br /&gt;
#define SHD PD7&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
// Globals&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
  uint16_t time;&lt;br /&gt;
  uint16_t ovfCount;&lt;br /&gt;
} Edge;&lt;br /&gt;
&lt;br /&gt;
typedef uint64_t RFID_Tag;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
  RFID_Tag volatile tagBuffer;&lt;br /&gt;
  uint64_t lastReceivedTag;&lt;br /&gt;
  Edge volatile edge[2];&lt;br /&gt;
  MemAddr signalTimes;&lt;br /&gt;
  uint8_t signalStartEdge : 1;&lt;br /&gt;
  uint8_t lastManchesterSkipped : 1;&lt;br /&gt;
  uint8_t head;&lt;br /&gt;
  uint8_t tail;&lt;br /&gt;
} RFID;&lt;br /&gt;
&lt;br /&gt;
RFID rfid;&lt;br /&gt;
&lt;br /&gt;
// shows how many items are in the  buffer&lt;br /&gt;
uint8_t pufferFuellstand = 0;&lt;br /&gt;
&lt;br /&gt;
// debug.................&lt;br /&gt;
volatile uint64_t anzahl = 0;&lt;br /&gt;
volatile uint8_t tempisBit;&lt;br /&gt;
volatile uint8_t head;&lt;br /&gt;
volatile uint8_t tail;&lt;br /&gt;
volatile uint16_t temprec;&lt;br /&gt;
volatile uint8_t templevel;&lt;br /&gt;
volatile uint64_t tempBuffer0;&lt;br /&gt;
volatile uint64_t tempFuellstand;&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
// ISR&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * This ISR counts the Timer 1 Overflows to enable exact Measurements of Signal Level Lengths&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
ISR (TIMER1_OVF_vect) {&lt;br /&gt;
  rfid.edge[0].ovfCount++;&lt;br /&gt;
  rfid.edge[1].ovfCount++;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * This ISR Analyzes the Signals from the RFID reader board&lt;br /&gt;
 * and saves the Signal levels together with their durations&lt;br /&gt;
 * in the global RFID_recTime and RFID_recLevel arrays&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER1_CAPT_vect) {&lt;br /&gt;
  static uint16_t sp;&lt;br /&gt;
  sp = SP;&lt;br /&gt;
  SP = BOTTOM_OF_ISR_STACK;&lt;br /&gt;
  unsigned char counts;&lt;br /&gt;
&lt;br /&gt;
  uint8_t const e = (PIND &amp;gt;&amp;gt; PD6) &amp;amp; 1;&lt;br /&gt;
  rfid.edge[e].time = ICR1;&lt;br /&gt;
  counts = rfid.edge[e].time - rfid.edge[!e].time + rfid.edge[!e].ovfCount*(1ul&amp;lt;&amp;lt;16);&lt;br /&gt;
  rfid.edge[e].ovfCount = 0;&lt;br /&gt;
&lt;br /&gt;
  if (counts &amp;gt; NOISE_THRESHOLD) {&lt;br /&gt;
    intSRAM-&amp;gt;write(rfid.signalTimes + rfid.head, counts);&lt;br /&gt;
&lt;br /&gt;
    if (!rfid.head){&lt;br /&gt;
      rfid.signalStartEdge = e;&lt;br /&gt;
    }&lt;br /&gt;
    rfid.head = (rfid.head + 1) % RECORD_NUM;&lt;br /&gt;
	//.....................&lt;br /&gt;
	anzahl++;&lt;br /&gt;
	head = rfid.head;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B = (TCCR1B &amp;amp; ~(1&amp;lt;&amp;lt;ICES1)) | ((!e) &amp;lt;&amp;lt; ICES1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  SP = sp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
// Function definitions&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * This function initializes the RFID Driver.&lt;br /&gt;
 * The ports are set, then the RFID Chip on the reader board is initialized&lt;br /&gt;
 * by a sequence of signals. In the end, Timer 1 is set.&lt;br /&gt;
 * Afterwards, the global variables are set to their initialization values&lt;br /&gt;
 * This also initializes our Memory als NULL pointers.&lt;br /&gt;
 */&lt;br /&gt;
void rfid_init() {&lt;br /&gt;
  memset(&amp;amp;rfid,0,sizeof(RFID));&lt;br /&gt;
 // rfid.signalTimes = os_malloc(intSRAM, RECORD_NUM);&lt;br /&gt;
  rfid.signalTimes = os_malloc(intHeap, RECORD_NUM);&lt;br /&gt;
  //Ports&lt;br /&gt;
  PORTD = 0xA0;               // PD7=SHD,PD6=DEMOD-OUT,PD5=MOD&lt;br /&gt;
  DDRD = 0xFF;&lt;br /&gt;
  DDRD |= (1&amp;lt;&amp;lt;SHD)|(1&amp;lt;&amp;lt;MOD);&lt;br /&gt;
  DDRD &amp;amp;= ~(1&amp;lt;&amp;lt;DEMOD_OUT);&lt;br /&gt;
  PORTD |= (1&amp;lt;&amp;lt;DEMOD_OUT);        // Pull up (input)&lt;br /&gt;
&lt;br /&gt;
  // Boot up the RFID reader chip&lt;br /&gt;
  PORTD |= (1&amp;lt;&amp;lt;SHD);               // EM4095 shot down&lt;br /&gt;
  PORTD |= (1&amp;lt;&amp;lt;MOD);                  // EM4095 max outut&lt;br /&gt;
  delayMs(500);                  // delay 500ms&lt;br /&gt;
&lt;br /&gt;
  PORTD &amp;amp;= ~(1&amp;lt;&amp;lt;SHD);            // EM4095 ready&lt;br /&gt;
  PORTD &amp;amp;= ~(1&amp;lt;&amp;lt;MOD);                // EM4095 min output&lt;br /&gt;
  delayMs(500);                 // delay 500ms&lt;br /&gt;
&lt;br /&gt;
  //Timer&lt;br /&gt;
  //enable overflow and input capture interrupts&lt;br /&gt;
  TIMSK1 = 0x21;&lt;br /&gt;
&lt;br /&gt;
  //Noise canceller, 256 prescaler, rising edge&lt;br /&gt;
  TCCR1B = 0x84;&lt;br /&gt;
  &lt;br /&gt;
  // zum Start, keine Flanke akzeptiert.&lt;br /&gt;
  rfid.lastManchesterSkipped = 0;&lt;br /&gt;
  rfid.head = rfid.tail = 0;&lt;br /&gt;
&lt;br /&gt;
  lcd_writeProgString(PSTR(&amp;quot;RFID go! &amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
typedef uint8_t ManchesterDecode;&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * This function decodes the manchester code that is used to transmit&lt;br /&gt;
 * Databytes from the RFID tag to our RFID reader.&lt;br /&gt;
 * To do so, it analyzes signal level times and edges in the signal sent by the tag.&lt;br /&gt;
 * \param level state of the edge under analysys (rising or falling)&lt;br /&gt;
 * \param last_rec The duration of the previous edge&lt;br /&gt;
 * \param now_rec The duration of the current edge&lt;br /&gt;
 * \returns 1 if we found a &#039;1&#039; bit, 0 if we found a &#039;0&#039; bit and a value &amp;gt; 1 if we could not idedentify a valid bit.&lt;br /&gt;
 */&lt;br /&gt;
// selber geschrieben......&lt;br /&gt;
ManchesterDecode rfid_decodeManchester(uint8_t level, uint16_t last_rec, uint16_t now_rec) {&lt;br /&gt;
  &lt;br /&gt;
  if( now_rec &amp;gt; ((TICKSRATIO * 3)/4)){&lt;br /&gt;
    // lange Flanken.  &lt;br /&gt;
	if( level ){&lt;br /&gt;
	  return (ManchesterDecode)0;&lt;br /&gt;
	}else{&lt;br /&gt;
	  return (ManchesterDecode)1;&lt;br /&gt;
	}&lt;br /&gt;
  }else{&lt;br /&gt;
    // aktuelle Flanke ist kurze Flanke.&lt;br /&gt;
    if( last_rec &amp;gt; ((TICKSRATIO * 3)/4)){ //vorherige Flanke ist lang.&lt;br /&gt;
	  // aktuelle Flane ist eine Fuellflanke&lt;br /&gt;
	  rfid.lastManchesterSkipped = 0;&lt;br /&gt;
	  return 0xFF;   &lt;br /&gt;
	}else{&lt;br /&gt;
	  // vorherige Flanke ist eine kurze Flanke&lt;br /&gt;
	  if( rfid.lastManchesterSkipped){&lt;br /&gt;
	     // vorherige Flanke wurde verarbeitet.Verwerfe die aktuelle Flanke&lt;br /&gt;
		 rfid.lastManchesterSkipped = 0;&lt;br /&gt;
		 return 0xFF;&lt;br /&gt;
	  }else{&lt;br /&gt;
	    rfid.lastManchesterSkipped = 1;&lt;br /&gt;
		if( level){&lt;br /&gt;
		  return (ManchesterDecode)0;&lt;br /&gt;
		}else{&lt;br /&gt;
		  return (ManchesterDecode)1;&lt;br /&gt;
		}&lt;br /&gt;
	  }&lt;br /&gt;
	}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// selber geschrieben&lt;br /&gt;
bool pruefePaketParitaet(uint8_t paket){&lt;br /&gt;
  &lt;br /&gt;
  uint8_t paketParitaet = paket &amp;amp; 0b1;&lt;br /&gt;
  paket = paket &amp;gt;&amp;gt;1;&lt;br /&gt;
  uint8_t ergParitaet = 0;&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
  for( i = 0; i &amp;lt; 4; i++){&lt;br /&gt;
    ergParitaet ^= (paket &amp;amp; 0b1);&lt;br /&gt;
	paket = paket&amp;gt;&amp;gt;1;&lt;br /&gt;
  } &lt;br /&gt;
  if( ergParitaet != paketParitaet){&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// selber geschrieben............&lt;br /&gt;
bool checkHeader(){&lt;br /&gt;
  if( pufferFuellstand == (uint8_t)0){&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  if( pufferFuellstand &amp;lt;= 9 ){&lt;br /&gt;
    if( (rfid.tagBuffer &amp;gt;&amp;gt; (64 - pufferFuellstand)) &amp;amp; 0b1 ){&lt;br /&gt;
      return true;&lt;br /&gt;
    }else{&lt;br /&gt;
	  return false;&lt;br /&gt;
	}&lt;br /&gt;
  }&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * If a header was previously found, this function does the data packet&lt;br /&gt;
 * and column parity checks. If the checks were successful, the Tag data&lt;br /&gt;
 * is returned after cleaning up.&lt;br /&gt;
 * \returns 0 if the parity checks failed, and the Tag data if they succeeded.&lt;br /&gt;
 */&lt;br /&gt;
//selber geschrieben.........&lt;br /&gt;
uint64_t rfid_getData() {&lt;br /&gt;
&lt;br /&gt;
  // pruefe das Stopbit.&lt;br /&gt;
  if( (rfid.tagBuffer &amp;amp; 0b1)  != 0){&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
&lt;br /&gt;
  // prüft die Paritäten der Datenpakete&lt;br /&gt;
   uint8_t paket;&lt;br /&gt;
   // eliminiert die Spaltenparitaeten und das Stopbit.&lt;br /&gt;
   uint64_t tempBuffer = rfid.tagBuffer &amp;gt;&amp;gt; 5;&lt;br /&gt;
&lt;br /&gt;
   for( i = 0; i&amp;lt; 10; i++){&lt;br /&gt;
     paket = (uint8_t)(tempBuffer &amp;amp; (uint64_t)0b11111);&lt;br /&gt;
     if( !(pruefePaketParitaet(paket))){&lt;br /&gt;
	   return 0; // paketparitaet stimmt nicht.&lt;br /&gt;
	 }&lt;br /&gt;
	 tempBuffer = tempBuffer&amp;gt;&amp;gt; 5;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //prüft die Spaltenparitäten.&lt;br /&gt;
   uint8_t ergParitaet = 0;&lt;br /&gt;
   uint8_t spaltenParitaet = (rfid.tagBuffer &amp;gt;&amp;gt; 1) &amp;amp; 0b1111;&lt;br /&gt;
&lt;br /&gt;
   tempBuffer = rfid.tagBuffer;&lt;br /&gt;
   uint64_t tagID= 0;&lt;br /&gt;
&lt;br /&gt;
   for( i =0; i &amp;lt; 10; i++){&lt;br /&gt;
      paket = (tempBuffer&amp;gt;&amp;gt;(50 - (5 * i))) &amp;amp; 0b11111; // ermittle ein Datenpaket;&lt;br /&gt;
	  paket = paket&amp;gt;&amp;gt;1;                               // elimiert die Paketparitaet.&lt;br /&gt;
	  ergParitaet^= paket;  &lt;br /&gt;
	 tagID |= ((uint64_t)paket &amp;lt;&amp;lt; (36 - ( 4 * i)));  &lt;br /&gt;
   }&lt;br /&gt;
   if( ergParitaet != spaltenParitaet ){&lt;br /&gt;
     return 0;&lt;br /&gt;
   }&lt;br /&gt;
   return tagID;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//ID am LCD anzeigen&lt;br /&gt;
&lt;br /&gt;
// selber geschrieben.............&lt;br /&gt;
void showID(uint64_t tagID){&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
  lcd_writeProgString(&amp;quot;Tag-ID: &amp;quot;);&lt;br /&gt;
  lcd_line2();&lt;br /&gt;
  uint8_t  output;&lt;br /&gt;
  for( i = 0 ; i&amp;lt; 10; i++){&lt;br /&gt;
	output = (tagID &amp;gt;&amp;gt; ( 36 - ( 4 * i))) &amp;amp; 0b1111;&lt;br /&gt;
	lcd_writeHex(output);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*!&lt;br /&gt;
 * This function performs the whole process of receiving a RFID Tags Data.&lt;br /&gt;
 * The function only terminates when a complete ID was received.&lt;br /&gt;
 * \returns The actually received Tag ID.&lt;br /&gt;
 */&lt;br /&gt;
// selber geschrieben.............&lt;br /&gt;
uint64_t rfid_receive(void) {&lt;br /&gt;
  os_enterCriticalSection();&lt;br /&gt;
&lt;br /&gt;
   ManchesterDecode isBit;&lt;br /&gt;
   uint8_t level;&lt;br /&gt;
   uint16_t last_rec,now_rec;&lt;br /&gt;
   uint64_t tagId = 0; &lt;br /&gt;
   bool status;&lt;br /&gt;
   &lt;br /&gt;
   while(true){&lt;br /&gt;
	 if( tagId){&lt;br /&gt;
	   status = false;&lt;br /&gt;
       rfid.lastReceivedTag = tagId;&lt;br /&gt;
	   break;&lt;br /&gt;
	 }&lt;br /&gt;
	 status = true;&lt;br /&gt;
	 // TagBuffer initialisieren.&lt;br /&gt;
	 rfid.tagBuffer = 0;&lt;br /&gt;
	 pufferFuellstand = 0;&lt;br /&gt;
     while( status ){ &lt;br /&gt;
       if( rfid.head != rfid.tail){&lt;br /&gt;
       &lt;br /&gt;
	   //................................&lt;br /&gt;
	  //head = rfid.head;&lt;br /&gt;
&lt;br /&gt;
	   now_rec = intSRAM-&amp;gt;read(rfid.signalTimes + rfid.tail);&lt;br /&gt;
	   //................................&lt;br /&gt;
	   temprec = now_rec;&lt;br /&gt;
&lt;br /&gt;
	   if( !rfid.tail){&lt;br /&gt;
	     last_rec = intSRAM-&amp;gt;read(rfid.signalTimes + RECORD_NUM - 1);&lt;br /&gt;
	   }else{&lt;br /&gt;
	     last_rec = intSRAM-&amp;gt;read(rfid.signalTimes + rfid.tail-1);&lt;br /&gt;
	   }&lt;br /&gt;
	   // bestimme ob steigende oder fallende Flanke.&lt;br /&gt;
	   if(!(rfid.tail % 2) ){&lt;br /&gt;
	     level = rfid.signalStartEdge;&lt;br /&gt;
	   }else{&lt;br /&gt;
	     level = 1 - rfid.signalStartEdge;&lt;br /&gt;
	   } &lt;br /&gt;
	   //.......................................&lt;br /&gt;
	&lt;br /&gt;
	   templevel = level;&lt;br /&gt;
 &lt;br /&gt;
   	   rfid.tail = (rfid.tail + 1) % RECORD_NUM;&lt;br /&gt;
&lt;br /&gt;
	   //..........................................&lt;br /&gt;
	   tail = rfid.tail;&lt;br /&gt;
&lt;br /&gt;
	   isBit = rfid_decodeManchester(level,last_rec,now_rec);&lt;br /&gt;
&lt;br /&gt;
       //........................................&lt;br /&gt;
	   tempisBit = isBit;&lt;br /&gt;
&lt;br /&gt;
       if( isBit == (uint8_t)0){&lt;br /&gt;
         rfid.tagBuffer &amp;amp;= ~((uint64_t)1&amp;lt;&amp;lt; (63 - pufferFuellstand));&lt;br /&gt;
	     pufferFuellstand++;&lt;br /&gt;
	   }&lt;br /&gt;
	   if( isBit == (uint8_t)1){&lt;br /&gt;
	     //rfid.tagBuffer |= ((uint64_t)1 &amp;lt;&amp;lt; pufferFuellstand);&lt;br /&gt;
		 rfid.tagBuffer |= ((uint64_t)1 &amp;lt;&amp;lt; (63 - pufferFuellstand));&lt;br /&gt;
	     pufferFuellstand++;&lt;br /&gt;
	   }&lt;br /&gt;
&lt;br /&gt;
	   // pruefe den Header.&lt;br /&gt;
       if( !(checkHeader())){&lt;br /&gt;
	     status = false;&lt;br /&gt;
	   }&lt;br /&gt;
&lt;br /&gt;
	   //..................................&lt;br /&gt;
	  tempFuellstand = pufferFuellstand;&lt;br /&gt;
	  tempBuffer0 = rfid.tagBuffer;&lt;br /&gt;
      &lt;br /&gt;
	  if( pufferFuellstand == (uint8_t)64 ){&lt;br /&gt;
	     tagId = rfid_getData();&lt;br /&gt;
	     status = false;&lt;br /&gt;
	  }&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if( DISPLAY_RFID_TAG_AFTER_RECEIVE ){&lt;br /&gt;
       lcd_clear();&lt;br /&gt;
       showID(rfid.lastReceivedTag);&lt;br /&gt;
   }&lt;br /&gt;
  os_leaveCriticalSection();&lt;br /&gt;
  return rfid.lastReceivedTag;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//... Code endet hier........................................&lt;/div&gt;</summary>
		<author><name>Jems</name></author>
	</entry>
</feed>