Forum: Mikrocontroller und Digitale Elektronik ATmega128 und serielle Portabfrage


von LuiDC (Gast)


Lesenswert?

Hallo.
Habe einige Fragen bezüglich einer uC Programmierung mit einem 
ATmega128. Ich habe mir einen Handsender im ISM-Band bei 434MHZ 
aufgebaut und versuche jetzt mit einem dementsprechenden Sender die 
Codierte-Bitfolge am uC auszuwerten. Konkret würde ich vorerst einen 
Taktgeber mit 010101 (0xAA bzw. 0x55) kontinuierlich vorgeben.

Der Empfänger funktioniert und gibt einen TTL-Konfprmen pegel aus. Frage 
mich jetzt nur wie ich am besten das Signal an einem Port des ATmega 
auswerte, ohne das ganze Programm lahm zu legen. Hat eventuell einer 
schon irgend welche Erfahrungen gesammelt und wäre bereit sie mit mir zu 
teilen?


Die Fragen bei denen ich mir noch nicht im Klaren bin sind:

1. Abfrage mit Polling-Verfahren und dann immer eine Gewisse Zeit den 
Kanal auslesen?

2. Bestimmte Methoden sind für die UART vorgegeben, um Daten 
zwischenzuspeichern. Ist sowas auch für eine Bitübertragung am Port 
vorgesehen? So das ich dann beim Methoden-Aufruf den Zwischenspeicher 
auswerten kann?

Über jede Hilfestellung wäre ich schon dankbar.

von Thilo M. (Gast)


Lesenswert?

Ich hatte vor einiger Zeit mal mit AUREL Funkmodulen zu tun, da lief es 
ähnlich ab. Die hatten aber einen Pin, an dem ein Lowpegel erschien, 
wenn ein Träger erkannt wurde. So konnte ich per Interrupt an diesem Pin 
reagieren, wenn ein Sender aktiv wurde. Die Präambel mit 0x55 
(0-1-0-1..) war dort genauso als Erkennung drin, synchronisiert wurde 
nach zweimal 0xff (konstanter Highpegel für 8 bit).

von LuiDC (Gast)


Lesenswert?

hättest du den Code damit ich mir das mal anschauen kann?

von Lui D. (luigidc)


Lesenswert?

Was für ein Aurel-Modul hast du denn konkret bei dir im Einsatz gehabt?

von Thomas S. (thomass)


Lesenswert?

@LUIDC,

hatte mal ein Programm geschrieben der Funksignale von Sensoren 
ausertete.
Habe hierbei per Interruptroutine ständig mein Signal des Empfängers 
durchsucht.
Wenn nichts gesendet wurde hatte ich ein Rauschen dieses musste 
gefiltert werden.
Hatte das System eine Präambel erkannt wurden die Daten eingelesen und 
am Schluss auf mögliche Erkennungsfehler überprüft, war alles korrekt 
wurde gespeichert.
Bei mir war das Protokol immer 1111111111110Daten1Daten1Daten1check1 die 
Daten konnte unterschiedlich lang sein.
Du musst natürlich sicher sein das Du das Signel korrekt auswertest.
Ich zählte immer eine Variable hoch und runter mit jeder Pegeländerung.
Pegel HOCH VAR=1 --> Pegel RUNTER VAR=0 --> per Timer die Zeit zwischen 
HIGH und LOW ermitteln und Entscheiden ist es eine 1 oder 0 oder 
Schrott.

Thomas

Ich hatte es mit einem 80c817A gemacht der hatte einen Timer2 der die 
Zeit automatisch ermitteln konnte per Hardware.

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
Noch kein Account? Hier anmelden.