- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 45

Thema: UART Interrupt und Time kommen sich in die Quere???

  1. #21
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Du, werd' das abend zu Hause einfach mal probieren.
    Sag mir kurz, was ich eingeben muß
    "&s1NNN|"
    & start
    | end
    s Kennzeichen
    1 servonummer 0-9
    NNN eine Position

    stimmt das ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    ja zB "s1001" heißt, dass er Servo 1 zur Position 001 also 1 bewegen soll. Startzeichen ist "&", Stopzeichen ist "!".
    Danke!

  3. #23
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    hallo, spät, aber doch !
    Leider bin ich in der Vorweihnachtszeit nicht Herr meiner selbst, tut leid.

    Anbei gezippt das Projekt. Vorsicht: ich hab mega32 mit 8 MHZ also ev. ausbessern.

    Das tut jetzt, was es soll.

    Damit ich was sehen kann, hab ich ein paar Terminal steuerungen eingebaut, du mußt etweder dein terminal auf VT100-Mode einstellen oder das Zeugs rauslöschen.
    Ein paar sachen hab ich hin- und hergeschoben, aber du solltest dein Programm noch erkennen können
    Angehängte Dateien Angehängte Dateien
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Hi,
    ich hab auch atmega32 und 8MHz also sollte das schon stimmen. Ich hab im Makefile mal meinen Programmer auf stk200 angepasst und /dev/parport0 statt com1 angegeben. Man kann es auch hochlagen auf den Controller. Das ganze Programm funktioniert auch wunderbar, solange man kein Terminal anschaltet. Wenn ich es anhabe springen die Servopositionen ab und zu mal hin und her. Eingaben von mir haben überhaupt keine Auswirkung. Was soll eigentlich der Spaß mit dem clear screen und terminal cursor? Und was ist VT100? Vielleicht liegts ja daran.

    mfg
    jagdfalke

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ahh, ich musste das Terminal auf ANSI stellen. Weiß zwar nicht warum aber es geht jetzt. Nur ein Problem gibts noch: Die Servos bewegen sich jetzt nur seeehr langsam. Hängt das mit den vielen Zeichen zusammen, die z.B. für dieses clear screen gesendet werden müssen? Hab schon den Timer auf CPU-Takt gesetzt, hat aber auch nicht viel geholfen. Man könnte doch die Baud-Rate erhöhen oder? Aber da spielt der Servotreiber wieder nicht mit
    Naja, jetzt hab ich ja schonmal was vorzeigbares. Danke für die Hilfe !

    WOW, hab grad noch was bemerkt: Wärend ich Zeichen sende, setzen die Servos machmal aus. Also die brechen für ne 10tel Sekunde komplett zusammen und sind dann wieder auf der gewünschten Position. Kann es sein, dass sich der CoController mit dem Servotreiber kurz aufhängt und sich selber ein RESET gibt?

    mfg
    jagdfalke

  6. #26
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von jagdfalke
    Die Servos bewegen sich jetzt nur seeehr langsam.
    Während ich Zeichen sende, setzen die Servos machmal aus.
    Kann es sein, dass sich der CoController mit dem Servotreiber kurz aufhängt und sich selber ein RESET gibt?
    Der CoController RNS1 od. RNSX macht die Servosteuerung selbstätig und Interruptgesteuert. Solche Effekte sind da eher nicht möglich.
    Wenn sich die Servos zu langsam bewegen, dann sind wahrscheinlich die Schritte zu klein.
    Denk mal: Du kannst einem Servo höchstens 50 Positionen in einer Sekunde übermitteln. (alle 20mS eine neue) das Übertragen EINER Position bei 9600 dauert ~ 4mS d.h. das reicht locker.

    Du mußt jetzt deine Positions- und Schrittberechnung insgesamt mal genau anschauen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Das Zucken lag daran, dass ich nicht überprüft habe, ob der neue Wert zwischen 1 und 255 liegt.
    Jetzt gehts gut!

    Du musst jetzt deine Positions- und Schrittberechnung insgesamt mal genau anschauen.
    Ich hab es jetzt anders gemacht: Der Betrag vom Step ist immer 1 und de Richtung wird bestimmt indem ich den signum-Wert dranmultipliziere.
    Jetzt ist es schon ein wenig schneller. Aber immernoch nicht zufriedenstellend. Klar ich könnte den Schritt standardmäßig auf 2 oder höher stellen aber aber dann ruckelts wahrscheinlich sehr, oder? Bevor ich mir die Arbeit mache die Probleme, die durch einen 2er-Schritt zustandekommen, zu lösen, wollte ich erstmal Fragen ob das die einzige Methode ist um das ganze schneller zu bekommen.
    Nur damit ihr wisst um welche langsame Geschwindigkeit es sich hier handelt: Um von 1 bis 255 zu laufen braucht er ca 27 Sekunden :S

    mfg
    jagdfalke

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Frage: Wie kommen denn solce Outputs im Terminal zustande ???
    POSS DESTT
    200 2007
    127 127!
    1277 127
    1>7 1277
    #sOA<#soA<
    Da baut er irgendwie Mist, wenn ich was eingeben. Bei solchen Dingern kommen dann auch diese Zuckungen zustande.

    "POSS" == "POS"
    "DESTT" == "DEST"
    manchmal kommt aber auch ein anderer Buchstabenmix raus.
    Die Nummern sollten eigentlich so aussehen:
    200 200
    127 127
    127 127
    127 127

    mfg
    jagdfalke

  9. #29
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ja, kommt daher, daß das Programm besonders im output-bereich ein absoluter Schnellschuss war(ist). da wird kreuz und quer "printf" oder UDR= gemacht, ohne sich aufeinander abzustimmen. Ist mehr Arbeit und Gefummel, als man meinen möchte.
    Perfekterweise, wenn man beim Terminal-output bleibt, macht man auf kariertem Papier ein Konzept, was wo und wie lang auf dem Schirm stehen soll, und dann fummelt man halt rum.

    Zuerst müßt mal auch mal alle "Kontroll" printf rausnehmen, die ja nur zeigen sollten, was und wo das Programm sich grad rumtreibt. das wissen wir ja jetzt so ziemlich, jetzt gehören andere Dinge gecheckt und herzgezeigt
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Zu dem Zeitpunkt als der gepostetet output gekommen ist hatte ich schon alle printfs entfernt.
    Dieses "#sOA<#soA<" zeigt doch eigentlich, dass irgendwas dazwischen gefprintet wird wärend er die Servoposition übermittelt, oder? Soll ich da einfach cli()-sei() drum rum machen? Aber dann könnte es wieder sein, dass er Eingaben nicht registriert. Damn.

    Zur Geschwindigkeit: Wenn ich das printf, das die Positionen ausgibt weglasse, ist er mind. doppelt so schnell. Naja, wäre trotzdem gut wenn wir ne andere Möglichkeit finden würden das schneller zu machen, denn irgendwann sollen die Daten vom PC empfangen werden.

    Im Anhang nochmal der modifizierte Code
    Angehängte Dateien Angehängte Dateien

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress