Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehle über RS232 interpretieren
Hallo Leute,
ich möchte mit einem VB-Programm Befehlsstrings an meinen AT90S4433 senden, welcher dieser dann interpretieren soll.
Bin eigentlich recht weit.
Ich frage die uC-RS232-Schnittstelle per Interrupt ab, aber in der Zeit in der der uC den String interpretieren soll, gehen Zeichen verloren, da der PC einfach weiter sendet.
Eine beidseitige Flusskontrolle ist gescheitert, aber ich weiß nicht genau warum.
Hat jemand nen kurzen Codeschnippsel in BASCOM bzw. VB?
Wäre nett,
Gruß,
Chris
MrNiemand
29.04.2004, 12:19
da wär ich auch dran interessiert also falls du schon irgendwas neues weist melde dich plz
Dino Dieter
29.04.2004, 15:45
Hallo Sonic
Schau dir doch mal CONFIG SERIALIN an. Sollte dich weiter bringen.
Ansonsten muß man das inder INT. Routine von Hand programmieren.
Wie schnell und wieviele Bytes willst du denn übertragen. RS232 ist doch für einen AVR eine recht langsame Sache.
MFG
Dieter
Hallo Sonic
Schau dir doch mal CONFIG SERIALIN an. Sollte dich weiter bringen.
Ne, bringt mich nicht weiter... ich will (fast) das gesamte EEPROM mit Daten füllen. So nen großen Puffer will ich da nicht nutzen müssen...
Das einzige was mich weiterbringt ist das Senden der Daten am PC zu verlangsamen. Idealerweise indem der wartet bis der uC sein OK gibt.
(Mit dem abarbeiten des Befehls fertig ist).
Im Moment mach ich das mit einem Timer. Bei 10ms/pro Befehl läuft das Ganze einwandfrei.
Nur eine Flusskontrolle bring ich nicht zustande.
VB unterscheidet nicht nicht zwischen Senden und Empfangen.
OnComm löst bei jeglichem Datenverkehr aus.
Ansonsten muß man das inder INT. Routine von Hand programmieren.
Wie schnell und wieviele Bytes willst du denn übertragen. RS232 ist doch für einen AVR eine recht langsame Sache.
Das Problem liegt nicht am AVR sondern bei VB.
Übertragungsgeschwindigkeit bei 19200Baud...
Tschuldigung, vergessen mich einzuloggen
Dino Dieter
29.04.2004, 20:39
Hallo
Aber du solltest doch in VB CTS oder RTS abfagen können. Die kannst du doch bei AVR auf einen Pin legen und in der INT bedienen.
Ansonsten mußt du vielleicht eine andere DLL nehmen die das kann. Davon gibt es doch genug. O:)
MFG
Dieter
Hallo
Aber du solltest doch in VB CTS oder RTS abfagen können. Die kannst du doch bei AVR auf einen Pin legen und in der INT bedienen.
Jo, schon. Allerdings hab ich die UART vom AVR ohne CTS/RTS-Leitung angeschlossen. Also nur TXD/RXD. Mein Board funktioniert jetzt endlich und eigentlich hab ich nicht schon wieder Lust ne neue Platine zu klempnern ;-)
ABER ob der uC nun nen Pin setzt oder ob er ein OK sendet sollte doch eigentlich egal sein.
Das Problem liegt wirklich auf der VB-Seite:
In VB+MSCOMM32.OCX wird bei Aktivität der RS232 das OnComm-Event ausgelöst. Dabei unterscheidet VB aber nicht zwischen Senden und Empfangen. Also kann ich das OnComm-Event vergessen.
Um den Zustand des uC abzufragen MUSS ich entweder ne while schleife solange ausführen bis "ok" empfangen wurde, oder ein Event auslösen wenn "ok" empfangen wird
Die Schleife ist sch.... weil der PC in der Zeit nix anderes mehr macht.
Mit Events kenn ich mich überhaupt noch nicht aus.
Deswegen wäre es ja cool wenn jemand ein passendes VB-Beispiel hätte.
Ansonsten mußt du vielleicht eine andere DLL nehmen die das kann. Davon gibt es doch genug. O:)
MFG
Dieter
Wirklich? Sag mal welche...
Gruß, Sonic
Dino Dieter
30.04.2004, 07:36
Hallo Sonic
Schau mal hier.
http://www.b-kainka.de/msrwin.htm
Habe die RS232 mal mit Excel angesprochen, ist zwar schon was her, ging aber ohne Probleme. RSAPI.dll
MFG
Dieter
Hallo Sonic,
hast Du dieses Problem noch ?
Gruss
Joachim
Hallo Sonic,
hast Du dieses Problem noch ?
Gruss
Joachim
Ja, aber ich hab schon längere Teit nicht mehr drann weiter gemacht weil ich die ganze Zeit gebüffelt habt ;-(
Gruß, Sonic
Man könnte den AVR einfach jedes byte echoen lassen, dass er ins eeprom geschrieben hat, sobald er fertig ist. in VB muss man dann halt warten, bis das Zeichen da ist (das normale MSComm OCX hat ein (einziges) Event, welches alle möglichen Dinge singalisiert (man kann das irgendwie abfragen)).
Man hat dann auch gleich die Sache mit der Kontrolle auf Übertragungsfehler erledigt.
Man könnte den AVR einfach jedes byte echoen lassen, dass er ins eeprom geschrieben hat, sobald er fertig ist. in VB muss man dann halt warten, bis das Zeichen da ist (das normale MSComm OCX hat ein (einziges) Event, welches alle möglichen Dinge singalisiert (man kann das irgendwie abfragen)).
Man hat dann auch gleich die Sache mit der Kontrolle auf Übertragungsfehler erledigt.
Ich habs jetzt so gelöst das der AVR die ganze Arbeit macht. Bis VB hab ichs noch nicht durchprobiert aber per Terminal funktioniert es wunderbar.
Das Problem war eigentlich das ich mich in Bascom nicht besonders gut ausgekannt habe und es deswegen völlig verquere Zahlen erhalten hat ,-(
Gruß, Sonic
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.