www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI bzw. I2C SRF02 Register auslesen


Autor: Teco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten abend an alle. ich hab ein problem beim auslesen der resigster vom 
SRF02 Ultraschallsensor. ich verwende den sensor über twi an einem 
atmega128 und 16mhz. für TWBR habe ich 72 eigetragen.

die funktion bleib an der kommentierten stelle hängen und läuft nicht 
merh weiter. kann mir da jemand weiterhelfen, wie ich über twi die 
register auslesen kann??? alleine finde ich den fehler leider nicht.

das übertragen mit einer anderen funktion läuft ohne problme, nur am 
empfangen gibt es schwierigkeiten.


//Funktionsaufruf:
range = i2c_read(0xE0,2) <<8;
range += i2c_read(0xE0,3);
char i2c_read(char address, char reg)
{
  char read_data = 0;

  TWCR = 0xA4;      // send a start bit on i2c bus
  while(!(TWCR & 0x80));  // wait for confirmation of transmit  
  TWDR = address;      // load address of i2c device
  TWCR = 0x84;      // transmit 
  while(!(TWCR & 0x80));  // wait for confirmation of transmit
  TWDR = reg;        // send register number to read from
  TWCR = 0x84;            // transmit
  while(!(TWCR & 0x80));  // wait for confirmation of transmit
  TWCR = 0xA4;            // send repeated start bit
  while(!(TWCR & 0x80));  // wait for confirmation of transmit 
  TWDR = address+1;       // transmit address of i2c device with readbit set
  TWCR = 0xC4;            // clear transmit interupt flag
  while(!(TWCR & 0x80));  // wait for confirmation of transmit
  
///////////////////ab hier geht es dann nicht mehr weiter
  TWCR = 0x84;            // transmit, nack (last byte request)
  while(!(TWCR & 0x80));  // wait for confirmation of transmit 
  read_data = TWDR;       // and grab the target data
  TWCR = 0x94;            // send a stop bit on i2c bus
  return read_data;
}

Autor: Alex Chili (habanero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mittlerweile erfahren, warum es nicht geht? Ich stehe momentan 
vor dem selben Problem, dass sich der SRF02 nicht anständig auslesen 
lässt...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.