Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten von Software UART nach Hardware UART weiterleiten
Hallo
Ich hab volgendes Problem:
Ich hab einen Atmega32 der einen Hardware Uart hat mit einem max232 und einen Sofware Uart der an einem speziellem RX-Funkmodul hängt.
mit dem Atmega stelle ich die Frequenzen ein und sollte nach den einstellungen die Datenen 1:1 weiterleiten an den Harware Uart. Alles klappt so weit nur das 1:1 weiterleiten der der Empfangenen Daten will nicht so recht.
Hat jemand einen Tip oder anregung wie ich das lösen könnte?
Eigentlich müsstest du ja nur jedes mit der Soft-Uart empfangene Byte mit "print" über der HW- ausgeben.
Fürchte, du hast da irgendeinen Knopf in dein Programm eingebaut.
Am besten, du zeigst deinen Code mal her.
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 10
$framesize = 60
$baud = 2400
Open "comc.7:2400,8,n,1" For Output As #1
Open "comc.0:2400,8,n,1" For Input As #2
Config Lcd = 16 * 2 'Lcd
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.0 , Rs = Porta.0
Config Lcdbus = 4 'Lcd Bus
Cursor Off
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc 'ADC Gonfig
Dim Daten As Byte
Do
Daten = Inkey(#2)
Print Daten
Loop
Irgendwie sehen die Daten dann ganz anders aus als wenn ich sie direkt empfange.
Habe auch schon waitkey ausprobiert mit dem selben Ergebnis.
da ist der fehler:
Daten = Inkey(#2)
Print Daten
print daten interpretiert bascom als gebe den zahlenwert des
empfangenen byte-zeichens aus.
printbin löst die chauce oder print chr(daten); geht auch.
Also daran hat es nicht gelegen. hab die Daten mal im Terminal Programm
angeschaut und die Originalen Daten bestehen aus 17 komischen Zeichen (Strich,Strich,Strich,Strich,Gesicht,o mit Dach,@,A mit o obendrauf,und 8xHäuschen) die es auf keiner Tastatur gibt.
Hab die ganzen empfangenen Bytes schon in eien String gepakt usw.usw. Ich kann die Daten einfach nicht so umwandeln dass es annähernd ähnliche zeichen gibt.
Weiss jemand wie man zu solchen Zeichen kommt?
dann stimmt die baudrate nicht oder der baudratenfehler ist zu groß
ach so, inkey kann auch 0 sein wenn nix eingeht,
der Befehl der Wahl währe waitkey. is halt nur doof, dass
der Programmablauf dann dort steht.
Ich habs mit softuart mal so gelöst,
dass ich die auf nen Interrupteingang (INT0) gelegt hab
und hab dann so interruptbasierend die softuart
reinbekommen. Und halt wie gesagt, Baudrate
prüfen, baudratenquarz und fuse für clocksource
auf ext crystal
Statt Print Daten solltest Du unbedingt ein Print #1,Daten machen, damit Bascom auch weiss, wohint der Output gehen soll.
Der Syntax für den Print-Befehl lautet
PRINT [#channel , ] var ; " constant"
Peter
Also hab die daten mal angeschaut und es wird volgendes in Hex gesendet:
16 16 16 16 02 E2 40 87 00 00 00 00 7F 7F 7F 7F 7F 7F 7F 7F 2F AD
Die Markierten Zahlen ändern sich nie.
nun Probierte ich es einfach mal so:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 1200
Open "comc.0:1200,8,n,1" For Input As #2
Dim Daten0 As Byte
Dim Daten1 As Byte
Dim Daten2 As Byte
Dim Daten3 As Byte
Dim Daten4 As Byte
Dim Daten5 As Byte
Dim Daten6 As Byte
Dim Daten7 As Byte
Dim Daten8 As Byte
Dim Daten9 As Byte
Dim Daten10 As Byte
Dim Daten11 As Byte
Dim Daten12 As Byte
Dim Daten13 As Byte
Dim Daten14 As Byte
Dim Daten15 As Byte
Dim Daten16 As Byte
Dim Daten17 As Byte
Dim Daten18 As Byte
Dim Daten19 As Byte
Dim Daten20 As Byte
Dim Daten21 As Byte
Dim Daten22 As Byte
Dim Daten23 As Byte
Do
Cls
Daten0 = Inkey(#2)
If Daten0 = 2 Then
Daten1 = Waitkey(#2)
Daten2 = Waitkey(#2)
Daten3 = Waitkey(#2)
Daten4 = Waitkey(#2)
Daten5 = Waitkey(#2)
Daten6 = Waitkey(#2)
Daten7 = Waitkey(#2)
Daten8 = Waitkey(#2)
Daten9 = Waitkey(#2)
Daten10 = Waitkey(#2)
Daten11 = Waitkey(#2)
Daten12 = Waitkey(#2)
Daten13 = Waitkey(#2)
Daten14 = Waitkey(#2)
Daten15 = Waitkey(#2)
Daten16 = Waitkey(#2)
Daten17 = Waitkey(#2)
Daten18 = Waitkey(#2)
Daten19 = Waitkey(#2)
Daten20 = Waitkey(#2)
Daten21 = Waitkey(#2)
Daten22 = Waitkey(#2)
Daten23 = Waitkey(#2)
'usw....
Printbin Daten1 ; Daten2 ; Daten3 ; Daten4 ; Daten5 ; Daten6 'usw.....
End If
Loop
Dies klappt zu 50% einzelne Zahlen in der Mitte stimmen einfach nicht
](*,)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.