- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: I2C Slave klappt nicht

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522

    I2C Slave klappt nicht

    Anzeige

    Powerstation Test
    Hallo,

    ich versuche eine I2C-verbindung zwischen 2 Controllern hinzukriegen, klappt aber irgendwie nicht. Da ich eine getestete I2C-Master-Lib verwende vermute ich, dass das Problem beim Mega32-Slave liegt. Wahrscheinlich initalisiere ich das ganze falsch. hier ist mein Code:
    Code:
    #include <avr\io.h>
    #include <avr/interrupt.h>
    
    
    ISR(TWI)
    {
    	char c;     
    	c=TWDR;
    	PORTC^=(1<<7);     //PORTC.7 toggeln
    };
    
    int main()
    {	
    	//init I2C
    	TWCR=(1<<TWEA)|(1<<TWEN)|(1<<TWIE);
    	TWAR=(50<<1);
    
    	DDRC=3|(1<<7);
    	PORTC|=(1<<7);  //Am PORTC.7 hängt eine LED dran;
    	sei();
    	while(1);
    	return 0;
    };
    kann mir bitte jemand helfen?

    danke im Voraus

    MfG Mark

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    Was mir spontan auffällt, ist:
    - in der Initialisierung musst du auch das TWINT-Bit im TWCR-Register setzen(aber erst nach dem sei() )
    - in der ISR musst du am Ende auch immer das TWINT-Bit setzen

    Im Forum gibts dazu aber auch schon jede Menge Beispielcode.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    ganz so einfach mit der ISR geht es, galube ich, nicht, denn beim auftreten des IRQ muss erstmal geschaut werden was der Master von einem will, nicht nur einfach das Byte wegschmeissen, dann sendet der Slave immer ein NACK zurück, und der Master denkt der Slave ist nicht da.
    Also als erstes StatusRegister auslesen, und entspechend darauf reagieren, und die Flags setzen.

Berechtigungen

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

12V Akku bauen