- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Probleme mit I2C-Kommunikation mit Interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2013
    Beiträge
    8
    Schon mal danke für deine Antwort =)

    Also ich hab jetzt mal die code-zeilen TWI_DDR |= (1 << SDA) und TWI_DDR |= (1 << SCL) auskommentiert.

    SCL und SDA ist auf PC0 bzw. PC1, der Temperatur-Sensor (TMP112AI) ist direkt daran angeschlossen, also SCL ist verbunden mit Pin 1, SDA ist verbunden mit Pin 6. Pin 4 des Temperatursensors ist auf GND, daher auch die Adresse des Slaves. Allerdings benötigt der Sensor noch eine Stromversorgung, diese ist auf PB0, daher muss ich diese auf low setzen um den Sensor zu versorgen.

    Dies müsste auch richtig sein, da es bei der Polling-Variante klappt. Dass der Sensor versort ist habe ich auch nachgemessen.

    Externe Pull-Ups sind vorhanden.

    Ja, bei dem Fehlerfall, da hab ich noch so gar keine Ahnung was ich da machen soll, evtl beenden oder so?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von __lissy__ Beitrag anzeigen
    Also ich hab jetzt mal die code-zeilen TWI_DDR |= (1 << SDA) und TWI_DDR |= (1 << SCL) auskommentiert.
    Die hatten im gezeigten Code einfach keinen Effekt, können aber u.U. schädlich sein, sobald die I2C-Unit abgeschalten wird, übernimmt wieder die normale Funktion den Pin und kann je nach Zustand von PORTx auf Low oder High treiben, während man auf dem I2C-Bus nicht aktiv auf High treibt.
    Allerdings benötigt der Sensor noch eine Stromversorgung, diese ist auf PB0, daher muss ich diese auf low setzen um den Sensor zu versorgen.
    Sehr eigenwillig, den Versorgungs-GND wegzuschalten, aus welchem Grund wird nicht VCC geschalten?
    Ja, bei dem Fehlerfall, da hab ich noch so gar keine Ahnung was ich da machen soll, evtl beenden oder so?
    Man schaltet den Interrupt ab, Seite 13:
    AVR315: Using the TWI module as I2C master
    Warum ist das Thema auf [Erledigt]? Sieht mir nicht sehr erledigt aus.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2013
    Beiträge
    8
    Das Thema ist auf [Erledigt], da es mein Ziel war die Kommunikation als Master Interrupt-gesteuert zu programmieren. Dies funktioniert nun, im Anhang habe ich mal meinen jetzigen Code, er ist alles andere als perfekt, aber es war auch nur eine Übung. Falls Bedarf besteht, kann ich das Thema auch wieder auf nicht erledigt stellen.

    __I2C_mitInterrupt.c

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von __lissy__ Beitrag anzeigen
    Dies funktioniert nun, im Anhang habe ich mal meinen jetzigen Code, er ist alles andere als perfekt, aber es war auch nur eine Übung. Falls Bedarf besteht, kann ich das Thema auch wieder auf nicht erledigt stellen.
    Zum Zeitpunkt ich das "Erledigt" nachfragte, war nicht erkennbar dass es funktioniert, das war also höchstens für Dich erledigt.
    Nun kann ein Forum nicht von abgeschlossenen Beiträgen profitieren, deren Ergebnis nicht bekannt ist.
    Betrachte es so, dass die Nennung des Fehlers/Problems sozusagen die "Rückzahlung" an's Forum und dessen Teilnehmer ist, welche geholfen haben.
    Oft geschieht das aber nicht, d.h. Du liest Dir einen Thread durch und irgendwann ist Schluss, der TE meint "geht jetzt" und behält sein Geheimwissen für sich.
    Das hast Du ja durch Anhängen Deines Codes nicht so gemacht, jetzt könntest Du noch sagen, wo der Fehler lag, dann hat jeder Nachleser, ohne groß die Codes zu vergleichen, einen direkten Erkenntnisgewinn.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2013
    Beiträge
    8
    Da ich recht viele Sachen ausprobiert habe, bin ich mir nich 100% sicher ob es daran liegt, aber ich vermute, dass es an dem sleep-Befehl liegt. Nach der Initialisierung wird 1 sec gewartet, erst dann beginnt die Kommunikation. Dies muss wohl so sein, da der Temperatursensor (Slave) Zeit benötigt.
    Wie gesagt, das ist nur meine Vermutung, da das Programm nicht mehr funktioniert, wenn ich diesen Befehl auskommentiere. Allerdings habe ich davor ja auch schon I2C mit Polling programmiert, welches ja auch funktioniert hat. Bei diesem Programm war allerdings kein warten nötig, obwohl die gleichen Bausteine verwendet wurden.
    Ansonsten entspricht das Programm soweit dem Code zu Beginn des Problems, bis auf die Änderungsvorschläge des Forums.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von __lissy__ Beitrag anzeigen
    aber ich vermute, dass es an dem sleep-Befehl liegt. Nach der Initialisierung wird 1 sec gewartet, erst dann beginnt die Kommunikation. Dies muss wohl so sein, da der Temperatursensor (Slave) Zeit benötigt.
    Du hast bemerkt, dass der angehängte Code (Post #5) keine solche Wartezeit enthält, als womöglich eine alte Version ist?
    Es ist wohl ein Prototyp für sleep_ms() im Code drin, das war's dann aber schon.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2013
    Beiträge
    8
    __I2C_mitInterrupt.c

    Dies müsste nun aber wirklich die richtige Version sein

Ähnliche Themen

  1. Probleme mit UART-Kommunikation
    Von __lissy__ im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 21.05.2013, 08:55
  2. Probleme mit der serielle Kommunikation
    Von Florian. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 30.11.2011, 17:53
  3. Probleme mit UART Kommunikation
    Von curzon161 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.08.2011, 17:17
  4. Fehler in For-Schleife mit I2C Kommunikation
    Von uffi im Forum C - Programmierung (GCC u.a.)
    Antworten: 25
    Letzter Beitrag: 22.03.2011, 07:47
  5. Probleme mit INPUT für µC zu PC Kommunikation
    Von MelMan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 24.11.2008, 18:50

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress