Werbung
So schnell es geht?
Meine Güte- die IDE macht bis mindestens 115200 Baud mit-wieso rödelst du in nem zeitkritischen Programm dann mit 9600 rum?
Und zeitkritisch ist es, da der run()-Aufruf so oft wie möglich benutzt werden sollte. Diese Verrenkung (sowas löst man normal über nen Timer) wurde nur gemacht, um keinen Timer zu belegen. Aber besser wirds davon dann nich, im Gegenteil: _das_ kann nur funktionieren, wenn du das Programm wirklich schnell laufen lässt.
Hm, eventuell könnte man da nachbessern: die Timer-Bibliothek benutzen, um sicher zu stellen, dass run() zyklisch aufgerufen wird.
Kannst auch die Gegenprobe machen: bau mal in die Hauptschleife ein delay() ein, und schau, bis zu welcher Verzögerung es _noch_ funktioniert.
Dann weisst du auch, wie schnell die Hauptschleife abgearbeitet werden muss.
Wenn es _gar_ nicht geht, überleg dir eine andere Strategie:
Beispielsweise ist es recht unsinnig, andauernd "ok" zu senden. Viel Zeit kannst du sparen, wenn du, wenns läuft, gar nix sendest, und nur, wenn irgendwas _nicht_ klappt, ne Debug-Meldung schickst.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Hallo,
wenn ich im Gerätemanager und im Serial.begin -Befehl auf 19200 stelle, klappt das Hochladen immer sofort.
Bei meinem Stepperprogramm läuf das Programm selber aber nicht mehr. Auch nicht nach Arduino - und PC Neustart.
Mit dem Blinkprogramm läuft zwar das Programm (PIN 13 blinkt), aber wenn ich mir den PIN im Seriellen Monitor ansehe,
erscheint dort statt einer 0 ein :ø (Dopppelpunkt mit Durchschnittszeichen) und für eine 1 ein Quadrat mit einem
seltsamen kleinen b und p übereinander geschrieben.
Also was stimmt da nicht?
Gruß
fredyxx
- - - Aktualisiert - - -
Klappt auch bei einer Mikrosekunde und 9600 nicht mehr.
i.O. bei 57600 bis 700 Mikro, aber im Monitor erscheinen die falschen Zeichen
i.O. bei 128000 bis 1400 Mikro darüber wird der Stepper lauter, aber im Monitor erscheinen die falschen Zeichen
dein 2. Satz ist wohl der richtige Tipp. Wo kann ich was über die Debug-Meldung finden?
Gruß
fredyxx
Du weisst schon, dass du in der Konsole die richtige Baudrate auch einstellen musst?
Unten, rechts glaub ich...
Und bitte: nimm nicht irgendwelche frei erfundenen Geschwindigkeiten (obwohl das theoretisch auch funktionieren sollte), schau unten in der seriellen Konsole, welche voreingestellten es gibt, die sollten auch wirklich gehn).
Den Test mit dem delay() meinte ich natürlich so, dass du die serielle ausgabe weg lässt dabei, sonst hast du ja zwei Verzögerungen (das delay() und die Ausgabe).
Ne Debug-Meldung, die schon fertig ist, wird es nich geben, die musst du dir schon selbst machen.
Beispielsweise so:
if(alles läuft)
{
debug=0;
}
if(debug != 0)
{
serial.println("wir haben Probleme!");
debug=1;
So wird immer dann ne Meldung abgeschickt, wenn allesLäuft false liefert, ansonsten einfach- nichts.
Geändert von Rabenauge (03.05.2016 um 07:28 Uhr)
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Was meinst du mit Konsole?
Ich stelle die Geschwindigkeiten über den Gerätemanager im Treiber (Eigenschaften >> Anschlusseinstellungen) der USB-SS ein (WIN10). Das scheint ja auch zu funktionieren, denn das Hochladen klapt ja immer ohne Probleme.
Gruß
fredyxx
- - - Aktualisiert - - -
Und dort sind auch die möglichen Geschwindigkeiten vorgegeben. Also nicht irgendwelche!
???
Die Methode ist mir neu.
Wird dann nicht jedesmal wenn die serielle Schnittstelle angesprochen wird
die Geschwindigkeit veraendert ?
73
Geändert von nikolaus10 (09.05.2016 um 14:29 Uhr)
Ich bin keine Signatur, ich putz hier nur ....
Hallo,
Seit je her kann man im Windows-Treiber die Default-Baudrate, und anderen Parameter, einstellen.
Wenn man also COMx: aufmacht, wird diese mit diesen Werten initialisiert und das Programm muss dies nicht tun.
Unter DOS kann man mit
COPY CON: COM1:
Alles von der Tastatur zur COM1: Schnittstelle senden. Schnittstellen-Parameter sind dann entweder das, was im Gerätetreiber eingestellt ist oder was mit
MODE .....
eingestellt wurde.
Normalerweise setzt aber heute jedes Programm die Parameter selbst.
Der Download funktioniert, weil der Loader die Schnittstelle mit seinen Werten initialisiert.
Der Fehler liegt nun darin, dass er am PC eine andere Rate einstellt, aber nicht in seinem Programm.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Lesezeichen