Tach! Vorhaben: Atmega2560 soll flux sämtliche Adressen im TWI- Adressraum (0-127) abklappern und vergebene Adressen mittels Auswertung des jeweiligen Ack registrieren. Dachte, das wird ne drei- Minuten-Angelegenheit. Bin ich völlig falsch davor? Schleife: i2c_start(addr); if (TWCR & (1<<TWINT)) //wenn Ack vom Slave erfolgt xyz(addr); //Aktion ausführen i2c_stop(); addr++;
Mein allerallererster eigener Threat..... und keener schreibt :(
Gast
#2245577
Was erwartest du, 5-Minuten Express-Antwort? Sonst noch Probleme? Einmal Netiquette bitte.
Gast
#2245581
> 17:20: > [etwas Quellcode] > 17:36: > und keener schreibt :( in < 16 Minuten kann man eigentlich nur sagen: Dein Fehler ist in Zeile 42.
Ich hatte darauf gehofft, dass jemand, der sich mit TWI auskennt, nur einen Blick auf if (TWCR & (1<<TWINT)) do... schmeisst und sagt "alles scheisse"/"kleiner Fehler".
Gast
#2245613
> schmeisst und sagt "alles scheisse"/"kleiner Fehler". Ok, alles scheisse. > //wenn Ack vom Slave erfolgt Grosser Fehler. Hohl dir das Datenblatt und guck mal ganz genau wie das TWI zu behandeln ist. Da sind auch wunderbare Ablaufdiagramme drin. Da wirst du Sehen das ein Check von TWINT nicht reicht. Aber vermutlich hast den benötigten Rest ja in xyz(addr) implementiert, wobei wir wieder bei der Zeile 42 währen.
Ob ein ACK erfolgte, ist an dem Wert der 5 Statusbits abzulesen. Peter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.