www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Elektor RFID-Lesegeräte Assembler in C konvertieren


Autor: Makke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei mir den RFID-Leser aus der Elektor Oktober 05
Ausgabe nachzubauen. Allerdings stellt sich mir noch das große Problem,
die Software nachzubauen. Denn die freie kostenlose Software zum
Download wurde in Assembler programmiert, das ich leider nicht
beherrsche, da ich in C groß geworden bin:-)
Gibt es zufällig jemanden, der diesen Code schon in C übersetzt hat
oder kann mir sonst irgendwelche Tipps geben? Oder gibt es Tools, die
Assembler Code in C-Code übersetzen?
Danke schon mal für eure Tipps!

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Makke,
also Du kannst den Assembler Code einfach mit entsprechenden
Präprozessor Anweisungen (hängt vom Compiler ab) direkt in ein .c File
reinschreiben und es compilieren lassen.

//Pseudocode
main()
{
 #inlineassembler start statement
 --- Hier Assemblercode einfügen ---
 #inlineassembler end statement // so der Compiler das braucht
}

Der C-Compiler macht ja nichts anderes als aus dem C-Code Assembler
Code zu generieren, der im letzten Schritt in den OP-Code des
jeweiligen Zielprozessors umgewandelt wird.
Es macht keinen Sinn Assembler in C zu konvertieren, weil jede Form der
Schleife(while, for) in jmps=goto umgebaut werden, von den branches mal
ganz abgesehen, ist es nun ein geschachteltes if-statement oder doch
switch ???
Assembler ist nicht schwer zu lernen und Du kannst einen µC viel besser
ausnutzen, weil viel Overhead wegfällt ;)
Also trau Dich einfach mal im Netz nachzulesen.
Hoffe geholfen zu haben,
Markus

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Wollte mir die Schaltung auch nachbauen nur bin ich mir nicht so sicher 
ob  die RFID´s vom Reichelt mit EM-4102 kompatiblem Transponderchip
(http://www.reichelt.de/?SID=279Ei9MqwQARsAAEkkC3w5...)
damit gelesen werden können !

hat da jemand Erfahrungen damit ?

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@condor: Nein, können sie nicht! Der letzte Reader von Elektor ist für 
Transponder mit 13,56MHz ausgelegt, Dein Typ von Reichelt arbeitet auf 
125kHz.

Elektor hatte vor einiger Zeit schon mal einen RFID-Leser der auf 
125/134kHz läuft, da kannst Du immerhin schon mal die Hardware 
verwenden. Allerdings war die mitgelieferte Software - soweit ich in 
Erinnerung habe - für TIRIS-Transponder ausgelegt. Diese benutzen ein 
anderes Protokoll als der EM4102. Aber wie gesagt, die Hardware könntest 
Du verwenden, mußt Dir nur eine neue SW schreiben...

Markus_8051

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Gibt es irgend wo eine gute deutsche Beschreibung des EM4102 Protokolls 
?

wenn ich wirklich eine neue software schreiben muß sollte ich erst mal 
verstehen wie die Datenübertragung von satten geht...

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@condor: Ich glaube kaum, das irgendjemand sich die Mühe macht, die 
Datenblätter ins Deutsche zu übersetzen. Da mußt Du Dich wohl durch das 
englische Original durchbeißen.

Im Groben läuft das so ab:
Der EM4102 fängt sofort, wenn er in ein Feld mit ca. 125kHz kommt, an zu 
senden. Um ein Bit zu senden, benutzt er 64 Taktzyklen des 
125kHz-Feldes. D.h. die eigentliche Datenrate liegt nachher bei 1,9 
kbaud. Die Daten sind manchester-codiert (google !!!). Er sendet, 
solange er im Feld ist, immer das gleiche Datentelegramm in einer 
Endlosschleife. Die Startmarkierung besteht aus 9 gleichen bits in 
Folge. Anschließend folgt die ID des Transponders, aufgeteilt in 10 
Blöcke a 4 bit plus ein Prüfbit (Zeilenprüfbit). Danach folgen 4 
Spaltenprüfbits sowie ein Stopbit. Macht zusammen 64 bit bevor er wieder 
von vorne anfängt.

Wenn noch Fragen auftauchen, darfst Du diese gerne hier stellen.

Markus_8051

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe mich mal über den Manchester-Code schlau gemacht
und auch mal die elektor Hardware von 10/2005 nachgebaut.
die software vom elektor habe ich mal angepaßt damit das oszi Signal 
125Khz beträt. aber wie es zu erwarten war wird nicht dekodiert...

en paar Sachen sind mir aber noch unklar .
1. woher weiß ich das mein Reichelt Transponder den Manchester-Code mit 
64bit verwendet und nicht was anderes ? laut Datenblatt EM4102 gibt es 
ja 5 verschiedene möglichweiten der Codierung.
2. wenn es eine 64 bit Version ist wird dann eine 1 64mal Wiederholt 
oder wie ? und dann kommt das 2bit ?
3. der Ausgangsschwingkreis wird durch Belastung moduliert oder ? das 
heißt das der 100 Ohm widerstand (R1) die Höhe des Spannungsabfalls 
festlegt ?


ich kann bei Messungen mit dem oszi zwischen den Pins PB0 und PB1 keinen 
Unterschiet sehen ob der transponder drauf liegt oder nicht.

Condor

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Condor:
zu 1) hmm, hast recht, da ist im Katalog nichts angegeben. Ich kann Dir 
aber sagen, daß 64 Zyklen und Manchester-Codierung das übliche ist. 32 
Zyklen habe ich auch schon in der Hand gehabt und meine SW entsprechend 
erweitert. Andere Codierungen (biphase und PSK) jedoch noch nicht. 
Vielleicht hat je jemand hier schon Reichelt-Transponder eingesetzt und 
kann dazu was sagen...

zu 2) nee, das Bit wird nur einmal gesendet. Es werden halt nur 64 
Zyklen, sprich 64 Schwingungen des Taktsignales genutzt, um die eins 
darzustellen. Im Datenblatt fig.6 siehst Du, daß eine 0 durch eine 
fallende Flanke, eine 1 durch eine steigende Flanke dargestellt wird. 
Sprich für eine 1: Die ersten 32 Schwingungen sind belastet, die 
empfangene Signalamplitude ist also kleiner, die nächsten 32 
Schwingungen sind unbelastet, also größer in der Amplitude. Direkt nach 
den 64 Schwingungen folgt das nächste Bit.

zu 3) Welcher R1? Meinst Du den Schaltplan in der Elektor? Den habe ich 
gerade nicht hier. Muß ich zu Hause mal reinschauen...

Hoffe, ich konnte schon mal etwas helfen,

Gruß,
Markus_8051

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Markus_8051

Danke für deine Erklärung jetzt habe ich das verstanden mit den 64 
Zyklen.
wenn ich auf dem oszi nicht nur immer 8 Zyklen anschauet hätte dann wäre 
mir auch eine Änderung aufgefallen.
die Signaldämpfung ist aber sehr gering mal schauen ob ich das auswerten 
kann.

der Rest ist jetzt hoffentlich nur noch software Sache .

nachmals danke

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, kein Problem und viel Erfolg für die Programmierung der Software!

Gruß,
Markus_8051

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.