- 12V Akku mit 280 Ah bauen         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 57

Thema: AsuroLib V2.8.0rc1 veröffentlicht

  1. #31
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Dachte ich eben auch zuerst. Aber es funktioniert nicht. Es gibt dann die dubiose Fehlermeldung:
    Code:
    ???1\avr\bin\ld.exe: Warning: size of symbol `IsrEnc' changed from 152 in ./subsumption.o to 154 in ???2\lib\libasuro.a(encoder_low.o)
    Müsste mit der Objekt Lib eigentlich nicht genauso sein - glaub' ich. Wenn man ca. wie folgt seine Interruptfunktion wählen könnte:
    Code:
    EncoderInit(myIsrEnc);
    Dann käme IsrEnc nie als verwendete Funktion bzw. Adresse vor und könnte durch -Wl,--gc-sections etc. raus geschmissen werden. Weiß aber nicht genau. Immerhin ... die Chance besteht.

  2. #32
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Aber, viel mehr stört mich etwas anderes.
    Die Idee hinter "DLR ASURO Flash" -> "flash only new pages" ist zwar schön. Aber, leider wird die LIB immer hinter meinen Programmtext geschrieben. Wenn ich also in meinem Programm etwas ändere, wird es ein wenig kürzer oder (meist) etwas länger. Dadurch ändern bzw, verschieben sich oft alle folgenden Pages (die LIB). Schade eigentlich! Kann man das ändern? Und die Reihenfolge umdrehen?

  3. #33
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99

    PollSwitch() beeinflußt unangenehm die encoder[]-Werte

    Hallo marvin,

    ich glaube da gibt es ein heftiges Problem in der Lib.

    Denn PollSwitch() beeinflußt unangenehm die encoder[]-Werte. Obwohl dies doch die Verwendung von autoencode verhindern sollte.

    Ich habe mal die Werte von WHEEL_LEFT und WHEEL_RIGHT in Deiner Interrupt-Routine recorded. Während dessen habe ich 6 mal (um den Effekt hier deutlicher zu zeigen) PollSwitch() aufgerufen. In der angehängten Grafik sieht man den desaströsen Effekt auf die WHEEL_LEFT- und WHEEL_RIGHT-Werte. Entsprechend falsch erhöhen sich dadurch die encoder[]-Werte rasant.

    (In meiner konkreten Anwendung, flippt mein PID Regler durch diesen falschen Input, genau in dem Augenblick aus, wo er eigentlich vor einer Wand zum halten kommen sollte )
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pollswitcheinfluss.png  

  4. #34
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo rossir,

    das Problem ist bekannt, leider gibt es dafür (noch) keine Lösung. Die PollSwitch Funktion und die Encoder ISR beharken sich trotz der Verwendung von autoencode. Eine mögliche Lösung wäre es, alle A/D Wandler interrupt gesteuert auszulesen. Dazu müßte die IsrEnc Funktion entsprechend umgebaut werden.

    Eine andere Lösung sieht so aus, PollSwitch einfach nicht zu verwenden. Das der Asuro auch ohne Tasterabfrage Kollisionen erkennen kann, hat Stochri in seinem genialen Geheimprogramm bewiesen.

  5. #35
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Hallo marvin,
    ok.
    Aber, welche Gründe verhindern den Umbau/Korrektur der IsrEnc Funktion gleich in der Lib?

  6. #36
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo rossir,

    Aber, welche Gründe verhindern den Umbau/Korrektur der IsrEnc Funktion gleich in der Lib?
    Es muss sich halt jemand finden der Zeit und Muse hat das zu tun. Vielleicht machst du es ja, ich habe nämlich keine Zeit dafür.
    Einen Ansatz, wie man das machen könnte gab es schon mal von RN-User Rakke:
    https://www.roboternetz.de/phpBB2/ze...rag.php?t=7571
    https://www.roboternetz.de/phpBB2/download.php?id=5106

  7. #37
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Hallo marvin,

    ok, habe ich gemacht. Siehe patch.zip Datei im Anhang.

    Ich bin ausgegangen von eurer SVN Revision 192. Im Patch befinden sich nur die Änderungen welche relativ zu dieser Revision notwendig sind. Das sind 7 geänderte Dateien plus eine readme.txt.

    Durch diese Änderung sind alle ADC auf Interrupt umgestellt. Dabei habe ich besonders auf die Rückwärtskompatibilität geachtet.
    Die encoder werden weiter unterstützt allerdings so verbessert wie von mir hier in
    https://www.roboternetz.de/phpBB2/ze...=367880#367880
    vorgestellt.

    Die gesammelten Kommentare zum Patch finden sich in der Datei readme.txt.

    Ich hoffe es gefällt Dir.
    Angehängte Dateien Angehängte Dateien

  8. #38
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo rossir,

    ich habe mal einen Blick in deinen Code geworfen.
    Schon mal vorab: Mir gefällt vor allem deine intergrierte Gleitwertberechnung für die TIK-Zählerei.

    Eine Anmerkung zu der Reihenfolge in asuro.c Init() beim Setzen von ADCSRA und ADMUX. Sollte man nicht umgedreht vorgehen da du mit ADFR und ADSC den Wandler ja schon im 'free running'-Mode startest ohne vorher explizit den Kanal ausgewählt zu haben.
    Das folgende sei() erlaubt dann ja nur noch, dass der ADC auch in der Interruptfunktion ankommt.

    Ansonsten finde ich extreme Ähnlichkeiten in deinem Aufbau wie ich es schon seit einiger Zeit auch mache.
    Auslagern der Datenermittlung in den Interrupt und die 'alten' Funktionen liefern nur noch die Ergebnisse aus der Variablen adcValue[].

    Hierzu noch ein Tip. Diese Variable sollte als volatile angelegt werden und in den 'alten' Funktionen sollte vor dem Zugriff auf die Variable der Interrupt gesperrt und danach wieder zugelassen werden.
    Liegt daran, dass du sinnvollerweise int-Daten nutzt, die aber dann mehrere Maschinenzyclen zum Auslesen benötigen und somit vom ADC-Interrupt mittendrin unterbrochen werden können. Ein Byte also vom vorletzten ADC-Wert, das andere Byte aber schon vom letzten ADC-Wert.
    Hat mich etliche graue Haare gekostet diesen Sachverhalt in der ATmega-Doku zu finden um diese unerwarteten falschen ADC-Werte zu finden.

    Ansonsten könnte ich hier noch etwas zu Zeiten beim Ein-/Ausschalten der Sensorbeleuchtungs-LEDs und anderem los werden, aber da kannst du mal bei mir nachsehen. Kommentare sind reichlich vorhanden.

    Vorsicht falls du das Programm laufen lässt. Der Asuro fährt mit ein paar Kurven ca. 3-4 Meter weit.

    Gruß Sternthaler
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

  9. #39
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo rossir,

    toll, das sieht super aus. So kann man das in die Lib übernehmen.

    @sternthaler schön, das es dich auch noch gibt. Deine Quellen schau ich mir auch noch durch. Vielleicht kann man ja beides kombinieren.

  10. #40
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo m.a.r.v.i.n, und auch alle anderen.

    Ja, ich hatte etwas länger einen 'Durchhänger' aufgrund persönlicher Überlastung. Ich will mich aber wieder bessern.

    Und nun aber hurtig auch von mir ein direktes Lob an rossier. Von der ersten Idee, dass du die ADCs per Int lesen willst, bis zu deinem Code, sind ja nur ein paar Tage vergangen. Grandios! Ich werkel an meiner Version schon seit 11.2005 rum.

    Kombination wäre nicht schlecht.
    Vor allem die von mir angedeuteten Probleme beim Umschalten der Sensorbeleuchtung bringt einen Haufen Code mit sich, der wahrscheinlich in den meisten Fällen nicht relevant ist. Ich bremse bewust die Wandler-Neustart-Geschwindigkeit, damit die LEDs auch sicher AN bzw. AUS sind. (Die CPU ist einfach schneller als die LED hier in der Asuro-Hardware)

    Hierdrin liegt der hauptsächliche Unterschied zwischen rossir (und allen Interrupt-Vorgängern) und meinem Code. Ich steuer den ADC-Start selber, anstatt den 'free Willy' äh 'free running'-Mode zu nutzen.

    Mein Code ist schon seit 'Jahren' immer wieder mal im Forum aufgetaucht. Jedesmal wenn es dann Fragen gab, wurde aber meistens nach ersten Erklärungsversuchen abgewunken, da die Komplexität 'etwas' größer ist. Viel Spaß beim durchsehen. Ansonsten jederzeit PN-Nachricht. Oder hier für alle .

    Gruß und schönes Wochenende für euch alle
    Sterntahler

    P.S.: Und noch etwas.
    Weiss jemand, warum ich nur noch selten Mails bekommen, wenn sich in den Thread mit meiner Beteiligung etwas ändert?
    Zu deinem Eintrag m.a.r.v.i.n habe ich auch schon wieder keine E-Mail bekommen. (Zu 2 anderen Threads aber schon!) Ich stolper im Moment sporadisch durch die Beiträge in denen ich mich verewigt hatte um neue Beiträge zu suchen.
    Lieber Asuro programieren als arbeiten gehen.

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Berechtigungen

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

12V Akku bauen