- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Atmega16 auf externes quarz schalten?

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    27.02.2006
    Ort
    Gessertshausen
    Alter
    53
    Beiträge
    97
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hab da jetzt ein anderes Problem:

    Ich lese einen String von der RS232 ein, zerlege diesen in ein Array und verwende die Werte, um zunächst mal einen Schrittmotor zu steuern.
    Da man mit einer Achse ja in beide Richtungen fahren kann, habe ich auch negative Werte. Die Vorzeichenerkennung funktioniert, wie aber bekomme ich den Wert in's Positive ?

    Hier der Code:
    Code:
    ...
    Dim Ar(5) as string  * 100
    Dim X as double
    ...
    If X < 0 then
       Portc.1 = 0    'CW/CCW Umschaltung
       Portd.5 = 1   'Signalisierung auf LED1 zur Kontrolle
       X = Val(Ar(1)) * (-1)
       Print "Xcorr=" ; X     'Kontrollausgabe des umgekehrten Wertes
       Else
       Portc.1 = 1    'CW/CCW bleibt
       Portd.5 = 0    'Kontroll LED1 bleibt aus
    end if
    ...
    Er erkennt, dass der Wert kleiner null ist, da er die LED einschaltet und den Wert zurückgibt, allerdings ist er immer noch negativ !
    Ich brauche diesen aber positiv, da die Schritte in einer anschließenden Schleife von null bis Wert hochgezählt werden.
    Kann mir jemand einen Tipp geben ?
    Gruß, Berni.
    www.befi-tec.de

  2. #22
    Ich verstehe dein Programm nicht ganz:
    X enthält schon vor dem IF den Wert?
    Warum greifst du dann aud das Array zurück und schreibst nicht
    X = -1*X
    Ich habe mit Bascom keine Erfahrung, aber könnte es hier ein Problem mit der Umwandlung des Strings nach double sein?

    /jan

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    27.02.2006
    Ort
    Gessertshausen
    Alter
    53
    Beiträge
    97
    ... in PHP kann ich Werte so zuweisen:
    X = X * (-1)
    Definiert ist das so, dass ich der Variablen einen neuen Wert zuweisen kann, indem ich sie selbst zur Berechnung hernehme. Bascom bringt hier die Fehlermeldung dass Quell und Zielvariable nicht gleich sind - lässt eine Berechnung mit sich selbst also nicht zu.
    Außerdem muß ich den String ja in eine Zahl umwandeln, da ich sonst keine Berechnungen durchführen kann.
    Du brinst mich jetzt aber auf eine Idee: Vielleicht gibt es eine Möglichkeit, im String noch das Vorzeichen zu kappen, vor ich daraus eine Zahl mache. Dann hätte ich dieses Problemchen auch gelöst.
    Gruß, Berni.
    www.befi-tec.de

  4. #24
    ..oder eine 0 an der Stelle addieren
    X &= ~ 0b100000000000000

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    27.02.2006
    Ort
    Gessertshausen
    Alter
    53
    Beiträge
    97
    Hab nun auch eine Möglichkeit gefunden:
    Xc = Mid(ar(1) , 2)
    X = Val(Xc)
    Somit kappe ich einfach das Vorzeichen.
    Dein Source dürfte aber weniger Platz brauchen, da ich schon wieder über 4096 Bytes Source bin und ich mir nun doch die Bascom-Vollversion besorgen muss.
    Gruß, Berni.
    www.befi-tec.de

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Solar Speicher und Akkus Tests