- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 36

Thema: Frage zu RP6 I2C Library: Funktionen der Lib von Peter Fleury?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #18
    Hallo,
    no_rep_start wird jetzt in allen I2C Transmit Funktionen über der TWCR Zuweisung auf 1 gesetzt, außer in einer Funktion I2CTWI_transmitByteREPEATED_START(0x00,0x07);), dort wird es über TWCR auf 0 gesetzt. Auf 1 gesetzt wird es in der task_I2CTWI in if(TWI_operation).
    Diese Variable wird dann nur in Zeile 381 der I2CMaster Libs TWSTO zugewiesen:
    Code:
    case TWI_MTX_DATA_ACK:      // Data byte has been transmitted and ACK received
    		  if (TWI_bufPos < TWI_msgSize) {
    			TWDR = I2CTWI_buf[TWI_bufPos++];
    			TWCR = (1<<TWEN)|                                 // TWI Interface enabled
    				   (1<<TWIE)|(1<<TWINT)|                      // Enable TWI Interupt and clear the flag to send byte
    				   (0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|           //
    				   (0<<TWWC);                                 //  
    		  } else {                   // Send STOP after last byte
    			TWI_statusReg.lastTransOK = 1;                 // Set status bits to completed successfully. 
    			TWCR = (1<<TWEN)|                                 // TWI Interface enabled
    				   (0<<TWIE)|(1<<TWINT)|                      // Disable TWI Interrupt and clear the flag
    				   (0<<TWEA)|(0<<TWSTA)|(no_rep_start<<TWSTO)|           // Initiate a STOP/REP_START condition.
    				   (0<<TWWC);                                //
    		  }
    		  break;
    Sonst niergends!

    Das Resultat ist der TWI Error 0x30.
    Wenn ich in meiner neuen, angepassten Funktion:
    Code:
    void I2CTWI_transmitByte_RepeatedStart(uint8_t targetAdr, uint8_t data)
    {
    	while(I2CTWI_isBusy() || TWI_operation != I2CTWI_NO_OPERATION) task_I2CTWI();
    	I2CTWI_delay();
    	TWI_msgSize = 2;
    	I2CTWI_buf[0] = targetAdr;
    	I2CTWI_buf[1] = data;
    	TWI_statusReg.all = 0;
    	no_rep_start = 0;
    	TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(0<<TWEA)|(1<<TWSTA)|(0<<TWSTO);
    }
    Das no_rep_start auf 1 setze, ist alles wie vorher...

    Muss eventuell noch irgendwas (ein TWSTO) mit no_rep_start gesetzt oder ergänzt werden?

    Danke und
    Viele Grüße
    teamohnename
    Geändert von teamohnename (25.02.2012 um 18:59 Uhr)

Ähnliche Themen

  1. LCD library von Peter Fleury ÄÖÜ fehlt
    Von Woftschik im Forum C - Programmierung (GCC u.a.)
    Antworten: 21
    Letzter Beitrag: 18.04.2009, 14:31
  2. LCD an Mega8 mit Lib von Peter Fleury
    Von Mr Bean im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 04.10.2007, 08:01
  3. 4x20 LCD und Peter Fleury
    Von hansbausn im Forum C - Programmierung (GCC u.a.)
    Antworten: 11
    Letzter Beitrag: 27.01.2006, 17:06
  4. Anfängerproblem mit i2c und Peter Fleury
    Von hansbausn im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 20.11.2005, 17:26
  5. Peter Fleury LCD Lib Problem mit LCD
    Von Cybrix im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 30.09.2005, 10:05

Berechtigungen

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

LiFePO4 Speicher Test