PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Funk



hiasi
07.12.2005, 08:57
Hallo Leute!

Ich habe folgendes Problem: Ich habe vor ein paar Tagen ein RN-Funk Modul mit einem EasyRadio-Funkmodul bestellt und zusammengebaut. Nun möchte ich eine Funkübertragung von PC zu Roboter herstellen. Wenn ich die Funkmodule von PC zu PC senden lasse funktionieren sie einwandfrei, aber das Problem ist das ich mit dem Roboter nichts über das Funkmodul empfange (senden hab ich noch nicht getestet, aber ich glaub das geht folgedessen auch nicht). Ich verwende zum empfangen den TTL-Pegel am RN-Funk Modul und in der Beschreibung steht man muss dazu den IC1 (Max3232) ausbauen. Da ich keine Übertragung zusammenbringe obwohl das Programm korrekt funktioniert (denke ich zumindest) habe ich den Verdacht das ein anderer IC statt dem max3232 hineingehört.

Falls irgendjemand mehr darüber weiß, nicht zögern mir zu schreiben

Danke im Voraus

hiasi

stegr
07.12.2005, 19:08
Ohne mir den Schaltplan vom RN-Funk-Modul angeschaut zu haben, würde ich mal folgendes sagen:
Der MAX3232 ist ein Leitungstreiber für die serielle Schnittstelle, d.h. der macht aus dem TTL-Pegel, den er bekommt, +-15V, die für RS232 typisch sind und andersrum macht er auf der Empfangsseite aus den +-15V, die er von der RS232 aus reinbekommt wieder TTL.
Wenn du jetzt den IC ganz rausnimmst, aber das Kabel an der seriellen angeschlossen hast, geht die andere Seite in die Luft ;)
Du bräuchtest also noch Brücken von RX-in nach RX-out und TX-in nach TX-out. Welche Pins das sind, findest du entweder im Schaltplan vom RN-Funk oder im Datenblatt vom MAX3232 - was dir lieber ist.

Denke das müsste dann so gehen...

MfG
Stefan

hiasi
07.12.2005, 19:17
Also hier ist einmal das Datenblatt:

http://www.robotikhardware.de/download/rnfunk1.pdf

Auf der Seite des PCs bleibt der MAX3232 in der Platine. Nur auf der Roboterseite, dort wo ich den TTL-Pegel verwende, muss man ihn angeblich entfernen. Aus dem Schaltplan, der ebenfalls beim Datenblatt dabei ist, sieht man das das Funkmodul zwar mit dem TTL-Anschluss verbunden ist, aber dann hab ich mich gefrage wo die zwei Leitungen die eigentlich zum MAX3232 hinführen hingehn. Die gehn momentan ins leere :(

stegr
07.12.2005, 19:31
Also - Frank hat da doch ein bissle mehr mitgedacht, als ich einfach so mal mit gerechnet hatte *g*
Die Brücken brauchste nicht, weil du ja schon vor dem MAX auf die 4-polige Stiftleiste rausgehst, die schon TTL-Pegel hat.

Die Leitungen R1OUT und T1IN gehen einmal (geschützt) auf die TTL-Leiste und dann an dein Funkmodul (auf dem RN-Funk).
Auf der PC-Seite brauchst du natürlich den RS3232, weil du da ja keinen TTL-Pegel hast.
Was du mal ausprobieren könntest, wäre, dass du nen MAX nimmst und deinen Roboter somit mal direkt mittels Kabel an den Rechner anschließt.
Dafür kannste sogar den MAX misbrauchen, der aufm RN-Funk drauf ist - nur vorher das Funkmodul runtermachen, damit das nicht kaputt geht oder stört. Der Robo kommt dann an die 4-polige Stiftleiste, dein Rechner an die 3-polige. Wenn das geht, ist alles sehr sehr komisch...

Btw. zufällig RX und TX vertauscht - ich weiss, dass das sehr trivial ist, aber die einfachsten Sachen sind auch die häufigsten Fehler... ;)

MfG
Stefan

hiasi
07.12.2005, 19:48
Also wenn ich das jetzt richtig verstanden habe kann man das Modul auch als Pegelwandler "missbrauchen".

Das ich vielleicht RX und TX vertauscht habe glaub ich zwar nicht, aber ich werde mal sicherheitshalber die Schaltung nochmals überprüfen. Leider kann ich den Roboter erst wieder frühestens am Freitag "bearbeiten" da er noch in der Schule ist (ist ja eine Diplomarbeit)

aber danke für diese Vorschläge schon mal :)

hiasi
08.12.2005, 10:36
Vielleicht könnte es ja auch an einem Programmfehler liegen, ich hab mit interrupt praktisch keine Erfahrung. Hier ist mal der Interrupt der das auslösen soll:


USART_RXC:
call lcd_Intgestartet

in temp, UDR

cpi temp, 'w' ;vergleicht temp mit w
breq sub1 ;wenn gleich wechsle zu sub1

cpi temp, 's' ;vergleicht temp mit s
breq sub2 ;wenn gleich wechsle zu sub2

cpi temp, 'a' ;vergleiche temp mit a
breq sub3 ;wenn gleich wechsle zu sub3

cpi temp, 'd' ;vergleiche temp mit d
breq sub4 ;wenn gleich wechsle zu sub4

reti ;wenn keine übereinstimmung --> Interrupt beeden und Programm fortsetzen

sub1:
call lcd_vor ;gibt auf LCD vor aus

call delay_5s ;wartet 5sec
reti ;beendet Interrupt

sub2:
call lcd_back ;gibt auf LCD zurück aus

call delay_5s ;wartet 5sec
reti ;beendet Interrupt

sub3:
call lcd_rechts ;gibt auf LCD rechts aus

call delay_5s ;wartet 5sec
reti ;beendet Interrupt

sub4:
call lcd_links ;gibt auf LCD links aus

call delay_5s ;wartet 5sec
reti ;beendet Interrupt

Ich glaube allerdings schon das das Funktioniert. Ich habe auch die UART initialisiert (Baudrate einstellen,...)

EDIT:

JUHU, das Programm funzt

Es war wirklich nur RX und TX vertauscht, die einfachsten Fehler findet man wirklich erst am ende :)

danke für die Hilfe

hiasi