Moin,
was macht der M32 sonst so in der Zeit,
evtl. hält ihn etwas ab vom Zeichen empfangen ?
Irgendwelche Interrupts aktiv ?
Nabend,
ich schicke mit einem Delphi Programm größere Datenmengen an meinen Mega32, den ich mit Bascom programmiert habe und der die Zahlen mit dem Input() Befehl engegen nimmt.
Dabei kommt es öfters zu Übertragungsfehlern (anscheind je länger das Gerät in Betrieb ist, desto häufiger). Die Daten bestehen aus mehreren 4 stelligen Integer Zahlen. Bei Übertragungsfehlern werden dann manchmal ein oder zwei Stellen gar nicht übertragen, wo dran kann das liegen?
Ich habe es mit einer Übertragungsgeschwindigkeit von 9600 Baud und 19200 Baud probiert, aber ohne Unterschiede.
Kann das an meinem USB -> RS232 konverter liegen, oder ist sowas "normal"?
Wie kann ich diese Übertragungsfehler verhindern, ohne alles doppelt und dreifach übertragen zu müssen?
Wär toll wenn mir da jemand einen Tipp geben könnte, danke
Moin,
was macht der M32 sonst so in der Zeit,
evtl. hält ihn etwas ab vom Zeichen empfangen ?
Irgendwelche Interrupts aktiv ?
hmmm, ich hab einen Servo angeschlossen der ja mit einem PWM Signal angesteuert wird. Da wird doch auch ein Interrupt benutzt, das wär natürlich übel
man, das war natürlich von mir. Werd nachher dann mal ausprobieren, ob das was ändert wenn ich den weg nehme.
Wenn Servo und UART sich blockieren könnte natürlich auch erklären, warum der Servo manchmal so leichte zuckungen hat.
Hallo Static,
ich wäre sehr an Deinem Quellcode interessiert, weil ich auch einen Versuch unternehmen wollte, einen Mega 8 mit Delphi über die RS232 anzusprechen.
Darf ich Dich bitten, Dein Delphi-Programm und den Bascom-Code mal hier zu posten? Das würde mir sicher zu einem leichteren Start verhelfen!
Besten Dank und viele Grüße
Torsten
Ich hab mal alles aus meinem Delphi Programm rausgebaut, so das es im Prinzip nur noch ein kleines Terminal Programm ist (ich wollte nicht meinen ganzen Code posten, das ist mir zu peinlich, außerdem hätte er dir ja wahrscheinlich nicht viel genutzt)
Das Programm ist geschrieben mit Delphi 2005 und benötigt die ComPort Libary http://sourceforge.net/projects/comport/
um kompiliert werden zu können.
Wenn du es startest musst du zuerst auf den SetCom Button klicken und deinen Comport einstellen. Danach klickst du auf Open, womit der ComPort geöffnet wird.
In dem Textfeld über Senden kann man dann etwas eingeben und dann auf Senden drücken, worauf hin die Eingabe über den Comport geschickt wird. Alle gesendeten und empfangenen Daten werden in dem großen Textfeld angezeigt.
Der Clear Button dient dazu das Textfeld zu leeren, da ich noch keine Möglichkeit gefunden habe (bzw. noch nicht lange genug gesucht habe) es hinzukriegen, dass das Feld automatisch weiter runter scrollt wenn es voll ist...
Das Bascom Programm würde dir glaub ich nicht viel nutzen. Das ist eigentlich ganz einfach. Man kann mit Input(var) eine Eingabe vom RS232 lesen. Der µC wartet dann so lange bis etwas eingegeben wird und speichert dies dann in die Variable.
Ich hoffe ich konnte helfen
Hallo Static,
vielen Dank, damit hast Du mir in jedem Fall weitergeholfen!
Viele Grüße
Torsten
Zitat von Static
Ich würde mal sagen du müßtest da eine Flussteuerung "wie man das auf Deutsch nennt " einbauen. Also Xon/Xoff oder per Hardware.
Wenn dein Programm in einer Interruptroutine springt, muss du dem PC mit Xoff sagen, daß er keine Daten senden soll weil der Empfänger nicht bereit ist. Das mußt Du auch immer machen wenn der Buffer voll ist.
Ich weis nicht wie das in Bascom zu machen ist, kenne mich da nicht so aus.
Edit:
Wenn nicht versuche mit der bautrate weiter runter zugehen. So hat der Controller mehr Zeit .
hallo ich habe so etwas ähnliches auch mal ausprobiert:
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200
Dim I As Byte
Do
If Usr.rxc = 1 Then
I = Udr
Select Case I
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If
Loop
End
damit kannste denn auch strings einlesen, während andere dinge gemacht werden, natürlich in einer interupptroutine.
mfg pebisoft
vielen Dank für eure Tips, ich werd dann mal versuchen eine anständige Flussteuerung ein zu bauen.
Lesezeichen