Hallo Leute!

Habe die Suche verwendet, bloß bei so kurzen Begriffen wie "i2c" und "adc" will sie nicht!
Also... Controller ist ein atmega8 mit 16mhz externen Quarz.

Über I2C wird ein LM75 ausgelesen und über adc0 wird über einen Spannungsteiler eine Spannung gemessen.
Das Programm scheint sich irgendwie aufzuhängen... aber anhand einer blinkenden LED sehe ich, dass es weiter läuft, bzw. LCD hängt sich optisch auf!

Ablauf ist folgender:
Code:
Do
 Toggle Led

 ' ----- Screen 1 Ausgabe -----
 If Screenx = 1 Then
  Gosub Tempmessen
  Gosub Spannungmessen

  ___lcdno = 0
  Locate 2 , 13
  Lcd Temperatur ; Nachkommastelle ; " " ; Chr(0) ; "C"

  ___lcdno = 1
  Locate 1 , 13
  Lcd Ustr ; " V"
 End If

 ' ----- Screen 2 Ausgabe -----
 If Screenx = 2 Then
 End If

 Wait 1
Loop
Das komische ist, dass wenn ein "Druchlauf" der Do-Loop-Schleife war, ist meine Screenx-Variable auf einmal mind. 48 (Laut ausgabe auf LCD).

Spannungsmessung über Spannungsteiler:
Code:
Spannungmessen:
 Start Adc                                                  ' Analog/Digital-Wandler starten
 Uwert = Getadc(0)                                          ' PortC.0 (ADC0)
 Uspannung = Uwert * Adc_multi
 Uspannung = Uspannung * 3.4                                ' Faktor-Umrechung bedingt Spannungsteiler
 Ustr = Fusing(uspannung , "#.##")                          ' Auf 2 Nachkommastellen runden
 Stop Adc
Return
...und Temperaturmessung über i2c:
Code:
Tempmessen:
 'Temperaturregister auswählen
 I2cstart
 I2cwbyte Lm75slavewrite
 I2cwbyte &H00

 'LM75 Abfrage
 I2cstart
 I2cwbyte Lm75slaveread
 I2crbyte Lm75high , Ack
 I2crbyte Lm75low , Nack
 I2cstop

 If Lm75high > 127 Then
  Temperatur = Lm75high And 127
  Temperatur = Not Temperatur
  Incr Temperatur
 Else
  Temperatur = Lm75high
 End If

 Lm75low = Lm75low And 128
 If Lm75low > 0 Then
  Nachkommastelle = ",5"
 Else
  Nachkommastelle = ",0"
 End If
Return
Das interessante ist, dass wenn ich in der DoLoop-Schleife die Spannungsmessung auskommentiere, das Programm wunderbar läuft! Aber wenn ich z.B. die Tempmessung auskommentiere läuft auch nichts.
Es scheint fast so, als würde das Problem an der Spannungsmessung liegen!
Aber bedingt einer früheren Programmversion, wo noch keine i2c-Routine integriert war, lief die Spannungsmessung ohne Probleme, seit dem hat sich nichts mehr am Code der Spannungsmessung geändert.

Kann es sein, dass "i2c" + "adc" = inkompatibel??