PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TowiTek RFID-Reader mit ATMega32 auslesen



w00za
01.06.2011, 09:38
Hey Leute...

habe mich in den letzten Tagen durch unzählige Artikel und Foreneinträge gelesen,
aber leider ohne einen Erfolg zu erzielen.

Aber erstmal zum Problem:
Ich habe mir bei Conrad den TowiTek RFID-Reader und dazu zwei passende Transponder.
Nun habe ich vor, den Key der Transponder mit dem Board: RN-Control auszulesen und auf nem LCD anzeigen zu lassen.
Bis jetzt habe ich immer nur undefinierbare Zeichen rausbekommen.

Wäre sehr dankbar, wenn mir da jemand helfen könnte.


Zum RFID-Reader:
Datenschnittstelle: seriell TTL, 9600bps / 8N1

Jedes Byte beginnt mit einem Startbit (Low)
Es folgen 8 Datenbits
JedesByte endet mit einem Stopbit (High)

Es werden insgesamt 5 Bytes übertragen.

Daten werden alle ca. 200ms erneut gesendet.

Richard
02.06.2011, 05:33
Hey Leute...

habe mich in den letzten Tagen durch unzählige Artikel und Foreneinträge gelesen,
aber leider ohne einen Erfolg zu erzielen.

Aber erstmal zum Problem:
Ich habe mir bei Conrad den TowiTek RFID-Reader und dazu zwei passende Transponder.
Nun habe ich vor, den Key der Transponder mit dem Board: RN-Control auszulesen und auf nem LCD anzeigen zu lassen.
Bis jetzt habe ich immer nur undefinierbare Zeichen rausbekommen.

Wäre sehr dankbar, wenn mir da jemand helfen könnte.


Zum RFID-Reader:
Datenschnittstelle: seriell TTL, 9600bps / 8N1

Jedes Byte beginnt mit einem Startbit (Low)
Es folgen 8 Datenbits
JedesByte endet mit einem Stopbit (High)

Es werden insgesamt 5 Bytes übertragen.

Daten werden alle ca. 200ms erneut gesendet.

Und was willst Du jetzt wissen? Das RS 232 Protokoll ist genormt und im AVR fest verdratet. Du brauchst also nur 9600.8.N.1 einstellen und eine 5 Byte große String Variable einlesen und diese mit Print oder LCD Befehl ausgeben. Wenn kein Quarz sondern der interne Oszillator verwendet wird, kann es allerdings passieren das "Müll" gelesen wird weil das Timing Grotten schlecht ist. :-( Obwohl bei 9600 bps sollte es gerade noch klappen.

"Jedes Byte beginnt mit einem Startbit (Low)" das sieht nach PC üblicher invertierter Logik aus, Bascom kennt bei Config Seriell den Parameter (Inverted), der biegt das wieder zurecht. Oder Du empfängst einzelne Bytes und invertierst die selber ehe sie Ausgegeben werden...




input a

a= a xor 255

Print a



Gruß Richard

w00za
02.06.2011, 21:24
Danke erstmal für die Antwort.

Das Problem ist, dass das Signal etwa alle 200ms gesendet wird und ich nicht weiß, wie ich das Signal nur einmal in einer Variablen abspeichern kann.
ich müsste also irgendwie Start und Ende abfragen und alles dazwischen abspeichern.
Nur das bekomm ich nicht hin.

Wenn mir da vielleicht einer helfen könnte...

Richard
03.06.2011, 10:43
Danke erstmal für die Antwort.

Das Problem ist, dass das Signal etwa alle 200ms gesendet wird und ich nicht weiß, wie ich das Signal nur einmal in einer Variablen abspeichern kann.
ich müsste also irgendwie Start und Ende abfragen und alles dazwischen abspeichern.
Nur das bekomm ich nicht hin.

Wenn mir da vielleicht einer helfen könnte...

Du Liest das Signal in eine Variable (wert_neu) ein und Kopierst diese nach (Wert_alt). beim nächsten Einlesen prüfst Du ob Wert_neu = Wert_alt ist und wenn ja, wird Wert_neu verworfen. Wenn nein Wert_alt = Wert_neu und es geht von vorne los.
Ausgegeben wird dann immer nur Wert_alt wenn dieser sich geändert hat.

Aber ehe Du nicht lesbare Daten bekommst wird das eh nichts! Oder klappt das jetzt? Start und Ende erkennt die Schnittelle selber am Start und Stopp Bit, was bei Dir ankommt sind schon die eigentlichen Nutzdaten. Das problem ist das Format der Daten, ein PC RS232 Signal ist gegenüber einem µC Signal invertiert.

µC...........0101010101
PC...........1010101010

Damit sich die beiden verstehen muss das PC signal inverteit werden und das macht man mit einer XOR Verküpfung.

PC..........10101010
EXOR.....111111111
---------------------------
...............01010101

Wie schon erwähnt, Bascom kann das auch automatisch erledigen. Das Start/Stopp Bit auswerten braucht man NUR wenn man die Empfangsroutine komplett in Assembler selber baut. Habe ich vor 20 Jahre mal gemacht, inklusive auto Baud Erkennung. :-)

Gruß Richard

Gruß Richard

radbruch
03.06.2011, 15:08
Datenschnittstelle: seriell TTL, 9600bps / 8N1Besitzt das RN-Control nicht einen Pegelwandler für den direkten Anschluß einer RS232-Schnittstelle? Dieser Wandler ist vermutlich vor den RS232-Pins eingebaut. TTL-Signale sind direkt am Port-Stecker verfügbar (PD0 und PD1 bzw. RxD und TxD)

Richard
03.06.2011, 15:35
Besitzt das RN-Control nicht einen Pegelwandler für den direkten Anschluß einer RS232-Schnittstelle? Dieser Wandler ist vermutlich vor den RS232-Pins eingebaut. TTL-Signale sind direkt am Port-Stecker verfügbar (PD0 und PD1 bzw. RxD und TxD)

Stimmt. Aber TTL wird ja schon angeliefert allerdings (nach Beschreibung) in negativer Logik (Start Bit = L/H) µC's arbeiten mit normaler Logik (Startbit = H/L). Deshalb (meine) Xor Behandlung, einfache Inverter in TX/RX würden auch klappen. In den üblichen Max 232 Typen sind auch welche damit das Signal nicht nur Spannungsmäßig sondern auch Pegel Richtig um gesetzt wird.

Gruß Richard