PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gesendete Daten wieder richtig umwandeln?



MelMan
30.06.2008, 17:07
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

Vitis
30.06.2008, 17:59
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

MelMan
30.06.2008, 18:29
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=)

MelMan
30.06.2008, 20:28
kann es was damit zu tun haben dass der MEGA8 mit 16Mhz extern beschaltet und der MEGA32 die interne Frequenz von 8Mhz benutzt??

Vitis
30.06.2008, 22:51
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 :)

MelMan
01.07.2008, 07:23
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

Vitis
01.07.2008, 13:23
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.

MelMan
01.07.2008, 20:15
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:(

Vitis
01.07.2008, 21:57
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.

MelMan
02.07.2008, 07:51
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

MelMan
02.07.2008, 16:39
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?

MelMan
07.07.2008, 07:37
Sry Jungs ich bekomms echt nicht hin... kann mir einer vllt. einen kleinen Code für Sender und Empfänger schreiben?