Archiv verlassen und diese Seite im Standarddesign anzeigen : Gesendete Daten wieder richtig umwandeln?
Tag zusammen.
Habe mir von Conrad das Funkmodul (130428 - 62) besorg. Nun möchte ich Daten von einem MEGA8 zu einem MEGA32 übertragen. Bevor ich mit dem Funkmodul arbeiten wollte, wollte ich erst mal testen ob ich die Übertragung auch über Kabel hinbekomme. Hier sind meine Programme:
MEGA8 (Sender):
$regfile = "m8def.dat"
$framesize = 24
$swstack = 8
$hwstack = 32
$crystal = 16000000
$baud = 9600
Do
Print "Hi"
Wait 1
Loop
End
MEGA32(Empfänger):
$regfile = "m32def.dat"
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Cls
Dim Test As Byte
Do
Test = Inkey()
Locate 1 , 1
Lcd Test
Loop
End
Jetzt bekomme ich aber auf dem Display immer nur folgende Zahlen raus:
054
052
043
(ständig wechselnd)
Wie schaffe ich es mir die gesendete "1" anzeigen zu lassen?
Und wenn ich einen Text sende ("Hi") wie muss ich das dann machen?
Kann mir da einer helfen?
Mfg Mel
Also, das gute alte Conrad Funkset ...
ist leider ein AM-Set, sprich es wird amplitudenmoduliert
übertragen. Wird nicht gesendet schwingt die Geschichte aus
und die ersten zu übertragenden Zeichen werden Müll.
1 Sekunde (wait 1) ist eine zu lange Pause ... 50ms
sind so in etwa gängig. Oder Du musst ne sog. Präambel
senden um die Dinger einzuschwingen.
Das ist die Eine Seite der Geschichte.
Die Andere ist, dass Du ja Bytes überträgst, keine Zeichen.
Zu Zeichen werden sie erst wenn man sie in einen
String schreibt.
Das musst Du aber auch dem COmpiler mitteilen,
das es sich um einen String handelt,
sprich dim test as string *1
Sonst interpretiert er das Zeichen, dass Du ja in die
Variable schreibst als Wert und gibt Dir auf dem
Display dann den ASCII-Wert des Zeichens aus
http://de.wikipedia.org/wiki/ASCII
wenn ich das als String definiere bekomme ich aber nur komische Zeichen und nicht die gesendete Zahl. Danke wegen dem Tip mit dem Funk, werd ich berucksichtigen wenn meine Kabelübertragung klappt=)
kann es was damit zu tun haben dass der MEGA8 mit 16Mhz extern beschaltet und der MEGA32 die interne Frequenz von 8Mhz benutzt??
Beim MEga32 haste den $crystal und $baud nicht gesetzt ...
Bei so niederen Baudraten sollte es auch mit dem
internen RC gehen, aber um Fehlerquellen auszuschließen
würd ich ihm dennoch nen Quarz gönnen.
Sind nicht so teuer und sind recht nützlich
Ich hab mal an nem Bus runter gemusst bis auf
1200 Baud weil ich den Quarz zu liederlich war
einzutüfteln. Heute mach ich nix mehr ohne ... man lernt
ja dazu :)
Ok alles klar dann werd ich mir mal die Kondensatoren besorgen der Quarz fliegt hier schon rum. Meld mich dann wenns danach geht /bzw. nicht geht. Vielen Dank erst mal
Ach so, glatt übersehen, 9600 Buad sind für das Billig-Funkset auch
u.U. n bissl viel. 2400 oder niedriger werden eher hinkommen ...
muss aber zugeben mit dem Ding schon ne Ewigkeit nix
mehr gemacht zu haben. Probiers aus und wenns nicht recht
will als erste Maßnahme die Baudrate verringern würd ich
empfehlen.
benutze das funkding ja noch gar nicht. bertrage im mom alles noch über nen kabel (RxD und TxD von mega8 und mega32 gekreuzt). kann das was mit dem unterschiedlichen takt zu tun haben? meine programme sind wie folgt:
Sender:
$regfile = "m8def.dat"
$framesize = 24
$swstack = 8
$hwstack = 32
$crystal = 16000000
$baud = 250.000
Do
Print "Hi"
Wait 1
Loop
End
Empfänger:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$baud = 250.000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Dim I As Byte
Do
Cls
I = Inkey()
Lcd Chr(i)
Wait 1
Loop
End
aber ich bekomme nix rein:(
Bai $Baud 250000 ist für den Anfang zum
lernen und Üben definitiv zuviel.
Hast Du auch die GND- der beiden µC
verbunden ... sollte nämlich, damit
gemeinsames Bezugspotential.
Beim 2. µC vermisse ich nochimmer
die Angabe der Taktfrequenz.
Auch wenn kein Quarz angeschlossen
ist muss dem Compiler mitgeteilt
werden wie schnell die Kiste läuft.
Von Werk aus laufen die M32 auf
$crystal=1000000
Für eine Baudratenberechnung
brauchts immer auch die Geschwindigkeit
des Controllers sonst wird das nix.
Ja das mit den 25000 Baut war nur ein versuch wollte bei 9600 bleiben. Gut sobald ich zuhause bin werd ich das programm mal ändern. mal schauen vllt klappts ja dann. danke schon mal
Sry aber ich bekomm die ******** nicht zum laufen. Ich empfange am MEGA32 immer nur Müll. Kann mir einer mal sagen ob das Programm so überhaupt richtig ist mit Print und Input??? Muss man da nicht was mit Start- und Stoppbits beachten?
Sry Jungs ich bekomms echt nicht hin... kann mir einer vllt. einen kleinen Code für Sender und Empfänger schreiben?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.