problem i2c SDA High oder Low bei Terminierung

Gast #1613565
Lesenswert?
• ▲
▼
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;
  }

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.