-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Genauigkeit Pulsein/Pulseout

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601

    Genauigkeit Pulsein/Pulseout

    Anzeige

    Hi,

    ich habe vor, ein Bussystem zu entwerfen, das die zu sendenden Daten in Impulse einer bestimmten Länge zerlegt und danach über einen bestimmten Port ausgibt (Pulseout). Der zweite µC soll dieses Signal über einen Eingansport und dem Pulsein - Befehl erkennen und abspeichern. Die Leitungslänge in meinem Fall beträgt ca. 40 cm.

    Wie genau sind nun diese beiden Befehle in Bascom, ich meine ob sie ein Signal von Hausnummer 1µS wirklich als 1µS erkennen und nicht als irgend etwas anderes.

    Kann man das Ganze dann auch in Assembler gestalten?


    Dankende Grüße
    ikarus_177

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo ikarus_177,

    wenn du es ganz genau brauchst, must du in der mcs.lib Anpassungen machen.

    Öffne die Lib im Windows-Editor (nicht in Bascoms Editor) und Suche nach PULSE_IN oder PULSE_OUT. Damit findest du die Routinen dazu.

    In Pulseout gelten die 1us nur für 4 MHz. Bei anderen Quarzfrequenzen sind das nicht genau 1us. Das kann man aber in der Lib anpassen.

    In Pulsein kann man die 10us-Einheiten ebenfalls in der Lib an die Quarzfrequenz anpassen, wenn man es genau braucht.

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Natürlich kann man die Programmierung auch in Assembler machen. Die Länge des zu sendenden Pulses sollte Zyklusgenau hinzukriegen sein. Beim Messen des Pulses kann man am ICP Eingang auch eine Zyklusgenaue Messung hinkriegen. Die Pulslänge muß aber eine Mindestlänge von etwa 10-20 Zyklen haben. Die Einschränkung wird bei Bascom eher noch stärker sein.

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Also könnte man tatächlich ein Bussystem aufbauen, das die Daten durch die Länge des Impulses sendet?

    Gespannte Grüße
    ikarus_177

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    Können könnte man das vielleicht, aber wenn du wirklich komplexere Verschaltungen mehrerer Controller im Sinn hast, würde ich davon abraten.
    Einmal hast du einen hohen Aufwand, um die Daten zeitlich zu kodieren und zu dekodieren, wobei ich prinzipiell nur Daten auf einem solchen Bus übertragen würde, bei denen es nicht auf Genauigkeit ankommt. Audiodaten könnte man z.B. problemlos übertragen.

    Dadurch, das die Pulse eine bestimmte Mindestlänge haben müssen, wird es aber auch nicht sonderlich schnell. Da gibt es andere Bussysteme, die schneller sind und schon auf den Megas hardwareseitig vorhanden sind.

    Hauptnachteil ist aber das Problem der Nachverfolgbarkeit aus meiner Sicht. Wenn du eine Schaltung hast, bei der irgendwann plötzlich was in der Kommunikation der Controller etwas nicht mehr hinhaut, kommst du ohne Oszilloskop dann nur schwer weiter.

    Weiteres Problem ist das Timing. Du hast keine konstante Geschwindigkeit auf deinen Datenwegen, da einige Informationen länger brauchen als andere. Das kann manchmal von Nachteil sein.

    Frage ist auch, wieviele unterschiedliche Zustände du durch die Länge des Impulses übertragen möchtest. Sind es mehr als 3-4 Bit, kommst du irgendwann auf sehr lange Impulse, die diese Übertragungsart nicht mehr lohnend erscheinen lassen.

    Aber interessant und in einigen Spezialfällen vielleicht sinnvoll einsetzbar ist diese Übertragungsart schon

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Gut, dann werde ich wohl auf die parallele Alternative umsteigen müssen. Ich war dieser Methode bisher etwas abgeneigt, was die benötigte Zahl der I/O's angeht.

    Hat vielleicht schon jemand Erfahrung mit dieser Art von Kommunikation? Da brauche ich ja bis auf die Leitungen (no na) keine weiteren Bauteile, oder?

    Viele Grüße
    ikarus_177

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ein Bus mit verschienden Pulslängen wird z.B. bei den Temperatursensoren und ähnlichem von Dallas eingesetzt. Da geht sogar noch die Spannungsversorgung über die Selben Leitungen. Das extrem ist wohl eine Speicher in Knopfzellenform.

    Man muß aber auch nicht gleich von 1 Leitung gleich auf parallel umsteigen. Schon I2C (oder TWI beim AVR) ist deutlich Leistungsfähiger als die Einfache codierung über Pulslängen.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Hi,

    jaaaa, sicher wäre I2C eine Alternative. Allerdings ist mir diese Art von Datenbus etwas unsympatisch, was die Programmierung anbelangt

    Außerdem denke ich, dass man mit einem parallelen Kommunikationssystem mehr Freiheiten in der Programmierung und im Protokoll hat, beim I2C ist ja schon alles durch die Routinen in Bascom vorgegeben. Und mal etwas neues auszuprobieren kann sicher nicht schaden.

    Ich würde also einen 8 Bit (= 1 Byte) Port für das Senden der Daten verwenden und einen zweiten für das Empfangen derselben. die Ports aller Controller würden dann einfach parallel verbunden werden. Muss ich da noch irgendwelche Bauteile zwischenschalten oder funktioniert es auch ohne?

    Viele Grüße
    ikarus_177

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    Das mit den beiden 8-Bit Bussen (schreibt man die Mehrzahl überhaupt so?) mache ich so bei Marvin. Funktioniert auch ganz prima, braucht allerdings auch zwei komplette Ports. Mache dir lieber gleich Gedanken darüber, wie du das Timing machst, also z.B. wie du eine Folge von 3 Null-Bytes übertragen würdest, damit die auch richtig ankommen.
    Von der Beschaltung her kannst du den Master-Ausgang direkt auf die Eingänge der Slaves legen. Von den Slaves zurück zum Master muss jeder Slave mit Dioden beschaltet werden, damit ein sendender Slave keinen Kurzschluß zu den anderen Slaves, deren Ausgangspins auf log. 0 liegen erzeugt.
    Wenn du größere Controller mit mehr Ports hast, ist zu überlegen, ob du für die Kommunikation auch Extra-Signalleitungen verwendest. Da du alles per Hand machst, stehen dir ja alle Möglichkeiten offen.

    Gruß und viel Erfolg
    MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    @MeckPommER: die Anode der Diode muss also dann an den Port angeschlossen werden?

    Aber ich versteh' das nicht ganz, wieso dass das einen Kurzen machen soll?

    Viele Grüße
    ikarus_177

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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