www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FS20 Rcvr. auf AVR Anpassung - verzweifle gerade ein wenig


Autor: Axel Ro. (axelroro)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk H. (kcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Axel Ro. (axelroro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk H. (kcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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_t...
Ganz unten hatte ich vor einger Zeit mal was vorgestellt. Diese 
Schaltung läuft bis heute.

Gruß
Dirk

Autor: tom-2940 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Axel Ro. (axelroro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Axel Ro. (axelroro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk H. (kcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: FS20Nutzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo - hast Du eine Ethersex/Ethernut kompatible Hardware Dann probiere 
doch mal, obs damit zuverlässig geht...

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.