Nanowii Werte ins EEPROM übernehmen

#1
Hallo zusammen,
mein Nanowii übernimmt vermutlich bei WRITE keine Daten ins EEPROM, er schreibt sie nur ins RAM. Sketch-Problem?

Was mache ich, was passiert:
Ich schalte die Batterie vom Copter ein, schliesse den USB an und starte das GUI; verbinde COM7 und drücke "START".
Der Copter zeigt mir die Werte vom "checkFirstTime()".
Ich lade von der Festplatte "meine" erstellte Konfiguration und sehe "meine" Parameter im GUI.
Ich drücke "WRITE", und der Copter übernimmt "meine" Parameter. Stecke den USB ab und fliege.
Schalte ich dann die Batterie aus-an und gehe über USB ans GUI, sind wieder die Werte von "checkFirstTime()" drin.

Ich nehme an, ich muss im Sketch was ändern, damit er die Werte nicht nur in den RAM-Bereich des Copters übernimmt, sondern sie auch im EEPROM ablegt.
Was könnt ihr mir raten??? Bin für jeden Tip dankbar!

Beste Grüsse, Hans-Jochen
 

Kayle

Erfahrener Benutzer
#2
Hi,

mir ist keine Möglichkeit bekannt zwischen RAM und EPROM zu switchen. Was passiert denn wenn Du die Standart Werte nimmst und dann einfach mal einen Wert änderst und auf Write klickst ? Also ohne vorher Deine Werte zu laden.

Gruß Kayle
 
#3
Hallo Kay,
ich kenne es so, dass die Daten von der Schnittstelle in das (schnelle) RAM geschrieben werden, und von dort aus überträgt eine eigene Routine die Informationen in das (langsame) EEPROM. Dieses Schreiben muss durch einen PowerOn-Reset vom Benutzer ausgelöst werden, der Rechner muss ja wissen, dass er während der Schreibphase nicht unterbrochen wird.
Aus meiner Sicht sollte WRITE die Daten vom GUI ins RAM transportieren, wo sie bei weiterer Bestromung vom Prozessor auch weiter anliegen, und RESET sollte die Übertragung vom RAM ins EEPROM starten. Sehe ich das richtig?
Ich hatte anfangs mit WriteParams und CheckFirstTime Kompilerprobleme, vielleicht liegt hier noch ein Hund begraben??

Beste Grüsse Hans-Jochen
 
#4
´tschuldigung allerseits

also jetzt hat es sich geklärt:
zur Inbetriebnahme vom Sketch fehlten zwei Dateien im Kompiler, die habe ich auskommentiert.
Nachdem ich sie gefunden habe und ins Arbeitsverzeichnis kopiert hab, hätte ich das Auskommentieren zurücknehmen müssen.
Mein Fehler!
Jetzt läufts rund!

Beste Grüsse, Hans-Jochen
 

Kayle

Erfahrener Benutzer
#5
ich kenne es so, dass die Daten von der Schnittstelle in das (schnelle) RAM geschrieben werden, und von dort aus überträgt eine eigene Routine die Informationen in das (langsame) EEPROM. Dieses Schreiben muss durch einen PowerOn-Reset vom Benutzer ausgelöst werden, der Rechner muss ja wissen, dass er während der Schreibphase nicht unterbrochen wird.
Aus meiner Sicht sollte WRITE die Daten vom GUI ins RAM transportieren, wo sie bei weiterer Bestromung vom Prozessor auch weiter anliegen, und RESET sollte die Übertragung vom RAM ins EEPROM starten. Sehe ich das richtig?
Hi Hans-Jochen,

beim Multiwii werden die Werte für das eeprom direkt nach dem drücken des Write Buttons ins eeprom geschrieben. Mit Umweg über SRAM aber dann ins eeprom, ohne vorherigen Reset.

Gruß Kayle
 
#6
Hallo Kay,
das ist positiv bestätigt: wenn ich, kompilerbedingt, die Schreibroutine auskommentiere, bemerkt man beim Drücken der WRITE-Taste nichts, und das Schreiben findet nicht statt. Als dann alles korrekt gearbeitet hat, konnte man eine kurze Unterbrechnung beim Zähler der Zykluszeit wahrnehmen, das waren vllt. 200ms.
Trotzdem hat es mich gewundert, dass von Version 2.0 auf 2.1 nicht alle Bibliotheken in den Sketch übernommen/übertragen worden sind, sondern dass das noch mit Hand erfolgen muss.
Andererseits steht man sofort mit beiden Füssen im Sourcecode und kann ohne Umschweife eigene Varianten erzeugen, das gefällt mir gut.

Beste Grüsse, Hans-Jochen
 
FPV1

Banggood

Oben Unten