erstellt 31.07.2020
Funkübertragung mit Modul HTC-11
Ziel ist es mittels Funkübertragung Daten vom Atmega zum Rechner zu übertragen
Ich hatte einige Schaltungen aufgebaut die mit Funk, Daten zum Rechner übertragen haben.
Leider gibt es diese Module nicht mehr im Handel, somit sah ich mich genötigt alternative Funkmodule zu nutzen.
Es gibt wohl eine Vielzahl von Module die sehr Kostengünstig sind , leider funktionieren die meisten mit Bluetooth, es ist zwar ein ausgereiftes System, allerdings ist die Reichweite auf ca max 10 Meter
sehr begrenzt.
Dann gibt es noch eine Vielzahl an Funkmodule die auch günstig zu bekommen sind, die aber kein Protokoll beinhalten, insofern die Programmierung aufwändig und kompliziert ist.
Abschließend noch die Funkmodule die keine passende Schnittstelle aufweisen und somit auch ausscheiden.
Das hier benutzte Modul hat den Vorteil das es mit einer Spannung zwischen 3,3 und 5 Volt auskommt, womit es auch im Bereich der Betriebsspannung liegt die auch für den Mikroprozessor
der Firma Atmel ( Atmega 8 ) benötigt wird.
Das Modul HC-11 arbeitet auf einer Frequenz von 434 MHz und benutzt Standardmäßig eine Übertragungsrate von 9600 Baud.
Der Stromverbrauch liegt im Standby bei 80 uA und im Betrieb je nach Funktion bei max 22 mA.
Schaltung
Zur Schaltung ist nicht viel zu sagen, der Quarz ist nötig um die Übertragungsrate von 9600 Baud ohne Fehler Übertragen zu können.
Die Led's werden nur benötigt um einige Betriebszustände darstellen zu können.



Software in Bascom geschrieben

Programm
$crystal = 3276800     Gibt die Quarzfrequenz an in Herz
$hwstack = 32   Default use 32 Hardware reservierte Speicher
$regfile "m8def.dat"    
Definiert den Atmega als Atmega8
$swstack = 10        
Default Software resvierung Speicher
$baud = 9600 Gibt die TXR TDR Schnittstelle frei
Variable deklarieren
Dim Eingang As String * 10
Empfangene Daten zwischenspeichern


E/Ausgänge festlegen
Ddrd.7 = 1    
Led Grün
Ddrb.5=1
Led Blau
Konfiguration fürs Display
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.6 , Db6 = Portd.3 , Db7 = Portd.2 , Rs = Portc.4 , E = Portc.5
Konfiguration für das Emfangen von Daten
Enable URXC
schaltet den URXC Interrupt ein
Sreg.7 = 1     Interrupts allgemein freigeben
On Urxc Datenempfang Namen für Routine angeben
Ucsrb.rxcie = 1 nur interupt zum empfang der Daten an RXD freigeben

URXC ist ein festgelegter Interrupt für den Datenempfang
wobei nach jedem empfangenen Byte ein interner Interrupt ausgelöst wird
Programm
Do
Wait 1
Toggle Portd.7

Print 1 Sendet das AscII Zeichen 1
Cls  
Display löschen
Locate 1 , 1
Lcd " Sende 1"
Locate 2 , 1
Lcd "Empfange=" ; Eingang Empfangene Daten ausgeben
Wait 1
Loop
Routine für den Datenempfang
Datenempfang:
Eingang = Eingang + Chr(udr) chr(udr) wandelt den empfangenen Wert aus UDR in ein ASCII Zeichen um
Return












HC-11 Modul
Das HC_11 Modul arbeitet mit gewissen Standard Einstellungen die aber auch neu Paramtriert werden können.
 Leider ist es mir nicht gelungen in den Befehlsmodus zu gelangen um so die Parameter zu ändern.


URXC
UDRE
UTXC
SERIAL
Serial RX complete interrupt
Serial data register empty interrupt
Serial TX complete interrupt
Disables URXC, UDRE and UTXC



Der USART-Sender verfügt über zwei Flags, die seinen Status anzeigen:
 USART Data Register Empty

(UDRE) und Transmit Complete (TXC).
 Beide Flags können zum Generieren von Interrupts verwendet werden.
Das UDRE-Flag (Data Register Empty) zeigt an, ob der Sendepuffer empfangsbereit ist neue Daten.
 Dieses Bit wird gesetzt, wenn der Sendepuffer leer ist, und gelöscht, wenn der Sendepuffer leer ist
enthält zu übertragende Daten, die noch nicht in das Schieberegister verschoben wurden. Um die Kompatibilität mit zukünftigen Geräten zu gewährleisten, schreiben Sie dieses Bit beim Schreiben des UCSRA-Registers immer auf Null.
Wenn das leere UDRIE-Bit (Interrupt Enable) des Datenregisters in UCSRB in eins geschrieben wird, wird das
USART Data Register Empty Interrupt wird ausgeführt, solange UDRE eingestellt ist (vorausgesetzt, dass
globale Interrupts sind aktiviert). UDRE wird durch Schreiben von UDR gelöscht. Bei Interrupt-gesteuerten Daten
Wird die Übertragung verwendet, muss die leere Interrupt-Routine des Datenregisters entweder neue Daten schreiben
UDR, um UDRE zu löschen oder den leeren Interrupt des Datenregisters zu deaktivieren. Andernfalls tritt nach Beendigung der Interruptroutine ein neuer Interrupt auf.
Das TXC-Flag (Transmit Complete) wird auf eins gesetzt, wenn der gesamte Rahmen im Sende-Schieberegister herausgeschoben wurde und derzeit keine neuen Daten im Sendepuffer vorhanden sind. Das
Das TXC-Flag-Bit wird automatisch gelöscht, wenn ein Interrupt für die vollständige Übertragung ausgeführt wird oder kann
gelöscht durch Schreiben einer Eins an die Bitposition. Das TXC-Flag ist nützlich für die Halbduplex-Kommunikation
Schnittstellen (wie der RS485-Standard), bei denen eine sendende Anwendung in den Empfangsmodus wechseln muss
und geben Sie den Kommunikationsbus sofort nach Abschluss der Übertragung frei.
Wenn das TXCIE-Bit (Transmit Compete Interrupt Enable) in UCSRB gesetzt ist, wird USART Transmit aktiviert
Der vollständige Interrupt wird ausgeführt, wenn das TXC-Flag gesetzt wird (vorausgesetzt, globale Interrupts sind aktiviert). Wenn der Interrupt für die vollständige Übertragung verwendet wird, wird die Interrupt-Behandlungsroutine verwendet
muss das TXC-Flag nicht löschen, dies erfolgt automatisch, wenn der Interrupt ausgeführt wird.








Aktualsisiert 13.12.2018