-         

Ergebnis 1 bis 3 von 3

Thema: TWI/I²C-Master Probleme

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.02.2009
    Ort
    Raabs/Thaya
    Alter
    26
    Beiträge
    39

    TWI/I²C-Master Probleme

    Anzeige

    Hallo Roboternetz,

    Dass es Haufenweise Themen zu diesem Thema gibt, weiß ich, allerdings konnte mir keiner bisher helfen.
    Ich versuche gerade einen SRF02 mittels Atmega32 anzusprechen. Zum Senden der der Daten kommt es allerdings gar nicht, da der µC scheinbar in der 1. While-Schleife der i2c_start Funkion hängen bleibt, Also die Daten gar nicht übertragen werden. In die Funktion habe ich mir inzwischen nach jeder Schleife die Ausgabe eines Bitmusters auf den LOW-aktiven LEDs an PortB zur Überwachung eingebaut.
    Hauptprogramm: http://logbuch.lima-city.de/stuff/005_i2c.txt
    i2c-funktionen: http://logbuch.lima-city.de/stuff/twimaster.txt

    Wenn ich das Programm nun in den Controller spiele und starte, leuchtet erstmal gar nichts => folglich bleibt der µC in der While-Schleife hängen. Ziehe ich die die I²C-Leitungen aus den Buchsen, springt das Programm sofort weiter bis zur Ausgabe des Fehlers, also dass keine Übertragung möglich war. Stecke ich keine Leitungen an, also dass der µC alleine läuft, tut sich gar nichts. PullUp-Widerstände sind 5,6k.
    Hatte schon irgendjemand vielleicht das selbe Problem und könnte mir helfen? Oder hab ich einfach nur irgendwas vergessen?
    Schonmal Danke für die Antworten.

    Gruß Michael

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    500
    Hallo,
    hab bemerkt dass der F_CPU Wert im TWI Master noch auf 4Mhz steht, vielleicht eine (eher unwahrscheinliche) Ursache?
    Je länger die Anschlusskabel desto kleiner kann man die Pull-up Widerstände wählen, es sind bis ca 1.8k möglich.

    Ich verwende die gleiche Lib für einen Kompass ohne Probleme, aber mit einem Attiny Slave sieht es leider gleich aus wie bei Dir.

    Der funktionierende Code für den Kompass:
    Code:
    i2c_start_wait(0xc0);//192    // start I2C bus   
       		i2c_write(1);      // register  
    
    	  	i2c_rep_start(0xc1);      // restart         
    	   	kompass_akt = (short)i2c_readNak();      //neuen Wert lesen;
    	   	i2c_stop();
    LG!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.02.2009
    Ort
    Raabs/Thaya
    Alter
    26
    Beiträge
    39
    Danke, aber bei mir funktioniert der Code einfach nicht, bei Verwendung der i2c_start_wait-Funktion kann ich gleich gar nicht mehr compilieren. Verschiedene, Pinkompatible Controller (Mega644, Mega16) brachten auch keinen Erfolg. Ich lass es einfach mal, den Sensor in C ansprechen zu wollen, C war eh noch nie so meins.
    Also wieder zurück zu Assembler.

    Gruß Michael

Berechtigungen

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