-         

Ergebnis 1 bis 4 von 4

Thema: LM75A am RN-Control - Fehler bei I2C Verbindung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    13.05.2008
    Beiträge
    38

    LM75A am RN-Control - Fehler bei I2C Verbindung

    Anzeige

    Hi!

    Ich nutze momentan das RN-Control mit dem atmega32. Ich versuche die Temperatur aus einem LM75A mittels I2C auszulesen und diese dann per RS232 an meinen PC zu übertragen. Und das alles in C-Code.
    Dummerweise klappt schon das Auslesen des LM75A nicht so wie es soll, aber fangen wir mal von vorne an:

    Erstmal zur Verkabelung:

    Ich habe den 5 Volt-Ausgang des RN-Control an den VCC-Eingang vom LM75A gesteckt. Weiterhin hängen an diesem 5Volt-Ausgang parallel 2 10kOhm Widerstände. Hinter diesen Widerständen hängt jeweils die SDA-Leitung(bzw. SCL) vom LM75A und die vom atmega32.
    Der Aufbau entspricht eigentlich fast 1zu1 diesem hier: http://www.ermicro.com/blog/?p=744
    Wenn es an der Verkabelung liegen sollten, kann ich auch gerne noch ein Foto nachreichen.

    Zur Ansteuerung im Quellcode nutze ich die Libs von Peter Fleury, die ja auch schon öfter im Forum genannt wurden. Die sollten ja ganz normal funktionieren. Ich habe den Port auch extra auf Port C und Pin 1 (SDA) und Pin 0 (SCL) in seinen Dateien umgestellt.
    Hier mal der Quellcode:
    Code:
    unsigned char MSByte;
        unsigned char LSByte;
        double temp;
        char s[255];
        init_USART();
        i2c_init();
    
    
        sendUSART("Hallo Welt!!");
        while(1) {
            if (i2c_start((0x48)+I2C_READ)) sendUSART("Fehler!");
            else {
                MSByte = i2c_read(1); //höherwertige Bits
                LSByte = i2c_read(0);
                //temp = calcTemp(MSByte, LSByte); //soll später die Temp in °C rein
    
                //itoa(temp,s,10);
                sendUSART("Die aktuelle Temperatur lautet: ");
                //sendUSART(s);
                sendUSART(MSByte);
                sendUSART((char) 13); //New Line!
            }
            sleep_ms(2000); //eine ziemlich ungenaue Sleep Funktion, aber hauptsache es gibt ne kleine Pause zwischen den einzelnen connect-Versuchen
        }
    Die Adresse ist ja laut Datenblatt vom LM75A: 1001ABC, wobei A,B und C beliebig beschaltbar sind. Ich habe A,B,C gar nicht angeschlossen, also gilt A=0,B=0,C=0 => Die Adresse ist 1001000, was Hexadezimal eine 48 sein sollte.
    (Ich hab die Anschlüsse A,B und C auch mal direkt auf Masse gezogen, auch ohne Erfolg)

    Bisher sehe ich eigentlich keinen Fehler, sofern ich nicht irgendwo irgendwelche Anschlüsse verwechselt habe. Der einzige Unterschied ist, dass überall 4.7k Widerstände verwendet werden und ich hier 10k Widerstände habe, was aber doch nicht das Problem sein sollte, oder?

    Die Ausgabe ist nun über RS232 immer "Fehler", d.h. es kommt erst gar keine Verbindung zum LM75A zustande - ist die Adresse evt. falsch?

    Dass die Ausgabe von MSByte später eigentlich keinen Sinn macht, ist mir klar. Jedoch wollte ich erstmal irgendeine ("vernünftige") Ausgabe haben, bevor ich anfange die konkrete Temperatur zu berechnen.

    Hat jemand eine Idee woran es liegen könnte?

    Gruß
    Pille

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    13.05.2008
    Beiträge
    38
    Hi,

    Um sicher zu gehen, dass die Schaltung korrekt funktioniert, habe ich gerade per Bascom versucht den LM75 auszulesen, jedoch auch ohne Erfolg!

    Der Quellcode hierzu ist:
    Code:
    $lib "i2c_twi.lbx"
    $regfile = "m32def.dat"
    $crystal = 16000000                                         ' frequency used
    $baud = 9600
    Config Twi = 100000
    Config Scl = Portc.0                                        ' Ports fuer IIC-Bus, nicht Standard !
    Config Sda = Portc.1
    
    ' Startausgabe
    Print "Hallo Welt!"
    
    Dim X As Byte
    Dim Y As Byte
    
    I2cinit
    
    Do
        I2cstart
    
        I2cwbyte &H91
        I2crbyte X , Ack
        I2crbyte Y , Nack
        I2cstop
    
        Print Hex(x)
        Print Hex(y)
        Print "======"
        Wait 2
    Loop
    In dem Thread (hier aus dem Forum) wo ich mir Teile für den Code geklaut habe, war von der Adresse 10010000(=0x90) die Rede. Ich habe extra nochmal im Datenblatt geschaut und dort steht 1001000 (also eine Null am Ende weniger). Ich habe mit Bascom beide Adressen probiert und nichts ging.
    In X und Y steht jedes mal der Wert, den ich vorher mit I2cwbyte geschrieben haben.

    Anscheinend ist doch etwas an der grundsätzlichen Schaltung falsch. Ich habe im Anhang mal ein Bild gepostet, ich hoffe man erkennt alles.
    Die blauen Leitungen verbinden die SDA-Ports und die SCL die gelben.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 2011-04-25 17.21.56.jpg  

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Zu einen lt. Datenblatt: A2–A0, are not internally biased, it is
    important that they should not be left floating in any application.
    Also die Adressleitungen nicht offen lassen.
    Die Adresse ist 0x90, steht im Datenblatt Seite 8 unter Slave Adress
    Spannungen am Steckbrett kontrolliert?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    13.05.2008
    Beiträge
    38
    Ah okay, gut dann ist das jetzt auch mal klar. Ich hatte A2-A0 zeitweise auch per Kabel auf GND gezogen, aber auch ohne Erfolg.
    Hab die Kabel jetzt gerade mal wieder drangesteckt - auch ohne Erfolg.
    Spannung am Steckbrett ist vorhanden, wobei ich momentan nicht sagen kann wie viel - hab gerade kein Multimeter zur Hand. Hab stattdessen eine kleine Dioden-Testschaltung gebaut.
    Die LED1 am RN-Control blinkt übrigens alle 2 Sek, die LED2 jedoch gibt nichts von sich

Ähnliche Themen

  1. elektr. Verbindung RN-Control - 6/10 - AVR-USB mk2
    Von walterk im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 02.09.2009, 19:16
  2. verbindung von RN-Control zu ISP-Dongel
    Von Soeni im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 17
    Letzter Beitrag: 09.03.2009, 19:38
  3. Fehler bei Verbindung zwischen PC u. ATmega8 via LPT
    Von Foooob im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 15.05.2008, 01:01
  4. RN-Control 1.4 keine Verbindung
    Von Dennis2006 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 15
    Letzter Beitrag: 19.10.2006, 21:01
  5. RN-Control 1.4 Mega32 PC-Verbindung ???
    Von Palmer im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 16.04.2006, 14:16

Berechtigungen

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