PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ER400TRS- bzw. RF04/400-Funkmodul -> kleines Problem



Florian
02.10.2004, 19:54
Hi @ all!
Ich habe die beiden Funkmodule ER400TRS und RF04/400 von www.roboter-teile.de .
Ich bin auch sehr zufrieden mit den Modulen, aber irgendwas muss ich falsch gemacht haben!?
Als Antenne habe ich jeweils ein 16,4cm langen Draht genommen.
Ich habe das Modul mit dem USB-Anschluss (RF04/400) an den PC angeschlossen und es funktioniert einwandfrei (glaube ich zumindest *g*).
Das andere Modul mit der seriellen Schnittstelle (TTL) (ER400TRS) habe ich an den AVR angeschlossen.
RXD (PinD 0) an Data Out (Pin 5) und TXD (PinD 1) an Data In (Pin 6).
Ich habe dann ein Assembler-Programm für den AVR (AT-Mega8) geschrieben:

.include "m8def.inc"

.def temp = r16

.equ quarz = 4000000
.equ baudrate = 19200
.equ ubrr_wert = quarz/(baudrate*16)-1

stack_initalisieren:
ldi temp , low (RAMEND)
out SPL , temp

ldi temp , high (RAMEND)
out SPH , temp



uart:
baudrate_einstellen:
ldi temp , low (ubrr_wert)
out UBRRL , temp

ldi temp , high (ubrr_wert)
out UBRRH , temp

frame_format_8bit:
ldi temp , 0b10000110
out UCSRC , temp

tx_aktivieren:
sbi UCSRB , TXEN



loop:
ldi temp , 'T'
rcall ausgabe

ldi temp , 'e'
rcall ausgabe

ldi temp , 's'
rcall ausgabe

ldi temp , 't'
rcall ausgabe

ldi temp , '!'
rcall ausgabe

ldi temp , 10
rcall ausgabe

ldi temp , 13
rcall ausgabe

rjmp loop



ausgabe:
warten_bis_udr_bereit:
sbis UCSRA ,UDRE
rjmp ausgabe

ausgabe_des_bytes:
out UDR , temp
ret

Wenn ich dann HyperTerminal starte und den AVR starte, dann erscheint folgendes auf dem Bildschirm! :o(


<Tí$¡[136]UÍÑ[133]CUÖÑ[133]ýtH¡[136]UÍÑ¡WR
<TesÑ[133]
<TestÍ[136]UÍÑ[133]
<
<Test!
<
<Test![23ETB]WR
<TestH¡[136]UÍÑ[133]
<Tÿl¡[136]UÍÑ
<Test!ýt!
<TestH¡[136]UÍÑ[133]
<Tü[136]UÍÑ[133]TestÑ[133]
<
<TesH¡st!
<Test
<Test!ý?WR
<TesÍ.WR
<TestCUÖÑ[133]ÿ
<Ñ!
<TesH¡[136]UÍÑ
<Test!ÿ.WR
<Tes`H¡[136]UÖÑ[133]CUTest![136]UÍÑ[133]ý

Ich denke mal es liegt an dem Code für den AVR, aber selbst mit Pausen hinter "rcall ausgabe", um den Datenstrom langsamer zu machen und um einen Stau bzw. ein Überschreiben zu verhindern, funktioniert es nicht! :o(

Kann mir vielleicht jemand helfen? :o)
Ich glaube aber nicht, dass die Hardware kaputt ist, die ist 1. ganz neu und 2. scheint sie ja zu funken!
Könnte es daran liegen, dass ich die AVR-Schaltung auf einem Steckbrett aufgebaut habe?

Danke für Eure Hilfe! :o)

Florian
02.10.2004, 23:09
Kann mir denn niemand helfen? :cry:

Florian
03.10.2004, 10:20
Ich habe das problem gelöst!

@ Frank:
Du kannst von mir aus diesen Thread löschen, da er ja keinem von Nutzen ist! *lol*

Trabukh
03.10.2004, 10:35
Könntest du vllt beschreiben, worin der Fehler lag und wie du es gelöst hast?

Gruß, Trabukh

Florian
03.10.2004, 11:08
Hi Trabukh!
Also, als Erstes hatte ich die beiden Pins (RXD/TXD) vertauscht. *ja, ich bin blöd* *lol* *peinlich*
Dann kamen aber noch immer Störungen:

<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<TeTest!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<Test!
<TeTest!
Immer periodisch nach 128 Byte!
Da viel mir ein, dass der ER400TRS ja 128 Byte Buffer hat.
Also schlussfolgerte ich, dass nach 128 Byte eine Pause sein muss, da der Transciever erstmal die alten Daten senden muss.
Ich werde jetzt die BUSY-Leitung in dem Programm abfragen, ob der ER400TRS bereit ist, oder noch nicht.
Damit möchte ich das Problem verhindern.
Wenn es funktioniert kann ich ja den Code hier posten! :o)

RCO
03.10.2004, 14:58
Könntest du mal zeigen, wie du das Ding beschlatet hast?
Warum gibts da einmal digital aus und analog out?
Und warum ein modulated in, muss man das Signal irgendwie modulieren?
...

MFG Moritz

Florian
03.10.2004, 15:35
Hi Moritz!
Ich verstehe Deine Fragen nicht ganz, aber ich hoffe ich kann Dir so weiterhelfen:
Meine Schwester hat leider die Digi-Cam mitgenommen, sonst könnte ich n Foto machen! :o(
Der Transciever hat ja 9 Pins!

Pin 1 - ANT: Antenne, z.B. 16,4cm langen Draht.
Pin 2 - RF GND: Ground der Antenne, kann aber bei einer normalen Drahtantenne nur auf GND liegen.

Pin 3 - RSSI: Da kommt ein Analog-Signal raus, das angibt, wie gut der Empfang ist. Kann man z.B. an den ADC des AVR's anschließen.
Pin4 - BUSY: Wenn der Transciever gerade beschäftigt ist, dann ist der Ausgang High/1/5V wenn nicht, dann Low/0/ca. 0V. In der BUSY-Zeit darf man keine Daten senden.
Pin5 - DATA OUT: Da kommen die seriellen Daten raus, die der Transciever empfangen hat.
Pin6 - DATA IN: Da kannst Du z.B. über UART des AVR#s Daten hinsenden, die gesendet werden sollen.
Pin7 - HOST RDY: Dieser Eingang ist dafür gut, um dem Transciever zu sagen, dass der angeschlossene Empfänger bereit ist die Daten seriell zu empfangen.
Pin8 - VCC: +5V
Pin9 - GND: GND

Das alles steht auch im datenblatt! :o)

Konnte ich Dir helfen, oder habe ich Dich jetzt falsch verstanden? ;o)

RCO
03.10.2004, 15:50
Ja, genau das meinte ich! Danke!
Nur noch eine Frage zu RF Ground, die Antenne, kommt doch an ANT, also lege ich RF Graund an GND? Und ist also nur bei so richtigen Antennen von nützen oder?
Wie weit sendest du damit ungefähr?

MFg Moritz

Florian
03.10.2004, 15:59
Hi Moritz!
Ja genau, nur bei richtigen Antennen wird RF GND benutzt, ansonsten wird der Pin auf GND gelegt, wobei er bei richtigen Antennen auf GND und an die Antenne gelegt wird.
Naja, derzeit beschränken sich meine Experimente auf mein Zimmer, 3-4 Meter, aber ich habe demnächst mal vor den Sender draußen zu testen.
Überigends kann man die Sendeleistung einstellen, von 1mW bis 10mW!
Ich kann die Module wirklich empfehlen, sind richtig cool! :o)

malius
31.05.2005, 23:23
Hallo,
ich habe auch die EasyRadio Module 2x Transceiver im 896Mhz.
habe uach das Problem wenn ich von ATmega zu PC funke über die Serielle, empfange ich am terminal nicht dasselbe zeichen.
z.b.: schicke ein 'g' von AVR zu Terminal, bekomme aber 'L'.
Woran köntte es liegen.

Danke um hinweise.