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

I2C Max1238 Kategorie: Programmierung Basic (von Bernd - 14.03.2006 16:51)
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
Ich bin von der Unit 1/2 auf die Maga32 umgestiegen und versuche gerade den ADC Max1238 zum
Laufen zu bringen. Ich benutze das Application Board und habe auf einer zweiten Platine einen PCF8574
und den Max1238 gelötet. Den PCF kann ich ansprechen, bei dem Max gibt es noch ein Problem.
Geplant ist beide bytes, die ich vom Max auslese auf das LCD zu schreiben. Es wird aber nichts
geschrieben, Daten- und Clockleitung vom I2C wechseln gerade einmal den Zustand. Ich bin mir jetzt
nicht sicher, ob ich einen Denkfehler im Programm habe, oder ob ich etwas wesentliches des I2C
übersehen habe.


#ifdef MEGA32
#define PORT 3
#endif

Dim Kanal As Integer               ' globale Variablendeklaration
Dim ADDR, AdrMaxS, AdrMaxL, MaxConf, MaxSetup, byte1, byte2, i As Byte
Dim str1(10), str2(3) As Char
'------------------------------------------------------------------------------
'
Sub Max1238 (Kanal As Integer)
    I2C_Start()
    I2C_Write(AdrMaxL)              'Max 1238 lesen
    byte1=I2C_Read_ACK()     '1. byte auslesen und mit ACK quittieren
    byte2=I2C_Read_ACK()     '2. byte auslesen und mit ACK quittieren
    I2C_Stop()
End Sub
'--------------------------------------------------------------------
Sub Max1238Init ()
    I2C_Start()
    I2C_Write(AdrMaxS)
    I2C_Write(MaxConf)
    I2C_Write(MaxSetup)
    I2C_Stop()
End Sub
'-------------------------------------------------------------------
Sub Init ()
    I2C_Init(I2C_100kHz)            ' I2C Bit Rate: 100 kHz
    LCD_Init()                      ' Display initialisieren
    LCD_ClearLCD()                  ' Display löschen
    LCD_CursorOff()                 ' Display Cursur ausschalten
    LCD_CursorPos(0)
    LCD_WriteText(str1)               ' Messwert in Zeile 1
    LCD_CursorPos(0x43)
    LCD_WriteText(str2)               ' V in Zeile2
    Port_DataDir(PORT,&HFF)         ' Datenrichtung: 0=in, 1=out
End Sub
'------------------------------------------------------------------------------
Sub LCDTest (byte1 As Byte, byte2 As Byte)
    Dim num(8) As Char
        Str_WriteWord(byte1,10,num,0,2) ' Integer n in ASCII String konvertieren
        LCD_CursorPos(0x40)            ' LCD Cursor positionieren
        LCD_WriteText(num)          ' String num ausgeben
        Str_WriteWord(byte2,10,num,0,2) ' Integer n in ASCII String konvertieren
        LCD_CursorPos(0x44)            ' LCD Cursor positionieren
        LCD_WriteText(num)          ' String num ausgeben
End Sub
'------------------------------------------------------------------------
'
Sub main()
    str1="Messwert"
    str2=" V"
    Init ()
    ADDR=&H4E                       'PCF8574 alle 3 Adressbits 1
    AdrMaxS=&H68                    'Max 1238 schreiben
    AdrMaxL=&H69                    'Max 1238 lesen
    MaxConf=&H01                    'Max 1238 Kanal 0
    MaxSetup=&HDA                   'Max 1238 Setup
    Kanal=0                         ' Kanal Nr.
    i=0
        Max1238Init ()
    Lab Lesen
        Max1238 (Kanal)            ' Funktionsaufruf mit Ã?bergabe der
        Port_Write(PORT,i)
        i=i+1
        If i=255 Then
        i=0
        End If
    Goto Lesen

End Sub



    Antwort schreiben


Antworten: