-         

Ergebnis 1 bis 3 von 3

Thema: Wer kanns erklären?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.03.2010
    Beiträge
    28

    Wer kanns erklären?

    Anzeige

    Hallo,

    ich wollte mal gern wissen was die Befehle:
    task_checkINT0() und task_I2CTWI()genau machen. Die kurze Erklärung in der M32 reicht mir nicht.
    Also wenns jemand genau weiss, bitte bitte schreiben.

    Danke an ALLE
    roy-sam

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Schau dir doch einfach in der Lib an was die Funktionen machen. Die Funktion task_I2CTWI(void) wird zudem auch in der Anleitung der RP6 Base auf Seite 109 noch mal erläutert.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Zitat Zitat von roy-sam Beitrag anzeigen
    Die kurze Erklärung in der M32 reicht mir nicht.
    Meinst Du die?

    Code:
    /** 
     * This function has to be called VERY frequently out of the main loop.
     * Bigger delays result in slower reaction to Interrupt requests of the 
     * Slave. 
     * This function initiates a request of the first 3 Registers of the I2C Bus
     * Slave Controller - these Bytes contain status bits, which tell us what
     * caused the Interrupt request. 
     * They are checked in the requested data ready handler which should call
     * the function checkRP6Status below. 
     */
    void task_checkINT0(void)
    {
        if(!block && (PIND & EINT1)) 
        {
            block = true; // Block further requests and wait until 
                          // this request has been processed.
            I2CTWI_requestRegisterFromDevice(I2C_RP6_BASE_ADR, INT0_STATUS_CHECK, 0, 3);
        }
    }
    Allerdings hab ich "die" nicht in der M32 gefunden...mit der Leitung INT0 kann die Base der M32 per IRQ mitteilen wenn sie was von ihr will... und wenn dem so ist, schaut die M32 mittels I2CTWI_requestRegisterFromDevice in den ersten 3 Bytes der Base Register nach, was sie beunruhigte... quasi sowas wie nen Schwestern-Rufknopf im KH. Steht aber auch da im Text... warum das hier nicht als IRQ ausgelegt ist sondern als pollende Funktion, weis ich nicht, wird aber vermutlich seinen Grund haben... da fragst du besser SlyD oder guckst genauer in die Docu.
    task_I2CTWI() ? Du meinst in RP6I2CmasterTWI.c ?
    Die Funktion sorgt dafür, das verkettete Operationen wie Schreiben eines I2C Bytes mit anschließendem lesen eines Wertes erledigt werden können. Sie ist das Pedant zur bzw. korrespondiert mit der TWI-ISR dort weiter unten und sorgt letztlich dafür das _meist_ alles per I2C da ankommt wo es hin soll. Man kann die Funktion und die ISR nicht getrennt betrachten und beides zusammen ist komplex... sehr ... komplex!
    LG Rolf
    Geändert von RolfD (19.03.2011 um 12:18 Uhr)
    Sind Sie auch ambivalent?

Berechtigungen

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