Re: CC bleibt bei I2C_Start hängen Kategorie: I²C-Bus (von Endress - 19.06.2009 11:23) | ||
Als Antwort auf Re: CC bleibt bei I2C_Start hängen von GEMINI1606 - 19.06.2009 10:48 | ||
| ||
> > Hallo, > > > > ich habe den Code aus dem Buch übernommen und ein Temperaturmodul angehängt. > > > > Die C-Control hängt sich beim ersten I2C_Start() auf, auch wenn garkein I2C Slave im Bus hängt. > > > > Code ist bis auf die Adresse des Modul identisch : > > > > http://books.google.de/books?id=bnI1TIagSPQC&pg=PA85&dq=i2c+c-control&lr= > > > > Danke und Gruss, Endress > > > > > > > Hallo Endress, > > schick mal bitte den Code, so ist schwer zu sagen wo es hängt. > > Gru� > GEMINI1606 Orginal Code: // I2C-Thermometer // erforderliche Library: IntFunc_Lib.cc, LCD_Lib.cc // �ber ein I2C-Bus Thermometer Modul wird die aktuelle Temperatur erfasst und // über die Leitungen SDA und SCL an den MEGA32 bzw. MEGA128 übertragen. // Der ermittelte Wert wird auf dem Display angezeigt. // globale Variablendeklaration int MSDB, LSDB; char zeile1[9], zeile2[9]; //------------------------------------------------------------------------------- // Hauptprogramm // void main(void) { TempInit(); // I2C-Modul wird initialisiert DisplayInit(); // LCD-Modul wird initialisiert while (true) { I2C_Start(); // I2C starten I2C_Write(0x9E); // Temperaturmodul mit der Adresse 10011110 aufrufen I2C_Write(0xAA); // Die letzte konvertierte Temperatur wird eingelesen I2C_Start(); // I2C erneut starten I2C_Write(0x9F); // Temperaturmodul mit der Adresse 10011111 aufrufen // Mit dem ersten Bit wird das Schreiben und Lesen // unterschieden 1 <=> lesen, 0 <=> schreiben. MSDB=I2C_Read_ACK(); // Der MSDB-Wert wird gelesen und mit einem ACK quittiert. LSDB=I2C_Read_NACK(); // Der LSDB-Wert wird gelesen und mit einem NACK quittiert. I2C_Stop(); // I2C wird angehalten Display(); // Der ermittelte Wert wird auf dem Display ausgegeben. AbsDelay(1000); // Nach einer Sekunde wird die nächste Messung durchgeführt. } } void TempInit(void) { I2C_Init(I2C_100kHz ); // I2C initialisieren I2C_Start(); // I2C starten I2C_Write(0x9E); // Temperaturmodul mit der Adresse 10011110 aufrufen I2C_Write(0xAC); // Aufruf des 1-bate Konfigurationsregisters I2C_Write(0x02); // Die Datenübertragung des Moduls wird aktiviert I2C_Stop(); // I2C wird angehalten I2C_Start(); // I2C starten I2C_Write(0x9E); // Temperaturmodul mit der Adresse 10011110 aufrufen I2C_Write(0xA1); // TH-Register wird aufgerufen I2C_Write(0x28); // MSDB der maximalen Temperatur wird gesendet (+40°C) I2C_Write(0x00); // LSDB der maximalen Temperatur wird gesendet I2C_Stop(); // I2C wird angehalten I2C_Start(); // I2C starten I2C_Write(0x9E); // Temperaturmodul mit der Adresse 10011110 aufrufen I2C_Write(0xA2); // TL-Register wird aufgerufen I2C_Write(0x00); // MSDB der minimalen Temperatur wird gesendet (+0°C) I2C_Write(0x00); // LSDB der minimalen Temperatur wird gesendet I2C_Stop(); // I2C wird angehalten I2C_Start(); // I2C starten I2C_Write(0x9E); // Temperaturmodul mit der Adresse 10011110 aufrufen I2C_Write(0x51); // �bertragung wird gestartet I2C_Stop(); // I2C wird angehalten } //------------------------------------------------------------------------------- // Display // void DisplayInit(void) { LCD_Init(); // Display initialisieren LCD_ClearLCD(); // Display löschen LCD_CursorOff(); // Display Cursur ausschalten zeile1 = "I2C-Temp"; // Text der ersten Zeile wird zugewiesen } void Display(void) { Str_WriteInt(MSDB, zeile2, 0); LCD_CursorPos(0x00); // LCD Cursor positionieren LCD_WriteText(zeile1); // Die erste Zeile wird ausgegeben. LCD_CursorPos(0x42); // LCD Cursor positionieren LCD_WriteText(zeile2); // Die Temperatur wird ausgegeben. LCD_WriteChar(0x20); // Ein Leerzeichen wird geschrieben. LCD_WriteChar(0x43); // Ein C wird ausgegeben. } wie gesagt ist es das Orginal Beispiel aus dem Buch MSR mit C-Control Pro von Rainer Schirm und Peter Sprenger. Gruss, Endress | ||
Antwort schreiben Antworten: Re: CC bleibt bei I2C_Start hängen (von GEMINI1606 - 19.06.2009 11:48) Re: CC bleibt bei I2C_Start hängen (von Endress - 20.06.2009 19:35) Re: CC bleibt bei I2C_Start hängen (von ER - 23.06.2009 9:32) Re: CC bleibt bei I2C_Start hängen (von Endress - 22.06.2009 10:30) Re: CC bleibt bei I2C_Start hängen (von Daniel - 26.06.2009 17:38) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum