Hi, würde mich über ein paar Tips von euch freuen. Ich möchte den Signalverlauf, im Anhang ersichtlich, einlesen. Wie würdet ihr dies am sinnvollsten erledigen? Ich habe mir volgendes mal überlegt: - Einlesen per Interrupt, z.B. INT0, dann Zeitmessung starten, warten bis Flanke fällt und Messung stoppen, erkennen ob 0 od. 1 , in Container schreiben, weiterschieben, nächstes Bit. - Per Timer selbst mit Pinpolling, und obigem Verfahren Nun stehe ich vor dem Problem das dies so umständlich ist. Ich habe nur 4 Bitfolgen nach obigem Schema zu erkennen, deshalb könnte man eine Art Tabelle anlegen und damit vergleichen. ?? Hm.. oder auch nicht. Es gibt doch noch so eine Timer Capture - Compare Funktion, kann man damit etwas erleichtern? So, ich hoffe ihr könnt mir einen Rat geben um möglichst einfach zum Ziel zu kommen, nämlich diese 4 möglichen Bitfolgen einlesen und unterscheiden. Möchte einen Atiny2313 verwenden, programiere in Bascom. Ich will keine Komplettlösung, nur gewisse Denkanstöße ;-) Vielen Dank Grüße Addy
Du kannst die Impulse per Interrupt INT0 oder Inputcapture ausmessen und je nach Breite eine '1' oder '0' zuweisen. Ich kenne das Datenformat nicht, das du benutzt, du müsstest das Ganze dann in eine Integer oder Char-Variable 'shiften'.
Hallo, habe mir das ganze mal ausgemessen und versucht was zusammen zu schreiben. Steh aber jetzt vor dem Problem, dass wenn ich kein Nutzsignal empfange, also die obrige Bitfolge, ich extreme Störungen habe. Es handelt sich hierbei um einen Funkempfänger, der die 4 Tastencodes eines Handsenders ausgibt. Ist so ein Universal-Funkteil für Auto usw. Mit dem Oszi kann ich die Signale beim Tstendruck sauber messen, nach dem loslassen empfängt der Empfänger eben den "Müll" aus der Luft. Mein Problem ist es nun die "Nutzsignalkombination" aus dem ganzen rauszulesen. Im Prinzip bräuchte ich eine Art Filter. Mit dem ICP habe ich eben probiert aber auf keinen grünen Zweig gekommen. Was bewirkt die "Noise Cancel" - Funktion des ICP den eigentlich genaueres, habe hierzu nicht wirklich ein Beispiel gefunden. Mit dem ICP macht mir auch die kurze Impulsdauer zu schaffen, vor allem wegen den Störungen. Der originale Empängerauswertschaltung hinter dem Empfangsteil besteht aus einem PIC mit unbekanntem Inhalt, den ich nun gerne ersetzten möchte, da dieser nicht alle Tastencodes implementiert hat. Deswegen der Aufwand. Die Schaltung am PIC funktionier einwandfrei, ergo muss dieser die Signale auch irgendwie Filtern. Ich hoffe jemand kann mir nen Tip oder ein Beispiel geben. Im Prinzip ist die Signalgebung wie beim DCF77 nur etwas schneller. Vielen Dank für die Mühen Grüße Addy
Warum suchst du dir in der Codesammlung nicht einen DCF77 Dekoder und passt ihn an. Die Auswertung der 0 und 1 kannst du ja selbst definieren indem du festlegst eine 0 ist von 395 bis 405µsek und eine 1 von 995 bis 1005µsek. Damit hst du schon den ersten Filter, was da nicht hineinpasst wird weggeworfen. Ausserdem wird es noch eine Startsequenz geben und wenn die Bitfolge ungültig ist wird diese ebefalls verworfen. Störimpulse ausserhalb des Zeitrahmen ignorieren. Das wären schon die wichtigsten Filter.
ok, danke das klingt logisch ;-) war gestern schon müde gg und stimmt wenn ich die 4 Nutzsignale vergleiche, haben alle bei den ersten 18 Bits das gleiche. (ist mir gar nicht so aufgefallen) Werd ich mal probieren. Also müsste falls die Auswertung die ersten Impulse erkennt und die zufällig in das Schema passen und dann Fehlimpulse kommen, sofort abgebrochen werden um dann wieder neu zu starten. Also nicht erst die 26 bit abwarten und vergleichen, sondern direkt bit für bit direkt vergleichen. Was meint ihr. Letzteres kann schneller ausschliessen, bzw reagieren. Vielen Dank Grüße Addy
Ich würde die Startsequenz einlesen und auswerten, wenn diese OK ist die nächsten 8 Bit einlesen und verlgeichen.
Ok, danke euch zweien. @laeubi Also das Signal geht direkt in den PIC ohne Vorbeschaltung, ausßer dass intern etwas geschaltet werden kann, denke aber nicht. @Hubert Danke, werd ich so mal probieren.
Hallo, schau Dir die Signale nochmal genau an. Eigentlich sollten zuerst einige Impulse (Sync-Bits) kommen, die nur dazu dienen, daß die Empfänger-Regelung einschwingt. Vor den Daten sollte eine eindeutige identische Bitfolge (Start-Bits) auftauchen, an der zu erkennen ist, daß jetzt die Daten kommen. Danahc sollten die Datenbits kommen. Es ist nie sicher, wieviele Sync-Bits wirklich durchkommen, weil es von der Empfangsqualität abhängt. Das muß jetzt bei Dir nicht so sein, ist aber die übliche Methode, um solch eine Übertragung halbwegs zuverlässig zu gestalten. Falls es so ist: die Bits in ein Register schieben und nach jedem Bit vergleichen, ob die Startkombination aufgetaucht ist. Dann danach die Daten einsammeln. Falls es nur die Daten gibt, weil es dem Hersteller bei den 4 Bitmustern als sicher genug erschien, dann eben jeweils direkt auf diese vergleichen. Wenn Du weist, wieviele Bits Dein Datenwort hat, brauchst Du ja nur diese Anzahl zum Test, den Rest dann eben wieder wegwerfen. Gruß aus Berlin Michael
Hallo, juhu, habs geschafft. Hab ein paar Sachen kombiniert. - Startbedingung abwarten = 20ms Pause im Signal - Code einlesen, gleichzeitig zwischen 0 und 1 differenzieren - Filterung von zu kurzen bzw. langen Impulsen - In Puffer shiften - Nach geforderter Länge = 25 Bits vergleich mit Referenz - Falls gleich, Freigabe zur Verwendung, ansonsten Beginn von vorne. Vielen Dank für die Denkanstöße. Ich wollte dies mit der ICP lösen, bin aber auf keinen grünen Zweig gekommen, habs nun auf einen normalen INT geklemmt und zähle selbst. Grüße Addy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.