Hallo zusammen, verzweifle gerade ein wenig - die Anwendung geht, aber ist einfach nicht zuverlässig. Vielleicht hat ja jemand Erfahrung oder anderen Code für FS20 receiving mit AVR Atmega. Folgende Konstellation: - Habe mir aus Etherrape Alexander Neumanns FS20 Code auf das Pollin Eval Board, Atmega32, angepasst auf AVR Studio. Teste mit FS20 S20 Fernsteuerung und WS300 Wetterstation. - Habe die Konstanten in Alexanders Code vom 20MHz im Originalcode auf meinen 16Mhz Quartz angepasst (einfach mal 16/20=0.8 genommen). - Habe eine Timeoutvariable in fs20.c auskommentiert - hängt damit nach einer Weile - verstehe aber nicht, warum. - Habe sogar den FS20 Empfänger etwas von Eval-Board abgesetzt, um eventuelle EMV Störungen zu verringern. Nun funktioniert das wohl auch sowohl bei Fernsteuerung als auch bei WS300, aber sehr unzuverlässig. Z.B. jeder 3-6 Tastendruck gibt einen korrekten Sync, sonst Sync invalid. Gleiches beim WS300 Wetterstation - alle 8-9 send gehts mal mit korrektem Check, sonst fail. Ach ja, für die Gegner von Funk: Ich habe das auch über ein FS20 USB Modul gegengeprüft, dort ist das wesentlich robuster, fast 100% Erkennungsrate - also am Funk allein liegt es nicht. Hat sich da jemand von Euch schon einmal mit rumgeschlagen oder hat eventuell Code, der mit fs20 (receive, und aber auch send) zuverlässiger funktioniert? Grüsse Axel PS: Code anbei.
Hi Axel, Hab hier leider nur Bascom-Code. Der funktioniert zuverlässig (Senden und Empfangen). Falls dir der Bascom-Code helfen sollte, gib mir bescheid. Gruß Dirk
Hallo Dirk, danke für Deine Antwort. Ja, in der Tat, das wäre hilfreich, dann kann ich einmal die Timings und die ganze Vorgehensweise vergleichen. Wäre auch nett, wenn Du mir einmal Deine elektrische Beschaltung nennen könntest. Ich habe den Atmega32 unter 5V am laufen, und nutze das 3V FS20 receiver modul von ELV. Ich habe nun den Datenausgang des FS20 moduls direkt am PB3 in einer Comparatorschaltung dran. Ich frage mich, ob die Unzuverlässigkeit an unzureichenden Pegeln liegt - in etherrape's wiki ist noch ein 5V fs20 modul im Einsatz, und dort ist dem Datenausgang ein Spannungsteiler nachgeschaltet. Hast Du hierzu Erfahrung ? Danke und Gruss Axel
Der ELV-Empfänger hängt bei mir direkt am InputCapture des AVR. Mit den 3V Pegeln hatte ich noch keine Probleme. Schau mal hier: http://groups.google.com/group/fhem-users/browse_thread/thread/15ec16194eba9e79/000fdab3f46dbf3a?lnk=gst&q=#000fdab3f46dbf3a Ganz unten hatte ich vor einger Zeit mal was vorgestellt. Diese Schaltung läuft bis heute. Gruß Dirk
Hallo Axel, ... da hab ich auch lange gekämpft! Hier mein Auszug aus der FS20.h für 12Mhz: /* zero is 400uS: F_CPU/10^6 * 400 = 8000, with prescaler 128 gives 62.5 * -> test if value is between 33 and 73 */ //#define FS20_PULSE_ZERO(x) FS20_BETWEEN((x), 33, 73) #define FS20_PULSE_ZERO(x) FS20_BETWEEN((x), 15, 45) /* one is 600uS: F_CPU/10^6 * 600 = 12000, with prescaler 128 gives 93.75 * -> test if value is between 74 and 105 */ //#define FS20_PULSE_ONE(x) FS20_BETWEEN((x), 74, 105) #define FS20_PULSE_ONE(x) FS20_BETWEEN((x), 46, 99) /* maximal difference between two pulses is 115.2 uS, * wh5ch means 18 timer cycles with prescaler 128 */ #define FS20_PULSE_DIFFERENCE(x,y) FS20_SYMM(x, y, 28) //#define FS20_PULSE_DIFFERENCE(x,y) FS20_SYMM(x, y, 372) Gruß, Tom
Hallo Dirk und Tom, danke. Den Bascom code muss ich einmal verarbeiten - sieht mit dem Input capture irgendwie einfacher aus - ich versuche später mal meinen Code umzubauen. Tom, mit Deinen Zahlen für Pulse Difference hab ich etwas bessere Ergebnisse (subjektiv), aber irgendwie immer noch sehr zufällig. Die One/Zero Werte hab ich mal auf meinen (proportional zu den originalen 20MHz gerechneten) Werten gelassen - wenn ich diese umändere, sei's auf Deine Werte oder proportional zu Deinen Werten zu meinen 16MHz, wirds schlechter. Irgendwo ist da noch der Wurm drin. Herzlichen Dank für die Hilfe. Grüsse Axel
ich hatte so einen Empfänger auch mal aufgebaut, der Mega32 war auf dem STK500 und der Empfänger über ein Steckbrett angeschlossen. Der hat sich Störungen vom µC eingefangen und ein 1kHz Signal war am Ausgang zu sehen. Erst wenn der Empfänger min. ca. 20cm vom µC entfernt lag konnte ich die Codes sauber empfangen.
Ja, dachte ich auch, und hab daher das Steckbrett auch abgesetzt, sogar mit Kabel auf 5m Abstand. Machte leider keinen Unterschied. Er empfängt ja auch recht zuverlässig, wertet aber leider eben nicht zuverlässig aus. Danke und Gruss. Axel
Was man auch nicht vergessen darf, der Empfänger hat keine "Rauschschperre". Ohne gültiges Signal bekommt der AVR jede Menge "Datenmüll". Zumindest ich habe bisher keine Probleme mit dem Empfänger in der nähe des AVR's. Gruß Dirk
Hallo - hast Du eine Ethersex/Ethernut kompatible Hardware Dann probiere doch mal, obs damit zuverlässig geht...
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.