Hallo, Habe eine Frage zur Terminierung des I2C. AUF SDA und SCL habe ich ein 10K wiederstand gegen 5V+ geschalten. Auf der SCL Seite messe ich einen High Pegel im Ruhezustand auf der SDA Seite einen Low Pegel. Ist das so IO muß nicht auch der SDA High sein vor der Init des TWI??? Desweiteren habe ich eine Endlosschleife in folgenden Bereich bei dieser Stelle while (!(TWCR & (1<<TWINT))); liegt das damit zusammen. wenn ich mit den oszi messe ist an dieser stelle ein sehr schneller pegelwechsel zu sehen im dauerfeuer high + Low Linie. Auf der SDA Seite tut sich nix. AM code kanns eigendlich nicht liegen habe diesen schonmal mit einer Schalktung benutzt. Danke ublic Function: TWIM_Start Purpose: Start the TWI Master Interface Input Parameter: - uint8_t Device address - uint8_t Type of required Operation: TWIM_READ: Read data from the slave TWIM_WRITE: Write data to the slave Return Value: uint8_t - TRUE: OK, TWI Master accessible - FALSE: Error in starting TWI Master *******************************************************/ uint8_t TWIM_Start (uint8_t Address, uint8_t TWIM_Type) { uint8_t twst; /* ** Send START condition */ TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); /* ** Wait until transmission completed */ ------##########################Hier beginnt die Endlosschleife while (!(TWCR & (1<<TWINT))); /* ** Check value of TWI Status Register. Mask prescaler bits. */ twst = TWSR & 0xF8; if ((twst != TWI_START) && (twst != TWI_REP_START)) return FALSE; /* ** Send device address */ TWDR = (Address<<1) + TWIM_Type; TWCR = (1<<TWINT)|(1<<TWEN); /* ** Wait until transmission completed and ACK/NACK has been received */ ---------########################### Hier auch wenn ich die erste auskommentiere while (!(TWCR & (1<<TWINT))); /* ** Check value of TWI Status Register. Mask prescaler bits. */ twst = TWSR & 0xF8; if ((twst != TWI_MTX_ADR_ACK) && (twst != TWI_MRX_ADR_ACK)) return FALSE; return TRUE; }
Hallo, ich meine, nach der Initialisierung müssen beide Pegel High sein. Schau mal in ein Datenblatt eines I2C-Bausteins. Da findest Du immer eine Grafik der Pegel-Zustände. Gruss Klaus.
Hallo, Es war so alle pegel müssen am anfang auf high sein. Der Fehler eine Kurzschluß gegen masse Draht Haar. Nun gehts einwandfrei. Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.