Du solltest schon etwas genauer sagen, WAS nicht geht, bzw. wieweit du gekommen bist.
Ev. Code posten
Hallo,
ich habe eine Art von messgerät, das ich über die serielle schnittstelle ansprechen kann um werte zu erhalten.
dazu benutze ich einen mega 8 und einen max232 die bautrate muss bei 19200 liegen.
jetzt muss ich mit Bascom ein prog schreiben, das mir ein packet mit insegsamt 10 bytes sendet:
byte1,2,3,4,5,6,7,8,9,10:
002 050 000 032 032 032 032 032 037 135
und ein packet von 8 bytes wieder empfangt:
byte1,2,3,4,5,6,7,8:
000 006 002 002 002 000 105 115
dabei soll jedes empfangene byte in einer variablen hinterlegt werden, um sie danach zu auszuwerten.
wenn z.b. das 2. empfangene byte 002 enthält, soll auf dem lcd 'ok' angezeigt werden.
ich hoffe sehr, das mir jemand dabei helfen kann. alle meine versuche sind bis jetzt gescheitert.
gruß
xeus
Du solltest schon etwas genauer sagen, WAS nicht geht, bzw. wieweit du gekommen bist.
Ev. Code posten
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
mein erstes prob ist, das ich nicht weis in welchem still ich das ganze senden soll. bis jetzt hab ich immer nur zeichen und keine bytes wie oben beschrieben gesendet.
hier der bisherige code
so bekomm ich halt nur einen string hin und nicht die bytes.Code:do print "002 050 000 032 032 032 032 032 037 135" loop
angenommen ich würd es schaffen es als bytes zu senden:
bytes gesendet
mc soll auf antwort warten
ich hab echt keinen planCode:do if usr.rxc=1 I=udr select case case ' was jetzt empfangen wird, soll auf dem lcd erscheinen??? lcd ??? end select end if loop
Man kann das folgendermaßen senden
do
print chr(32); chr(32); chr(32); chr(37); chr(135) ;
print chr(32); chr(32); chr(32); chr(37); chr(135) ;
loop
(auf zwei Zeilen aufgeteilt, damit übersichtlich bleibt)
Es werden so bei jedem Loop zehn Byte gesendet
ABER: das ist weder elegant noch gut brauchbar.
Mach lieber ein Array
Beim empfang geht's umgekehrt:Code:DIM Sendepaket(10) as byte 'erstmal die Daten ins Paket reinschreiben Sendepaket(1) = 2 Sendepaket(2) = 50 Sendepaket(3) = 0 Sendepaket(4) = 32 Sendepaket(5) = 32 Sendepaket(6) = 32 Sendepaket(7) = 32 Sendepaket(8) = 32 Sendepaket(9) = 37 Sendepaket(10) = 135 'und jetz komplett alle 10 Byte senden Do PRINTBIN Sendepaket(1); 10 Loop
Schau malCode:DIM Sendepaket(10) as byte DO ' zehn byte empfangen INPUTBIN Sendepaket(1), 10 if Sendepaket(2) = 2 then LCD "OK" LOOP
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
super, das senden funzt schon, allerdings nur mit einer baudrate von 4800.
um das gerät aber ansprechen zukönnen benötige ich unbedingt 19200.
was kann ich in diesem fall tun?
und nochmals danke für die rasche hilfe!
ganz einfach:
$BAUD = 19200
Gruß
Christopher
ha, ha, ha
das hab ich doch gemacht. nur an der empfangsseite kommt es verfälscht an.
ja, ich hab auch am empfangsterminal 19200 eingestellt
Ja, das ist wahr, das hilft enorm
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Mein Problem, hab ich aber damit noch nicht gelöst
Hallo
Waher bekommt der AVR den seinen Takt
Intern oder extern ?
Wie hoch ?
MFG
Dieter
Lesezeichen