Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> ' 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: