Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > <basic>' Testprogramm I2C-ADC (I2C 12-bit, 8-CH Analog-to-Digital Converter) > > ' mit AD7828 fertiges mini Modul Fa www.gravitech.us ca 20$ > > ' Für ein Hutschienengehäuse habe ich ein solches Modul im Einsatz > > ' mit Eingangs - Schutzbeschaltung und für drei Kanäle einen Meßverstärker > > ' mit Präz. OPA 07 für Shunt +/-50mV > > ' Ernst H. 2011-01-11 > > 'Ausgabe: > > 'Ch0 Ch1 Ch2 Ch3 Ch4 Ch5 Ch6 Ch7 > > '1577 1578 1563 0 0 0 0 0 > > '1576 1577 1562 0 0 0 0 0 > > '1577 1578 1562 0 0 0 0 0 > > '1577 1578 1563 0 0 0 0 0 > > 'Kanal 0-1 Nullpunkt angehoben - Lade / Entladestrommessung von Akkus > > '************************************************************ > > > > #define ADC_I2C_ADDR 0x90 ' I2C address > > > > Dim ADVAL As Word ' Store A/D value > > Dim ADVAL_HIGHBYTE As Byte ' High byte of ADVAL > > Dim ADVAL_LOWBYTE As Byte ' Low byte of ADVAL > > Dim DAT As Byte ' Configuring data > > Dim Durchlauf As Integer ' Counter > > > > Sub main() > > > > I2C_Init(I2C_100kHz) > > > > For Durchlauf = 0 To 7 'Überschrift > > Msg_WriteText("Ch") > > Msg_WriteInt(Durchlauf) > > Msg_WriteChar(9 ) 'Tabulator > > Next > > Msg_WriteChar(13 ) 'CR > > > > Do While 1 > > For Durchlauf = 0 To 7 > > Select Case Durchlauf > > Case 0 > > DAT = 0b10001100 ' Conifg Einstellung für Ch0 > > Case 1 > > DAT = 0b11001100 > > Case 2 > > DAT = 0b10011100 > > Case 3 > > DAT = 0b11011100 > > Case 4 > > DAT = 0b10101100 > > Case 5 > > DAT = 0b11101100 > > Case 6 > > DAT = 0b10111100 > > Case 7 > > DAT = 0b11111100 > > End Select > > > > I2C_Start() > > I2C_Write(ADC_I2C_ADDR) > > I2C_Write(DAT) > > AbsDelay(1) > > I2C_Start() > > I2C_Write(ADC_I2C_ADDR+1) 'Leseadresse > > ADVAL_HIGHBYTE = I2C_Read_ACK() > > ADVAL_LOWBYTE = I2C_Read_NACK() > > I2C_Stop() > > > > 'Msg_WriteWord(Durchlauf) > > 'Msg_WriteText(" Wert= ") > > > > Msg_WriteWord(ADVAL_LOWBYTE + ADVAL_HIGHBYTE * 255) > > Msg_WriteChar(9 ) > > Next > > Msg_WriteChar(13 ) > > AbsDelay(1000) > > > > End While > > > > End Sub </basic> > > > > in der Zeile: > Msg_WriteWord(ADVAL_LOWBYTE + ADVAL_HIGHBYTE * 255) > gehört ... * 256 oder ... "<<" 8 > Rechenzeit für linksschieben ist praktisch gleich der Multiplikation > Ernst H.