- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 23

Thema: serial.println blockiert Stepper

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    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..

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    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 - - -

    Zitat Zitat von Rabenauge Beitrag anzeigen
    So schnell es geht?
    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.
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    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..

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    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!

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.11.2003
    Beiträge
    813
    ???

    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 ....

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Nein, die Einstellung bleibt erhalten. aber noch mal die Frage: was meinst du mit Konsole?

    Gruß

    fredyxx

    - - - Aktualisiert - - -

    Zitat Zitat von Rabenauge Beitrag anzeigen
    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;
    Was meinst du mit alles läuft?

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von nikolaus10 Beitrag anzeigen
    Die Methode ist mir neu.

    Wird dann nich jedesmal wenn die serielle Schnittstelle angesprochen wird
    die Geschwindigkeit veraendert ?
    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?

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von Peter(TOO) Beitrag anzeigen

    Der Fehler liegt nun darin, dass er am PC eine andere Rate einstellt, aber nicht in seinem Programm.

    MfG Peter(TOO)
    Das ist mir nicht klar. Ich stelle doch am PC und mit dem Befehl " Serial.begin (9600);" im Programm die Baudrate ein. Wo kann/muss ich die denn sonst noch verstellen?

    Ist mit Konsole das DOS-Fenster gemeint?

    Gruß

    fredyx

Ähnliche Themen

  1. Servomotor blockiert - was geschieht?
    Von robkpc im Forum Motoren
    Antworten: 11
    Letzter Beitrag: 18.03.2014, 20:43
  2. Schrittmotor brummt und blockiert
    Von frankensteins-freund im Forum Motoren
    Antworten: 16
    Letzter Beitrag: 07.03.2012, 19:23
  3. Schrittmotor zuckt und blockiert
    Von chaosmaker im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 29.05.2007, 12:34
  4. Fusing blockiert Avr !!!!!
    Von samba971 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 12
    Letzter Beitrag: 10.09.2005, 00:15
  5. Stepper-Endstufe "Econo Stepper Motor Driver"
    Von KüSä im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 04.10.2004, 15:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen