Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt geht es ja wieder Schlag auf Schlag. Scheint irgendwie mit Tapeten zusammenzuhängen ;-).
Und die Decke hat heute auch schon wieder ihr Papier bekommen.
Und natürlich ein Hallo an alle.
Ich habe zwar immer noch nicht gefunden warum der Asuro mathematisch noch fährt wenn die Motoren stehen, aber zumindest weiß ich nun, dass auch die Werte beim Drehen der Motoren nicht korrekt sind.
Es werden sporadisch fehlerhafte Messwerte eingestreut, die bei Motorstillstand zu einer angeblichen Fahrt führen. Bei drehenden Motoren fällt es nur nicht auf, da die dann berechnete Geschwindigkeit ja nicht exakt nachgemessen werden kann.
Diese fehlerhaften Daten haben immer einen ähnlichen Wert um 435. Sie sind nur leicht gestreut. (ca. 430 - 440)
Die Werte entstehen nicht durch die 50 Hertz von flackernden Lampen. Dies ist in absoluter Dunkelheit ermittelt. Außerdem ist kein 50 Hz-Rhythmus festzustellen.
Somit ist mir klar, dass ich irgendwo bei meinen Variablenhaufen und / oder beim Speicherplatz für den Stack Mist gebaut habe.
Die Programmlogik habe ich am Sonntag einen geduldigen, sachkundigen Freund (ich hoffe, dass er das nun noch immer ist) mal nachvollziehen lassen. Auch er konnte dort nach ca. 6 Stunden programmcodeanstarren nichts am Ablauf feststellen.
Wer also die Geduld hat, meinen Fehler mit zu suchen, sollte sich mit ganz hoher Wahrscheinlichkeit auf die Speichernutzung konzentrieren.
Gruß Sternthaler, der Verzweifelte.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Du verzweifelter Sternthaler,
Zitat:
Zitat von Sternthaler
... Dies ist in absoluter Dunkelheit ermittelt. Außerdem ist kein 50 Hz-Rhythmus festzustellen. ...
Jetzt weiß ich endlich, warum Deine Posts so oft zu nächtlicher Stunde entstehen. Du arbeitest bei absoluter Dunkelheit! Klar - da hat man nicht sooo viel Probleme beim Ausrichten der Tapeten. Aber 50Hz-Rhythmus - - - pulst bei euch die Dunkelheit?
Na ja, erstens hab ich von Speichernutzung sowieso keine Ahnung. Aber es sieht mir doch ein bisschen nach einer elektrischen Störung aus, oder? Der simultane Einbruch bei 28o, 44o und 19u hat doch sicher etwas zu bedeuten! Und bei 25u und 50u gibts einen Durchgriff von "Totaleinbruch" auf "rot" zu einer deutlichen Verletzung der Monotonie auf "blau". Ausserdem zeigt die Monotonieverletzung auf 25u eine deutliche Erholungsphase von mindestens zwei Abfragen auf blau. Könnte das Alles nicht ein (elektrisches) Übersprechen von anderen Signalen sein? Woher käme sonst diese eindeutige Erholungsphase bei 25u-blau?
Wenn ich mir die Signale meiner Odometrie ansehe - bei (Tages-?) Licht, ohne Abdeckung, aber mit einer Beilagscheibe am Odometerrad, dann finde ich solche Störungen nicht mal andeutungsweise. Vielleicht - DAS ist die Idee - ich brenn mir mal Deinen Code auf meinen Asuro - und wenns ein Speicherfehler ist . . . dann hätten wir doch das gleiche Ergebnis ! ? ! ?
Zitat:
Zitat von Sternthaler
... Wer also die Geduld hat, meinen Fehler mit zu suchen, sollte sich mit ganz hoher Wahrscheinlichkeit auf die Speichernutzung konzentrieren ...
Was tut mann denn nicht alles gegen die Verzweiflung auf dieser Welt . . . .
Dann blasen wir mal zur Jagd, oder? Schick doch mal den hex rüber.
Liste der Anhänge anzeigen (Anzahl: 2)
Einen schönen Guten Morgen wünsche ich euch.
Und hier wie versprochen zu meiner besten (oder doch nicht?) Arbeitszeit Code und Daten.
Zitat:
Zitat von mare_crisium
Die andere Aufälligkeit ist, dass alle Ausreisser denselben Wert haben (sieht aus wie 440, also 0x1B8). Die Zahl ändert sich nicht, ...
Leider, leider pendeln diese Mistdinger doch. Sie gehen in den angehängten Daten von 448 bis 455 (ohne 454)
Nun könnte man meinen, dass dies der Messwert für die Batterie darstellt.
Leider scheint das aber nicht der Fall zu sein, da die Batteriemessung 2 mal 'erwischt' wurde und da 913 bzw. 914 ermittelt wurden.
--> 914 / 2 = 457 <-- Liegt verteufelt nah an den Mistdingern. Und die sind ja auch wie eine Batteriespannung recht konstant.
Aber warum durch 2 teilen? Wäre es eine 8 Bit anstatt 10 Bit Messung, muss ja durch 4 geteilt werden. (P.S.: Der AVR kann 8 oder 10 Bit)
Zitat:
Zitat von oberallgeier
... es funktioniert bestimmt gut, wir wissen nur noch nicht, wo es verbessert werden muss.
Nee, es funktioniert eben nicht gut. (Ich immer mit den gespaltenen Haaren.)
Das Problem hier ist ja, dass durch diese Mistdinger Tiks entstehen. Somit fährt der Asuro datentechnisch und rechnet eine Positon und einen Drehwinkel aus, der innerhalb kürzester Zeit zu ziemlich falschen Koordinaten führt. Und das obwohl der Asuro physikalisch keinen mm gefahren ist. (OK, die angehängten Daten zeigen drehende Räder. Das Problem ist aber auch bei Radstillstand vorhanden.)
Zitat:
Zitat von mare_crisium
Wir werden's schon 'rauskriegen - spätestens, wenn Oberallgeier den Code auf seinem Asuro testet!
Einen zweiten Asuro habe ich mir vom Nachbarn geliehen. Auch auf dem ist das gleiche Problem vorhanden. (Es liegt eben doch wohl an der Software.)
[OT] Sind nette Nachbarn. Also hockt man ab und zu bei Kaffee oder Wein zusammen; natürlich auch bei jeder Fete (@oberallgeier: Man kommt hier in der Straße wirklich zu nichts anderem). Selbstverständlich kommt man von Hölzchen über Stöckchen auch auf den Asuro.
Wer hat Spaß am Asuro bekommen? Sie natürlich. Totale Begeisterung.
Da Sie aber nicht mit Lötkolben und C umgehen kann, läßt sie mich einen Asuro zu Weihnachten für ihren Mann bestellen. Soll ja eine echte Überraschung werden.
Er hat vielleicht aus der Wäsche geschaut. Mittlerweile hat er auch schon einige Erweiterungen und fummelt nun auch heftig in C rum. [/OT]
----> Was für Daten sind in der Exceltabelle?
- T0, C0, M0, A0
Datensatz, der zum Zeitpunkt des ADC-Starts in der Timer-Interruptfunktion geschrieben wird.
Suche nach: MD_ADC_HIST_I_TIM in asuro_st.c
- T1, C1, M1, A1, V1
Datensatz, der am Anfang des ADC-Interrupts hinter die x0-Daten geschrieben wird.
Suche nach: MD_ADC_HIST_I_ADC in asuro_st.c
Erst starten, dann ADC-Wert abholen ist die Logik. Ob ADC-Werte ohne Start kommen wird festgestellt. Dann wären alle x0-Daten auf 0.
Beide MD_ADC_HIST_I_xxx-Dinger kommen aus asuro_md.h ganz am Ende.
Tx und Cx geben die Zeit in 1/36000 Sekundeneinheiten an.
Zeit[sec] = (Tx * 256 + Cx) / 36000
Mx ist der Multiplexer-Kanal aus dem Register Atmega-ADMUX
Ax ist der logische Multiplexer-Kanal aus der Variablen sens_i.adc_do_akt
In Excel berechnete Spalten sind:
P, F, T1-T0 und T0-T0
- P zeigt Probleme, bzw. die Batteriespannung.
- F würde einen Fehler markieren, wenn Mx oder Ax zwischen Start und ADC-Wert abweichen. ---> Meine Vermutung, dass der AVR eine Macke hat ist hinfällig. Meine Defines für MD_ADC_HIST_I_xxx hatten einen Fehler.
- T1-T0 zeigt die verstrichene Zeit in 1/36000[s] an zwischen Messergebnis und Start.
- T0-T0 zeigt die Zeit zwischen 2 Starts. Hier ist eine Softwareverzögerung vorhanden, damit vor allem die LED's genügend Zeit bekommen komplett an bzw. aus zu gehen. (Mit Oska geprüft, ob diese Zeit ausreicht.)
----> Wie können die Daten in Excel angezeigt werden?
Die Werte für Mx und Ax sind in Excel im Reiter 'Tabelle1' angegeben.
Oben die Ax-Werte (logischer Kanal)
Unten die Mx-Werte (echter ADMUX-Kanal)
Sinnvoll ist es, wenn man den Excel-Filter der Spalte M0 nutzt.
Hier den ADC-Kanal auswählen, und nur die dazugehörenden Daten betrachten.
Beide Radseiten können mit dem M0-Filter 'Benutzerdefiniert' mit 'Zeilen anzeigen' 'ist kleiner oder gleich' und als Wert eine 1 eintragen, angezeigt werden.
----> Hier noch ein paar Dinge, die mir in den Daten aufgefallen sind.
- Werden beide Radseiten angezeigt, dann treten die Mistdinger entweder einzeln, oder immer direkt zusammen auf.
- Die Mistdinger treten nur in der Nähe des 'Umschlagens' vom 8-Bit-Zähler aus C0 auf.
Wenn man den Filter P einstellt, dass nur 'X'-Daten angezeigt werden, liegt C0 von 252 bis 255 und von 0 bis 17.
Genau in diesem Bereich, nämlich genau beim 'Umschlagen', kann im Timer-Interrupt die Batteriemessung vorbereitet werden.
--> Ist hier doch der Zusammenhang? Warum dann aber auch vor dem 'Umschlagen'? Und warum dann nicht immer?
Ich habe getestet, dass die Batterie-Vorbereitung im Code auskommentiert ist. -> Keine Änderung bei den Daten. Weiterhin Mistdinger.
So, nun habt ihr den vollen Durchblick und könnt mir meinen Programmfehler zeigen ;-).
Frohes Schaffen und immer gute Laune wünscht euch
Sternthaler
Hier die Exceldaten (415 kB): http://www.asuro-sternthaler.de/asur...aten-11-00.xls
P.S.: Es gibt, unter anderem auch von mir, in anderen Threads auch schon die Frage nach 'unerwartet' auftretenden Tik's.
Mir ist es beim Nikolaus aufgefallen, und ich meine, dass andere auch beim Messen per Interrupt das Problem hatten. Könnte aber auch ohne Interrupt gewesen sein.