- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 25

Thema: RP6Control M32: Projekt I2C-Slave

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.08.2012
    Beiträge
    5
    Servus,

    ich versuche gerade die Keys der M32 (als Slave) mit der M256 (als Master) auszulesen.

    Mittlerweile funktioniert es, dass ich den pressedkey auslesen kann. Ich würde aber lieber den releasedkey verwenden. Hierbei bekomme ich aber bei allen 5 Tastern immer nur eine '0' zurückgeliefert.

    Hoffe, ihr könnt mir helfen.



    if(getStopwatch4() > 250)
    {
    getAllRegisters();


    if(interrupt_M32status.keypressed)
    {
    writeInteger_WIFI(pressedKeyNumber, DEC);
    //writeInteger_WIFI(releasedKeyNumber, DEC);
    writeChar_WIFI('\n');

    }

    //if(interrupt_M32status.keychange)
    // {
    //// writeInteger_WIFI(pressedKeyNumber, DEC);
    //writeInteger_WIFI(releasedKeyNumber, DEC);
    // writeChar_WIFI('\n');

    // }

    setStopwatch4(0);
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi matze1,
    solange eine Taste gedrückt wird, enthält pressedKeyNumber die Nummer der Taste und releasedKeyNumber 0.
    Solange keine Taste gedrückt wird, enthält pressedKeyNumber 0 und releasedKeyNumber die Nummer der zuletzt gedrückten Taste.

    Eine Abfrageschleife kann z.B. so aussehen:
    Code:
    uint8_t last_releasedKeyNumber;
    
    /**
     * M32 key state changed
     */
    void keyStateChanged(void)
    {
    	writeString_P_WIFI("\n\n===> key state changed!!!\n"); 
    	writeString_P_WIFI("ADC_KEYPAD value: ");
    	writeInteger_WIFI(adcKeypad, DEC);
    	writeChar_WIFI('\n');
    	writeString_P_WIFI("Key is pressed:   ");
    	if(interrupt_M32status.keypressed) writeString_P_WIFI("Yes\n");
    	else writeString_P_WIFI("No\n");
    	writeString_P_WIFI("[Last rel. key number: ");
    	writeInteger_WIFI(last_releasedKeyNumber, DEC);
    	writeString_P_WIFI("]\nReleased key number:   ");
    	writeInteger_WIFI(releasedKeyNumber, DEC);
    	writeChar_WIFI('\n');
    	last_releasedKeyNumber = releasedKeyNumber;
    	writeString_P_WIFI("Pressed key number:    ");
    	writeInteger_WIFI(pressedKeyNumber, DEC);
    	writeChar_WIFI('\n');
    	writeChar_WIFI('\n');
    }
    
    	uint8_t regM32Buf[4];
    
    	while(true) 
    	{
    		task_checkPCINT15();	// RP6 M32 main task
    		if(interrupt_M32status.keyChange)
    		{
    			I2CTWI_readRegisters(I2C_RP6_M32_ADR, I2C_REG_ADC_KEYPAD_L, regM32Buf, 4);
    			adcKeypad = regM32Buf[0] + (regM32Buf[1]<<8);
    			releasedKeyNumber = regM32Buf[2];
    			pressedKeyNumber = regM32Buf[3];
    			keyStateChanged();
    		}
    		task_I2CTWI();
    	}
    Gruß
    Dirk

Ähnliche Themen

  1. RP6Control M32: Library für 8 Servos
    Von Dirk im Forum Robby RP6
    Antworten: 84
    Letzter Beitrag: 12.02.2013, 21:17
  2. Slave Transmitter und Slave Receiver Mode
    Von masasibe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 26.02.2011, 19:55
  3. RP6Control M32: Tonfrequenzen
    Von Dirk im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 10.10.2009, 18:47
  4. Slave-Master-Slave übertragung geht nicht
    Von Dämmi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.11.2008, 00:08
  5. Antworten: 0
    Letzter Beitrag: 26.08.2007, 15:03

Berechtigungen

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

Solar Speicher und Akkus Tests