I2C Max1238 Kategorie: Programmierung Basic (von Bernd - 14.03.2006 16:51) | ||
| ||
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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum