- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Frequenz CPU und I²C-Bus

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699

    Frequenz CPU und I²C-Bus

    Anzeige

    Powerstation Test
    Aus den RP6 Beschreibungen und RN-Wissen:
    Das neue Erweiterungssystem des RP6 basiert auf dem 400kBit/s schnellen seriellen I²C Bus
    Leistungsfähiger Atmel ATMEGA32 8-Bit Mikrocontroller Geschwindigkeit 8 MIPS ... bei 8MHz Takt
    Die Werte von TWBR gehen von theoretisch 0 bis 255. Laut Atmel soll der Wert aber mind. 10 Betragen, da es sonst zu Problemen bei der Übertragung kommen kann.
    Es gilt die Formel: TWBR = (CPU-Frequenz / SCL-Frequenz -16)/2

    Beim RP6:
    TWBR = (8000000/400000 - 16) / 2 = 2 bei 400 kHz
    TWBR = (8000000/100000 - 16) / 2 = 32 bei 100 kHz

    Mit welcher Frequenz wird der I²C-Bus aktuell in der Bibliothek betrieben?
    Für 400 kHz müsste man doch auf 16 MHz aufrüsten, oder übersehe ich da etwas?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    wenn der AVR Master ist, dann stimmt das, als Slave kann er aber bei den 400kHz mitlesen.
    Ist da ein M32 drauf der mit 16MHz laufen kann, oder nur die 8MHz Version ?

    Der von der Erweiterungplatine soll mit 16MHz laufen

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo ehenkes,

    Mit welcher Frequenz wird der I²C-Bus aktuell in der Bibliothek betrieben?
    Ist bei der Initialisierung als Master einstellbar - man kann die Bitrate in kBit vorgeben.

    z.B. so:
    Code:
    I2CTWI_initMaster(50); // 50kBit
    I2CTWI_initMaster(100); // 100kBit
    I2CTWI_initMaster(220); // 220kBit
    I2CTWI_initMaster(400); // 400kBit - für RP6-M32

    Für 400 kHz müsste man doch auf 16 MHz aufrüsten, oder übersehe ich da etwas?
    Das gilt nur für den Master Modus und auch nur für den Controller auf dem Mainboard. Für den Slave Modus ist das irrelevant.

    Im Master Modus kann das TWI Modul nach Atmel Spezifikation so bis etwa 220 kBit betrieben werden. Im Datenblatt steht, dass es bei TWBR Werten kleiner 10 nicht ganz korrekte Ausgabewerte für die letzten Bits geben *könnte* - nicht muss.

    Im Slave Modus sind die 400kBit für das TWI Modul natürlich kein Problem.

    Das RP6 CONTROL M32 wird mit den maximalen 16MHz getaktet und kann daher auch gemäß der Atmel Spezifikation mit 400kBit/s senden.

    Jeder andere ATMEGA Controller den man mit > 14.4MHz laufen lässt und auf den Bot draufbaut kann das natürlich ebenfalls.
    Wenn man die 400kBit also *wirklich* braucht, kann man immer beliebig viele schneller getaktete Controller hinzufügen - sei es mit dem RP6-M32 Modul oder selbst zusammengelötet auf Erweiterungsmodulen.


    ------------------------------------------------------------------------------------

    Wie ich schon oft erwähnt habe, ist der Hauptgrund den MEGA32 auf dem Mainboard mit 8MHz laufen zu lassen der Energiebedarf!

    Die gesamte Elektronik des RP6 benötigt nur etwa 18mA wenn die Sensorik abgeschaltet ist, mit eingeschalteter Sensorik etwa 28mA.
    (ACS, Drehgeber, Stromsensoren und die PowerON LED sind die Sachen die man an und abschalten kann. )

    Da nimmt man das im Master Modus *etwas* langsamere TWI Modul gerne in Kauf! Wobei 220kBit/s auch schon sehr schnell für die typischen I2C Aufgaben sind.

    MfG,
    SlyD

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Hallo SlyD, das war keine Kritik am RP6. Ich will es nur halt immer ganz genau wissen. Danke für die ausführliche Information. Energiebedarf ist mir persönlich z.B. egal, da ich immer ein zweites geladenes Akku-Set bereit halte, denn Akkus werden gemäß Murphy's Law im ungünstigsten Moment leer, egal, wie lange diese vorher gelaufen sind.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    > Ich will es nur halt immer ganz genau wissen

    Deshalb habe ich auch ganz genau geantwortet


    > Energiebedarf ... egal .


    Es macht aber schon einen Unterschied ob ein Bot 2h oder 6h läuft!
    Man kann ja dann immernoch einen weiteren Satz Akkus bereithalten...

    MfG,
    SlyD

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Es macht aber schon einen Unterschied ob ein Bot 2h oder 6h läuft!
    Da die Ladezeiten von Akkus im Bereich von 2500 mAh ca. 4 h sind, spielt dies in der Tat eine Rolle, denn dann benötigt man bei 2 h Laufzeit bereits drei Akku-Sätze im Wechsel.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    noch eine kleine Ergänzung zum Thema TWI Geschwindigkeit.

    Ich hatte folgende Notiz im MEGA32 Datenblatt auf Seite 288 / 289 zunächst wohl übersehen:

    7. The actual low period generated by the ATmega32 Two-wire Serial Interface is (1/fSCL - 2/fCK), thus the low time requirement will not be strictly met for fSCL > 308 kHz when fCK = 8 MHz. Still, ATmega32 devices connected to the bus may communicate at full speed (400 kHz) with other ATmega32 devices, as well as any other device with a proper tLOW acceptance margin.

    Danach ist das nicht weiter tragisch, solange die Slaves das Timing nicht 100% exakt nach I2C Spezifikation erwarten. Nur das Timing weicht bei mehr als 300kBit/s etwas ab.

    --> 400kHz Master Modus ist also Bedenkenlos möglich (hatte ich ja auch schon getestet - gab keine Probleme).

    MfG,
    SlyD

  8. #8

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2007
    Beiträge
    6
    Hey,

    ich hoffe ich bin hier in diesem Forum einigermaßen richtig.
    Ich habe nämlich einige Problem mit dem I2C-Bus meines RP6.
    Ich habe bereits über den I2C-Bus einen PCF8574A (mit dem Beispielprogramm auf der RP6-CD) angesteuert und die Ausgänge mit LEDs beschaltet.
    Die nächste Erweiterung sollte nun ein Ultraschallsensor (SRF02). Diesen habe ich nun an VDD, GND, SDA und SCL angeschlossen aber noch nichts weiter in meinem Programmm geändert. Jetzt läuft allerdings dieses Programm nicht mehr und auch kein weiteres Programm das auf den I2C-Bus zugreift.
    Kann mir da vielleicht jemend helfen und mir sagen wo mein Fehler liegt?

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    evtl. hast Du SCL und SDA vertauscht? (das kann schnell passieren!)
    Oder allgemein den Sensor falschrum angeschlossen?
    Oder den Mode Pin des SRF02 auf GND gelegt?

    Gibt es evtl. irgendwo Lötfehler (Brücken, kalte Lötstellen o.ä.)?

    Könnte auch ein Adresskonflikt sein? Bei den SRFxx Ultraschallsensoren und beim PCF8574 kann man die Adresse verändern. Beim PCF8574 über die Adresspins und beim SRF per Software.


    Wie sieht Dein Programm aus? Kopier den Code doch einfach mal und poste ihn hier (in [ code ] [ / code ] Tags, bitte)!

    Um herauszufinden was schief läuft wären auch Ausgaben des Programms ganz hilfreich - an wichtigen Stellen könntest Du Ausgaben über die serielle Schnittstelle einfügen um weiter einzugrenzen wo der Fehler auftritt.

    MfG,
    SlyD

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests