Re: 12 Bit ADC 8Ch, AD7828 Testprogramm Kategorie: Programmierung Basic (von Ernst H. - 11.01.2011 21:53) | ||
Als Antwort auf 12 Bit ADC 8Ch, AD7828 Testprogramm von Ernst H. - 11.01.2011 19:16 | ||
| ||
> ' 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 > 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. | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum