Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Funk
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
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
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 :(
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
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 :)
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.