-         
+ Antworten
Ergebnis 1 bis 10 von 10

Thema: ER400TRS- bzw. RF04/400-Funkmodul -> kleines Problem

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624

    ER400TRS- bzw. RF04/400-Funkmodul -> kleines Problem

    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:
    Code:
    .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(

    Code:
    <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)

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Kann mir denn niemand helfen?

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Ich habe das problem gelöst!

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

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    28
    Beiträge
    557
    Könntest du vllt beschreiben, worin der Fehler lag und wie du es gelöst hast?

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    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:
    Code:
    <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)

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    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

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    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)

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    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

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    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)

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2005
    Beiträge
    17
    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.

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •