-
        

+ Antworten
Ergebnis 1 bis 2 von 2

Thema: XMega Quadrocopter BMP085 Werte springen

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    23
    Beiträge
    1.532

    Xmega Werte werden vor ISR nicht gesichert

    Anzeige

    Hi,

    ich bin momentan dabei, einen BMP085 in meinen Quadrocopter einzubauen und zu programmieren. Prinzipiell funktioniert es auch schon, also die Werte werden zumindest vom Sensor ausgelesen. Sie sind zwar alle negativ, aber eine Änderung der Höhe sieht man auch im negativen Wert, also stört mich das nicht. Der Sensor wird alle paar ms in einer ISR abgefragt (nur die Register werden über I2C ausgelesen) und die Höhe und Temperatur werden dann im Mainloop berechnet. Soweit so gut. Es gibt in meinem Code 3 States, State 0 bedeutet Motoren aus, State 1 bedeutet Winkelgeschwindigkeitssteuerung und State 2 bedeutet Hover/Level Mode, also Winkelsteuerung. In State 0 und State 1 funktioniert alles, aber sobald ich in State 2 schalte, springen die Werte um den Faktor 10 des eigentlichen Wertes hin und her... Da bräuchte ich jetzt eure Hilfe!
    Ich dachte schon an einen Stack-Overflow, also hab ich die Stacks von 100 auf 150 vergrößert, aber das bringt auch nichts. Alle Variablen, die von den BMP085 Routinen verwendet werden, werden sonst nirgends verwendet. In der Timer-ISR, welche für die Regelung zuständig ist, werden nur die Register des BMP085 ausgelesen. Diese stimmen immer(!!), also muss der Fehler irgendwo beim Aufruf der Sub Calc_height() im Mainloop liegen.... Nur WO?
    Der Code ist im Anhang, da er zu lange ist für den Thread.

    Wenn jemand ne Idee hat, immer raus damit, würde mich sehr freuen

    Gruß & Vielen Dank
    Chris
    Angehängte Dateien Angehängte Dateien
    Geändert von Che Guevara (13.12.2012 um 14:49 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    23
    Beiträge
    1.532
    Hi,

    ich hab jetzt (leider) die Lösung gefunden:
    Wenn ich die Regler-ISR mit 400Hz aufrufe, funktionierts. Das würde doch bedeuten, es liegt an der Zeitnot... Aber wieso? Ich meine, wenn ein Interrupt kommt, werden doch alle Werte gesichert und anschließend wieder zurückgeholt?!

    Gruß
    Chris

+ Antworten

Ähnliche Themen

  1. Mittels goto an Programmanfang springen
    Von demmy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 02.12.2012, 06:57
  2. An bestimmte Programmstelle springen
    Von petzi-- im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 17.10.2012, 20:56
  3. von einem zu anderem springen?
    Von robots4-ever im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 08.04.2012, 21:24
  4. Raketenantrieb: Roboterflöhe springen hoch
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 30.09.2011, 21:27
  5. Kugel: Springen oder Rollen
    Von Flex im Forum Mechanik
    Antworten: 3
    Letzter Beitrag: 05.05.2005, 18:27

Berechtigungen

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