- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: i2c und ADC zusammen harmonieren nicht!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.06.2004
    Beiträge
    162

    i2c und ADC zusammen harmonieren nicht!

    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??

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Hallo,
    starte den ADC am Anfang des Programmes und lass ihn an. Evtl passt Ustr nicht bzw zu klein dimensioniert.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.06.2004
    Beiträge
    162
    Danke, es lag an der Variable "Ustr" -> Jetzt auf 5 geht es!

Ähnliche Themen

  1. Bascom $initmicro und $noramclear zusammen geht nicht
    Von Hans_K im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 28.04.2010, 18:58
  2. lcd_i2c.lib + i2c_twi.lib laufen nicht zusammen!?
    Von Bammel im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.01.2010, 22:08
  3. [gelöst] debounce und inputbin laufen nicht zusammen ???
    Von Papsi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.01.2008, 21:39
  4. DS1820 und DCF77 Funktionieren nicht zusammen....Hilfe!
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.10.2007, 08:35
  5. Antworten: 7
    Letzter Beitrag: 07.03.2006, 21:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests