- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Problem beim I²C Bus

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2014
    Beiträge
    8

    Ausrufezeichen Problem beim I²C Bus

    Anzeige

    Praxistest und DIY Projekte
    Ich hoffe Ich habe nun das richtige Forum ausgewählt.

    zu meinem Problem. Ich wollte mit meinem Atmega644p über I²C einen LM 75 auslesen.
    soweit klappt dass auch aber Ich erhalte immer nur 125 Grad. Woran kann dass liegen ?

    Ich habe schon folgendes Probiert:
    - Programm geändert ( mittlerweile 2 verschiedene Programme getestet )
    - PullUp widerstände am Bus geändert ( 1k5,4k7,10k )
    - anderen LM75 getestet

    meine Programme bisher:
    Code:
    $regfile = "m644pdef.dat"
    $crystal = 16000000
    '$sim                                                        'Frequenz 16MhZ
    $baud = 2400                                                'Baudrate Com1 zum PC
    $baud1 = 2400
    $timeout = 20000000                                         'Timeout für Serial In 10 Sekunden
    $hwstack = 90
    $swstack = 64
    $framesize = 64
    '$lib "i2c_twi.lbx"
    'Config Twi = 100000
    Dim I2c_state As Bit
    Dim Hightemp As Byte
    Dim Lowtemp As Byte
    Dim Temperatur As Single
    Const Lm75slavewrite = &H90
    Const Lm75slaveread = &H91
    Dim Lm75high As Byte
    Dim Lm75low As Byte
    'Dim Temperatur As Integer
    Dim Nachkommastelle As String * 2
    Dim I As Integer
     Waitms 100
     I2cstart
     I2cwbyte Lm75_adresse
     I2cwbyte &H00
     I2cstop
     Waitms 100
     I2cstart
     I2cwbyte Lm75_lese_adresse
     I2crbyte Hightemp , Ack
     I2crbyte Lowtemp , Nack
     I2cstop
    
     Print #2 , "high:" ; Hightemp
     Print #2 , "Low:" ; Lowtemp.7
    
     Waitms 100
     If Hightemp.7 = 1 Then
       Decr Hightemp
    
       For I = 0 To 7
        Toggle Hightemp.i
       Next
    
       Temperatur = -hightemp
     Else
     Temperatur = Hightemp
     End If
    
    
     Locate 3 , 1
     Lcd "Erfolgreich"
     Locate 4 , 4
     Lcd Temperatur ; " °C"
     Print #2 , Temperatur ; "°C"
    Programm 2
    Code:
    '(I Dim N As Integer
     N = 5
     I2cstart
     I2cwbyte Lm75_adresse
     I2cwbyte &H00
     I2cstop
     Waitms 100
     Do
       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 = ""
       End If
       Locate 2 , 11
       Lcd "                "
       Locate 2 , 11
       Print #2 , "Temp.: " ; Temperatur ; Nachkommastelle ; " Grad"
       N = N - 1
    
     Loop Until N < 0
    'End If
    
    'Der I2C-Bus liefert ein ERR-Bit bei Schreibfehler
    If Err = 1 Or I2c_state = 0 Then
       Print #2 , "Fehler I2C Bus"
    End If
    ')

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2014
    Beiträge
    8
    Hat keiner eine Idee woran dass liegen könnte?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Zitat Zitat von Raucher91 Beitrag anzeigen
    Hat keiner eine Idee woran dass liegen könnte?
    Config Scl = Portc.0 'Ports fuer IIC-Bus
    Config Sda = Portc.1
    I2cinit
    mfG
    Willi

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo,

    Zitat Zitat von Raucher91 Beitrag anzeigen
    Code:
    Const Lm75slavewrite = &H90
    Const Lm75slaveread = &H91
      I2cwbyte Lm75_adresse
     I2cwbyte Lm75_lese_adresse
    mit dem LM75 kenne ich mich nicht aus aber welche Adresse schickst du zum LM75? Ich kann nicht sehen, wo die Variablen Lm75_adresse und Lm75_lese_adresse belegt werden.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2014
    Beiträge
    8
    Hey also Lm75_adresse ist auch &H90 bzw Lm75_lese_adresse ist &H91.

    Hab ich jetzt nur vergessen mit zu kopieren. Ist aber alles 1zu1 aus meinem Buch übernommen bzw aus dem netzt übernommen aber es funktioniert weder das erste noch das 2.Programm

  6. #6
    Unregistriert
    Gast
    Hallöchen, ich könnte mir vorstellen, dass dein Bus eine zu hohe Frequenz hat. Im Programm "config twi=100000" gibt 100kHz. Versuche mal "config twi=10000".

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Und die Adress-Pins (5, 6, 7) liegen auch sicher auf GND??

Ähnliche Themen

  1. Problem beim Konfigurieren von TIMER1 beim M32-Board
    Von dirty_bird_981 im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 10.01.2012, 22:52
  2. Timing beim 485 Bus
    Von wurm im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 12.04.2009, 15:37
  3. Propleme beim I2C-Bus Aufbau
    Von Bluesky im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 14.02.2007, 14:11
  4. Antworten: 9
    Letzter Beitrag: 14.03.2005, 20:08
  5. Takt beim I2C-Bus
    Von Frank im Forum Kopfnüsse / Wissensquiz
    Antworten: 4
    Letzter Beitrag: 18.10.2004, 10:07

Berechtigungen

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

Solar Speicher und Akkus Tests