- Labornetzteil AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 23 von 23

Thema: [I²C] Beschleunigungssensor gibt kein ACK aus

  1. #21
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    33
    Beiträge
    1.192
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Und zwar muss ich trotz der Überprüfung des Statusregisters nach dem Start und nach dem Senden warten, damit alles funktioniert (_delay_ms (1)
    Ich habe die Startfunktion ein wenig umgeschrieben, aber das bringt auch nichts
    Mit welcher Geschwindigkeit betreibst du denn nun den Bus? (SCL-Frequenz)?
    Evtl musst du auch mal das Datenblatt von deinem Sensor durchschauen, ob in dieser Hinsicht etwas von Verzögerungen drinsteht. Auch die maximale Taktfrequenz vom Bus für den Sensor müsste da drinstehen.
    Von I2C-EEPROMs weiß ich z.B., dass sie ungefähr 1ms zum Schreiben von einem Byte benötigen.
    Also nach dem Senden muss ich erst auf TWINT warten und dann auf das ACK ?
    In dem Moment, wo TWINT entsprechend gesetzt wurde, ist die komplette Datenübertragung abgeschlossen. Ob das ACK dabei empfangen wurde, kannst du dann ja auslesen. Auf das ACK musst du in diesem Sinne nicht "warten".
    Ich würde den Controller auch nicht in eine Endlosschleife schicken zwecks ACK. Falls kein ACK kommt, würde ich die Übertragung abbrechen. Sonst wartet der Prozessor ewig wenn der Sensor mal nicht angeschlossen ist. Besser ist dann eine Art Fehlerbehandlung.

    Grüße, Bernhard

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419
    Hallo, danke für deine Antwort!

    Also, an der Frequenz wird es nciht lieen.
    Ich Betreibe das Teil mit 20KHz.

    Das Seltsame ist nur, dass ich vor dem repeatet Start 1ms warten muss.
    Hier der Entsprechende Code Abschnitt:

    Code:
    TWDR = 0b00000010; //2. register
    TWCR = 0b10000100; //senden
    while(!( TWSR ==0x18 || TWSR==0x28 )) //ACK warten
    {}
    _delay_ms (1);
     
    i2c_start (); //rep start
    In TWDR kommt die Adresse des 2. Registers, dann wird gesendet, aufs ACK gewartet und dann muss die 1ms pause kommen, sonst klappt der repeatet Start nicht.
    Dabei muss ja eigneltich anchdem das ACK empfangen waurde alles erledigt sein.

    Um eine Fehlerbehandlung kümmere ich mich Später.
    Jetzt möchte ich erstmal nur eine Messung hinbekommen

    Gruß
    Olaf

  3. #23
    Hi. Ich habe den gleichen Beschleunigungssensor und möchte den mit meinem myavr MK2 Board testen. Mit Bascom hab ich es hinbekommen. Würde aber lieber mein Projekt mit c machen. Hast du deinen funktionierenden Code noch da? Wäre echt super

    Danke schonmal

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. DCF77 gibt kein Signal
    Von .:markus:. im Forum Elektronik
    Antworten: 13
    Letzter Beitrag: 06.08.2010, 18:10
  2. Beschleunigungssensor
    Von oratus sum im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 01.11.2009, 01:31
  3. Beschleunigungssensor
    Von bastman im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 01.11.2006, 09:53
  4. MyAVR- Board gibt kein masse
    Von senk im Forum AVR Hardwarethemen
    Antworten: 49
    Letzter Beitrag: 03.11.2005, 20:48
  5. Beschleunigungssensor
    Von BlackBroom im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 14.07.2005, 21:52

Berechtigungen

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

Solar Speicher und Akkus Tests