-         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: tog pulse ON OFF...

  1. #11
    Gast
    Anzeige

    wie ich das protokoll vestanden hab.. muss der empfänger der daten nach 8 bit immer ack oder nack geben, aber der 9. impuls is mir da noch nicht untergekommen..
    und warum nur bei write..

  2. #12
    Gast
    wird eigenetlich darauf eingegangen, wenn der slave nack sendet? das wird ja nicht überprüft .. hmm komisch

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    214
    Ich meine, die Erlärungen oben stimmen nicht ganz:

    1. PULSE:
    Macht nicht einen HIGH Puls, sondern invertiert den aktuellen Zustand kurzzeitig: Wenn's vorher HIGH war, macht PULSE einen LOW Puls, sonst einen HIGH Puls.

    2. DEACT:
    Schaltet einen Port um auf "Eingangs-Richtung". Den Befehl braucht man wirklich: Nur das Umschalten auf "Ausgangs-Richtung" passiert automatisch (nämlich sobald man was auf den Port schreibt); Umschalten auf "Eingangs-Richtung" MUSS man immer manuell (mit DEACT). Man braucht DEACT nur dann nicht hinschreiben. wenn der Port vorher noch nie Ausgang war (nach dem Programmstart sind alle Ports auf "Eingangs-Richtung").

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    214
    I2C und ACK / NACK / 9. Impuls:
    Stimmt:
    Auf dem I2C-Bus muss der Empfänger jedes Byte mit ACK oder NACK quittieren. Deshalb werden für jedes Byte 9 Bits übertragen: 8 Bits vom Sender zum Empfänger, und ein Bit (nämlich entweder ACK oder NACK) vom Empfänger zum Sender.

    9. Impuls nur beim WRITE:
    Das Basic Programm gilt für einen I2C Bus Master: Das ist derjenige, der die SCL Leitung bedient, hier die CC1.
    Wenn der Master was sendet (Aufruf WRITE), schickt er zuerst seine 8 Daten-Bits jeweils mit einem SCL Puls raus, und gibt dann den 9. Puls zum Einlesen der Quittung vom Empfänger.
    In diesem Programm wird allerdings die Quittung des Empfängers (absichtlich) nicht ausgwertet.
    Wenn man die Quittung auswerten will, dürfte es nicht heissen

    PULSE SCL

    sondern müsste so ähnlich heissen wie

    DEACT SDA 'SDA ist jetzt Eingang
    SCL = ON
    Daten = SDA ' Quittung lesen
    SCL = OFF

    Beim READ gibt's natürlich auch einen 9. Impuls; nur sieht man den nicht in dem BASIC-Ausschnitt oben:
    Der Master muss nach dem Lesen eines Bytes entweder "ACK" oder "NACK" aufrufen, und genau da wird dann das 9. (quittungs-)Bit mit PULSE übertragen.

  5. #15
    Gast
    ok supi danke vielmals
    warum wird das absichtlich nicht ausgewertet, das ack bzw. nack?
    verwendet pulse jetzt =1/=0 oder =ON/=OFF?

    kannst du mir vielleicht noch die asm-variante erklären: http://www.the-starbearer.de/Praxis/....htm#i2csystem

    ist der i2c-bus jetzt tatsächlich vorhanden auf der c-control unit oder wird der nur emuliert (weil ja 2 beliebige digiports)

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    214
    Na ja, ich würde mal sagen: "mit dieser Software konnen die beiden Ports als I2C Bus genutzt werden".

    Mit der asm-variante können zwei andere Ports als I2C-Bus genutzt werden, und zwar die beiden Ports, die die CC1 auch selbst als I2C-Bus benutzt, um mit dem EEPROM Daten auszutauschen. Dieser Bus hat eine ganz erheblich grössere Datenübertragungsrate.

    ON und OFF sind nur andere Schreibweisen: OFF ist 0 (ein WORD mit lauter 0), und ON ist -1 (ein WORD mit lauter 1).

    Warum nicht ausgewertet: eigentlich aus Bequemlichkeit:
    Ein Slave am I2C-Bus sollte immer ACK sagen, wenn man ihm was sendet. Wenn er das nicht tut, ist irgend was faul, zum Beispiel: Er ist kaputt, oder nicht (richtig) angeschlossen, oder ... -- und was soll man jetzt im Programm machen? Wird auf jeden Fall schwierig und kommt selten vor (hofft man zumindest, als Programmierer).
    Aus Bequemlichkeit macht man deshalb im Programm gar nichts spezielles (frägt nicht mal ab, ob die Übertragung überhaupt gut gegangen ist), sondern tut so, als wäre schon alles OK.
    Und der Anwender des Programms wundert sich dann, wenn nicht das passiert, was er erwartet hat, und schimpft über die Hardware, oder die Programmierer, oder das Leben an sich. Zumindest aber über Bill Gates und Windows.

  7. #17
    Gast
    ok danke..
    ich hab gesehen, dass man statt sda=ON auch deact sda machen kann.. das hat irgendwas mit dem ausgabetreiber des tristate zu tun.. aber ich versteh nicht ganz was!

  8. #18
    Gast
    bitte helft mir..

  9. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Heißt einfach, das der Controller dann den Bus freigibt -> durch den Pull-up Widerstand hat man dann einen High Pegel.
    So einfach ist das also

  10. #20
    Gast
    jo, kannst du mir das genauer auch erklären?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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