- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: Kompassmodul mit USART-Schnittstelle auswerten

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Anzeige

    Powerstation Test
    Hallo Markus,

    hier kann ich momentan nicht weiterhelfen, da ich von BASCOM, wie schon mehrfach geschrieben, keine Ahnung habe .

    Da aber Bascom hier sehr stark verbreitet ist, müsste es doch jemanden geben, der helfen kann.

    Nur soviel, ich würde die Werte nicht in einen String einlesen. Du willst ja anschließend mit den einzelnen Bytes rechnen, ein String dürfte dafür aber denkbar ungeeignet sein.

    Viele Grüße
    Jörg

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Schade, ich werde die Frage mal unter "Bascom Programmierung" posten. Trozdem mal vielen dank für deine hilfe. Jetzt weis ich wenigstens wo ich anfangen soll.

    Gruß, Markus

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Markus,

    habe mir mal die Hilfe zu Bascom vorgenommen:

    Port The name of the port to use. This must be a letter like A for portA.
    Pin The pin number you want to use of the port. This must be in the range from 0-7.
    Demnach liest du in deinem Programmbeispiel von D4 (Pin6) ein. Weiter oben war aber die Rede von Pin2 (RXD).

    Allerdings fällt mir bei der Literatur der Hilfe auf, dass Bascom die Hardwareroutinen des Mega8 wohl gar nicht nutzt. Deshalb kann man auch jeden beliebigen Pin für die Funktion angeben.

    Zurück zu deinem Programm. Wenn der Wert in einen String eingelesen ist und anschließend mit Print ausgegeben wird, wird mit Sicherheit wegen des Binärformats irgendwelcher Müll ausgegeben (siehe Terminal).

    Besser ist doch, gleich in Variable einzulesen mit denen man auch was anfangen kann.

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 3686400
    $baud = 9600
    Ddrd = 0
    Portd = 0
    
    Dim Heading As Word
    Dim H_low As Byte
    Dim H_high As Byte
    Dim Check As Byte
    
    Dim Strtemp As String * 10
    
    Do
    
      Serin Strtemp , 0 , D , 0 , 9600 , 0 , 8 , 1              ' wartet auf CR (synch)
    
      Serin H_low , 1 , D , 0 , 9600 , 0 , 8 , 1
      Serin H_high , 1 , D , 0 , 9600 , 0 , 8 , 1
      Serin Check , 1 , D , 0 , 9600 , 0 , 8 , 1
    
      Heading = H_high * 256
      Heading = Heading + H_low
    
      Print "Kompass: " ; Heading
    
    Loop
    Allerdings darf die Ausgabe mit Print nicht an das Kompassmodul geschickt werden, sondern muss zum PC (Terminal). Achso, der Code oben ist nicht getestet sondern einfach so aufgeschrieben. Vielleicht kann ja jemand mit BASCOM-Erfahrung da mal draufgucken. Was erreicht werden soll steht ein paar Postings weiter oben.

    Viele Grüße
    Jörg

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Hey, super, vielen dank, das werd ich mal ausprobiern. Der pin ist schon richtig glaub ich, die serielle konsole zum pc ist auf portD0 und 1. Das ist bei Bascom anscheinend standardmässig so wenn man einfach nur print "irgendwas" schreibt. Und jetzt versuch ich eben noch zusätzlich an nem anderen pin was einzulesen.

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Funktioniert nicht
    Wenn ich irgendwas in einen string einlese bleibt er generell hängen. Vermutlich weil er das CR nicht lesen kann. Wenn ich was in byte einlese kommt immer null raus. Ich hab jetzt von dem Sandard USART-Port (also D0 und D1) die TX leitung mit dem PC verbunden und die RX mit dem Kompas. So krig ich wenigstens was rein weils ja an anderen ports mal garnicht funktioniert. Die einzigste möglichkeit überhaupt was vom kompas zu empfangen ist mit dem Waitkey()-befehl aber der wartet natürlich nur auf ASCII-Zeichen und gibt die dann auch so weiter. Ds heißt es sieht genau so aus als wenn ich den kompas direkt anschließe. Hast du den gleichen Kompas oder hast du jetzt extra wegen meinem problem die anleitung durchgelesen??? Falls du den gleichen hast, wie hast du das gemacht?

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Markus,

    zu dem seriellen Problem in Bascom kann ich dir leider nicht weiterhelfen. Das Programm oben entstand quasi im "Blindflug", durch Vergleich von deinem Programm und den bei Bascom mitgelieferten Beispielen.
    Es ist, wie weiter oben geschrieben, nicht getestet.

    Allerdings verstehe ich auch nicht, wenn fast jeder redet, dass er in Bascom programmiert und wie toll das System ist, dass keiner ne Lösung beitragen kann.

    Eine andere Geschichte ist der Kompass, hierzu kann ich dir durchaus Tips geben, die jedoch momentan dein Problem nicht lösen. Ich kanns blöderweise auch nicht mehr nachvollziehen, da alle 2XCXM-I, selbst meine stille Reserve, ausverkauft sind.

    Hast du den gleichen Kompas oder hast du jetzt extra wegen meinem problem die anleitung durchgelesen???
    Ja genau, allerdings die von BASCOM.

    Viele Grüße
    Jörg

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Kann es denn sein das die $crystal variable falsch ist? Oder kommt es nur auf die $baud variable an? Irgendwie stehen die doch in abhängigkeit zueinander oder? wenn ich was anderes nehme als 3686400 kommt immer nur schrott raus. Vielleicht braucht der Kompass ja nen anderen wert wie die verbindung zum pc.

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Markus,

    $crystal ist die Angabe der Taktfrequenz des Mega8, 3,6864MHz ist eine gebräuchliche Größe, bei der die Baudraten 100%ig exakt sind. Ich gehe mal davon aus, dass du einen entsprechenden Quarz im System hast.

    Vielleicht braucht der Kompass ja nen anderen wert wie die verbindung zum pc.
    Nein, sofern die korrekte Baudrate ($baud = 9600) eingestellt ist.

    Viele Grüße
    Jörg

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Ich habs jetzt geschafft indem ich mit "Variable = Waitkey()" auf die 19 warte, was ja 13H entspricht. Dann lese ich die nächsten 3 byte auch mit Waitkey ein. da kommt dann je nach dem wie man den kompass dreht folgendes raus:
    140,130,241 oder 122,130,7. Aber laut der anleitung müsst ich ja die 130 jetzt mal 256 nehmen... da kommen dann ja so große zahlen raus das man die nicht vernünftig umrechnen kann. Kann es sein das ich an der falschen stelle anfange mit einlesen? Oder ist das erste bit von dem gesendeten byte vielleicht ein start-bit das nicht mitgerechnet wird? Wenn ich bei jeder zahl die reinkommt das erste bit weglasse (also 128 abziehe) dann komm ich auf ein endergebniss das wenigstens zwischen 0 und 360 liegt. allerdings kommen erst jedes dritte mal werte die man dafür verwenden kann. Kann ich irgendwie sicher gehen das er das byte tatsächlich von anfang an einliest und nicht irgendwo in der mitte beginnt und noch die hälfte vom nächsten dazu nimmt?

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    Hmm... ich glaub das mit dem 128 abziehen funktioniert nur in ganz wenigen fällen... ich hab mal 5 bytes nacheinander eingelesen: 19+97+130+28+19+97

    Wenn das irgendwie bitmässig versetzt wäre dann würden da nicht so viele 19er kommen. und vor allem wären dann wohl nicht genau 3 bytes dazwischen kommen, trozdem kann ich mit den bytes dazwischen nix anfangen weil sie viel zu gross und zu komisch sind. Das ist total verwirrend, ich glaub ich dreh voll am rad.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen