|
|
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
|