www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe, I2C


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich möchte ein 4 fach dig. Pot. (DS1844) mit einem ATmega8 mit intern
1MHz ansteuern, dazu benutze ich die I2C Library von Peter Fleury. SCL
ist bei mir PD7, SDA an PD6.
Ich hab alle Device Pins des DS1844 auf Masse, dh. mein Controll-Byte
ist 0x50, mei programm sieht folgendermaßen aus:

#include <avr/io.h>
#include "i2cmaster.h"
#define Dev  0x50      // device address of DS1844

int main(void)
{
    unsigned char ret;
    DDRB  = 0xff;
    PORTB = 0x00;
  i2c_init();
        ret = i2c_start(Dev+I2C_WRITE);
    if ( ret ) {
        i2c_stop();
        PORTB= ret;    //Fehler LED leuchtet
    }else {

        i2c_write(0x09);   //Pot. 0
        i2c_write(0x49);   //Pot. 1
        i2c_write(0x89);   //Pot. 2
        i2c_write(0xc9);   //Pot. 3
  i2c_stop();
    }
}

Wenn ich mir die Signale am Oszi anschaue, würd ich sagen der Clock
passt, aber anstatt bei SDA 0x50 (0101 0000) zu haben, wird mir 0100
0010 angezeigt?
Ich verwende das PonyProg und einen Adapter an LPT1.

Wäre super wenn mir jemand helfen kann

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe noch nie die Signale nachgemessen. Bisher waren alle
I2C-Bausteine relativ einfach anzusteuern.
Ich nehme an das Du:
- das Timing in der Bilbliothek angepasst hast
- die PINs richtig konfiguriert hast
- Pull Up Widerstände angeschlossen hast

Die Bilblipthek würde ich ausschliessen, die ist vielfach getestet.

PD6 und PD7 sind beim Mega 8 der Analog-Komparator.
Ich hatte mal einen Effekt mit einem I2C-Display, das ab und zu nach
dem Start mal Mist anzeigte. Ein Pin lag an dem PWM-Ausgang des
Controllers. Dann habe ich den PWM Ausgang während der Initialisierung
explizit deaktiviert, und danach ist der Fehler nie wieder aufgetreten.
Vielleicht mal den Komparator explizit abschalten?
Ansonsten Ratlosigkeit...

Gruss
Andreas

Autor: Poe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sende mal statt 0x50 ein 0x00 oder 0xff und gucke mal ob das was du am
Oszi siehst überhaupt was mit dem zu tun hat was du senden willst. Ich
arbeite leider nur in Assembler, aber ich würde da erst mal prüfen ob
das Register an das ich den Wert übergebe überhaupt das ist welches
tatsächlich rausgeschrieben wird.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hab die Pins gewechselt und jetzt klappts

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...
Danke, hab die Pins gewechselt und jetzt klappts
...

sagts du uns, wohin?
Lag's am Analog Comarator?
Hatte ein Abschalten des AC's nichts geholfen?

Danke
Axel

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auf die Pins PD6 und PD7 gewechselt.
Abschalen des AC's hab ich nicht probiert.

Gruß
M

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.