Hallo, ich versuche gerade den ADS1112 vernünftig zum laufen zu bekommen aber scheitere daran den Multiplexer so einzustellen, das dann auch der richtige Eingang gemessen und beim Lesen ausgelesen wird. Vom Prinzip her schreibe ich erst ins Config Register welchen Eingang ich gerne nutzen möchte, sende dann Restart mit dem letzten bit 1, also Lesen. Lese dann die Daten aus. Anschließend sende ich weider die Adresse mit Schreiben, und wähle den anderen Eingang aus. Danach lese ich die Daten. Zuletzt wird I2C-Stop Condition gesendet. Das Problem ist, dass die Eingänge nicht vernünftig umgeschaltet werden. Ich kriege Werte die garnicht auf dem Eingang liegen. Habe auch schon versucht anstatt ein "Continue" zu senden, den I2C Bus zu stoppen und mit Start erneut zu beginnen. Funktioniert aber auch nicht. Die Werte lasse ich mir per UART ausgeben. Ich weiß absolut nicht mehr weiter - arbeite jetzt an dem Problem seit 2 Tagen. Habt ihr eine Idee ? Und zwar sieht mein Code so aus: UART_init(); I2C_Init(); I2C_Start(0x9C); //Slave Adress, Schreiben //Messeingang: AIN0 ADC_configByte = 0x4C; I2C_Write(ADC_configByte);//Config Register: Messeingang AIN0, Continues Conversion //nop(300000); //wenn aktiviert, funktioniert es I2C_Continue(0x9D); //Lesen //Lesen der Daten 1 ADC_value = I2C_Read(); ADC_value = (ADC_value << 8) + I2C_Read(); ADC_configByte = I2C_LastRead(); UART_sendLeerzeichen(); UART_sendLeerzeichen(); UART_sendChar(0x31); UART_sendLeerzeichen(); wert_ausgabe_int(ADC_value); //nop(300000); I2C_Continue(0x9C); // Schreiben //Messeingang: AIN1 ADC_configByte = 0x6C; //Schreiben I2C_Write(ADC_configByte); //Config Register: Messeingang AIN1, Continues Conversion //nop(300000); I2C_Continue(0x9D); //Lesen der Daten 1 ADC_value = I2C_Read(); ADC_value = (ADC_value << 8) + I2C_Read(); ADC_configByte = I2C_LastRead(); //Daten nur ausgeben, falls Daten noch nicht gelesen wurden UART_sendLeerzeichen(); UART_sendLeerzeichen(); UART_sendChar(0x32); UART_sendLeerzeichen(); wert_ausgabe_int(ADC_value); I2C_Stop();
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.