Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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: