Re: TowiTek RFID Antenne Kategorie: Sonstige Hardware (von PeterS - 25.12.2010 23:23) | |
Als Antwort auf Re: TowiTek RFID Antenne von Franz-Peter - 24.12.2010 13:13
| |
> > > > > > > > > > > Hallo Franz-Peter, > > > > > > > > > > > > vielen Dank für Deine Antwort. > > > > > > Hättest Du mal ein Beispiel, wie du den Empfang durchführst... > > > > > > > > > > > > Zur Syncronisation: > > > > > > > > > > > > Wenn man nach einem fehlerhaften Empfang oder zyklich ein Serial_Init_IRQ aufrufen würde, > > > > > > mü�te man sich nicht auch dann wieder syncronisieren? > > > > > > > > > > > > Da die Unit ja nur 2 serielle Schnitstellen hat, wie hast du denn die 4 Antennen angeschlossen? > > > > > > �ber welche Entfernung gehst Du? Mit oder ohne Pegelwandler? > > > > > > > > > > > > Grue�e Joerg > > > > > Hallo Joerg, > > > > > Das Problem beim Synchronisieren ist, dass Du aufgrund fehlender Anfangs- und Endekennung einen > > > > > fehlerhaften Empfang gar nicht erkennen kannst. Es sind ja alle Zeichen gültig. > > > > > Und ein unbekannter Transponder ist in diesem Sinne auch nur dann ein Fehler wenn Du ganz sicher > > > > > bist, dass nur die hinterlegten Transponder an deine Antenne kommen. > > > > > Ein zyklisches Serial_Init kann den Fehler sogar erst provozieren: Wenn das Init gerade > > > > > stattfindet, wenn die Antenne eine ID sendet, gehen vielleicht genau die ersten 1 oder 2 Zeichen > > > > > verloren und Du beginnst mitten in der �bertragung das Zählen deiner 5 Byte. > > > > > Zumindest wenn Du keinerlei Einflu� darauf hast, wann ein Transponder an die Antenne kommt, > > > > > geht es nur mit einer Zeitüberwachung. > > > > > Ich starte einen 50ms Timer , wenn ich das (evtl vermeintliche) 1. Zeichen empfange. > > > > > Mit dem Empfang des 5. Zeichens wird der Timer wieder gestoppt. Läuft er vorher ab, wird der Empfang > > > > > abgebrochen und startet wieder beim 1. Zeichen. > > > > > Den Timer realisiere ich als Bytevariable, die im 10ms Interrupt heruntergezählt wird. > > > > > Das habe ich soeben im Thread von Christian beschrieben: > > > > > (Beta 2.12.06 Timer Probleme http://ccpro.cc2net.de/forum/lesen.php?eintrag=5922 ). > > > > > Ich realisiere alle meine Timer so. > > > > > > > > > > Das mit den 4 Schnittstellen ist in der Tat ein Problem gewesen, dass micht etwas Aufwand gekostet > > > > > hat: Ich habe an eine Mega32 3 SCC Bausteine Z8530 angeschlossen ( ich weis nicht, ob es den noch > > > > > neu gibt, aber ich hatte noch einige in der Schublade). Jeder enthält 2 serielle Schnittstellen und > > > > > wird über einen 8-Bit Datenbus angesprochen. > > > > > Da der Mega32 keinen externen Datenbus hat, habe ich das per Assemblerprogramm über die Ports > > > > > emuliert. Die Interruptverarbeitung für die Bausteine habe ich auch in Assembler geschrieben, da > > > > > der Interpreter für die Verwaltung von 6 seriellen Schnittstellen zu langsam ist. > > > > > Der Mega32 arbeitet nun als Konzentrator für die 4 Antennen und setzt die empfangenen ID's in eine > > > > > interne 1 Byte-Transpondernummer um. �ber eine der Schnittstellen ist die Mega32 mit der Steuerung > > > > > (Mega128) verbunden, die nun abfragen kann, welcher Transponder wo erkannt wurde. > > > > > Gru� > > > > > Franz-Peter > > > > > P.S. ich beutze keine Pegelwandler, und die maximale Entfernung ist ca. 3m > > > > > > > > > > > > > Hallo Franz-Peter, > > > > > > > > vielen Dank für Deine ausführliche Erklärung. > > > > > > > > Da du sehr viel in Assembler schreibst und sehr zeitkritisch bist, stellt sich für mich die Frage, > > > > warum du ein C-Control benutzt und nicht den AVR C Compiler? > > > > > > > > Kann man das mit den 6 Schnitstellen nicht einfach über ein 'oder' machen, wenn man davon > > > > ausgehen kann, das immer nur eine Antenne gleichzeitig verwendet wird? > > > > > > > > Ich habe da noch mal eine Frage: Benutzt Du eine Antenne im Au�enbereich? > > > > Die Antennen sind ja nur bis 0 Grad spezifiziert und ich wollte eine an der > > > > Eingangstür verwenden. > > > > > > > > Mit der syncronisation hatte ich mir das wie folgt vorgestellt: > > > > (Mü�te eigentlich ähnlich deinem Timer sein) > > > > > > > > In einem Thread alle 50ms das erste Zeichen abfragen. > > > > > > > > Wenn Zeichen empfangen dann ein Thread_Delay von 50ms > > > > > > > > Wenn empfangen Daten falsch (egal ob asynchron oder nicht registrierter Chip) ==> Seriell_Init > > > > > > > > > > > > Grü�e Joerg > > > > > > > Hallo Joerg, > > > insgesamt ist der Anteil der in Assembler geschriebenen Software bei mir immer noch recht gering. > > > Auch wenn das jetzt bei dem Mega32 für die RFID Antennen etwas mehr ist. Meine 'Hauptsteuerung' > > > mit Mega 128 enthält eigentlich wenig zeitkritisches. Das lässt sich alles noch mit dem Interpreter > > > beherrschen. Weil ich sehr viel Bitverarbeitung benötige ( bisher ca. 100 I/O für Lichtschranken, > > > Relais u.ä - und es wird noch mehr werden) habe ich mir nur ein paar Assemblerroutinen für eine > > > komfortable Bit-Verarbeitung geschrieben. Die CC pro hat da meiner Meinung nach (noch?) ein gewisses > > > Defizit. > > > Ich setze die RFID Antennen nur im Innenbereich ein. Deshalb ist der Temperaturbereich für mich kein > > > Problem. > > > Die Synchronisation müsste so wie Du es vorhast, auch funktionieren. Ich würde nach dem Thread_Delay > > > dann abfragen, ob genau 5 Zeichen empfangen wurden (geht ja mit Serial_IRQ_Info). Wenn nicht, bist > > > du auf jeden Fall asynchron und kannst gleich ein seriell Init machen. > > > Gru� - und ein frohes Weihnachtsfest > > > Franz-Peter > > > > Hallo Franz-Peter, > > > > >Die CC pro hat da meiner Meinung nach (noch?) ein gewisses Defizit. > > > > Was könnte man da besser machen? > > > > Gruss Peter > Hallo Peter, > aus meiner Sicht fehlt der VariablenTyp 'Bit' und damit die Möglichkeit Bits innerhalb eines Bytes > einzeln zu benennen und dann in Ausdrücken direkt anzusprechen (Setzen, löschen, abfragen). > Mit meinen Assemblerroutinen habe ich mir diese Möglichkeit geschaffen. Da nur Arrays per Ref an > Unterprogramme übergeben werden können, kann ich mit den Assemblerprogrammen nur die Bits innerhalb > eines Arrays einzeln ansprechen, was für meine Zwecke aber ausreicht. Ich kann also ein Byte-Array > mit z.B. 5 Elementen jetzt auch als Bit-Array mit 40 Bits ansprechen. Ich habe die Aufrufe > void ClrBit( char Basis[], Int BitNr ) > void SetBit( char Basis[], Int BitNr ) > void TogBit( char Basis[], Int BitNr ) > byte TstBit( char Basis[], Int BitNr ) > realisiert. Die Bitnummer läuft linear durch das ganze Array durch. > > Schön wäre es, wenn man dafür nicht den Umweg über Up-Aufrufe benötigen würde, sondern dies wie > ganz normale Array-Elemente in Ausdrücken ansprechen könnte. Ich denke aber, das es wichtig ist, > dass man das Array weiterhin auch als Byte Array ansprechen kann. Am Anfang meiner Hauptschleife > lese ich alle Eingangsports byteweise in solche Arrays ein. Die werden dann in einer umfangreichen > Logik verarbeitet und in entsprechende Arrays für die Ausgangsports geschrieben. Am Ende werden > die Arrays für die Ausgänge wieder byteweise an die Peripherie geschrieben. Wenn man die C-Control > wie eine SPS einsetzt und fast nur logische Bit Ein- und Ausgänge hat geht es kaum anders. > > Vielleicht können ja auch die anderen Forumsteilnehmer ihre Meinung dazu kundtun, ob das was ich > mache eher ein Einzelfall ist, oder ob das auch anderen helfen würde. > > weihnachtliche Grü�e > Franz-Peter > > P.S. Kannst Du schon was über ein Zeitraster für 'Interrupts in Assembler' sagen? Die oben be- > schrieben Mega32 als RFID Konzentrator wollte ich eigentlich schon als I2C Slave anschliessen. > Irgendwann im nächsten Jahr habe ich noch etwas ähnliches vor, und da wäre es schön wenn es > klappt, die Mega32 als I2Slave zu betreiben. Es tut mir leid, aber ich habe zur Zeit keinerlei Weiterentwicklungen in meinem Zeitplan. Ich selbst habe sehr viel für Conrad kostenlos in die C-Control Pro eingebaut, ich habe da kein Spielraum mehr. Wenn Du ein Feature haben willst, bitte mit möglichst vielen anderen an das Conrad CTC schreiben. Gruss Peter | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum