-
-
Neuer Benutzer
Öfters hier
Ja, der Bus wird blockiert ich denke beim lesen der Messdaten. Da warscheinlich keine Messdaten auf dem bus liegen.
Es gibt ja zwei möglichkeiten den Bus zu aktivieren
1. i2c_start(Adresse) liefert 0 oder 1 zurück (ok oder nicht OK)
2. i2c_start_wait(Adresse) versucht den Teilnehmer solange anzusprechen bis er antwortet.
Falls ich 2. verwende hängt bleibt er sofort stehen da er den SRF02 nicht adressieren kann und läuft endlos in der Schleife (Blockiert)
Falls ich 1. verwende läuft er alle Befehle ab und bleibt beim lesen (messung = i2c_readNak()) der Messdaten stehen. Sobald ich diese zwei Lesebefehle auskommentiere läuft er wieder durch und meine I2C Display ausgabe aktualisiert sich wieder.
Hier ein Ausschnitt
while(1)
{
wait_10ms(80);
i2c_init();
i2c_start(SRF02+I2C_WRITE);
i2c_write(0x00); // command register 0
i2c_write(0x51); // read in cm
i2c_stop(); // set stop conditon = release bus
i2c_start(SRF02+I2C_WRITE); // set device address and write mode
i2c_write(0x02);
i2c_rep_start(SRF02+I2C_READ); // set device address and read mode
//ret = i2c_readNak(); // read one byte from SRF02
//ret1 = i2c_readAck(); // read second byte from SRF02
i2c_stop();
Cursor_x_y(1,4);
char message[10];
sprintf (message,"%i %i", ret1, ret);
lprint(message);
}
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen