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