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
Aus den RP6 Beschreibungen und RN-Wissen:
Das neue Erweiterungssystem des RP6 basiert auf dem 400kBit/s schnellen seriellen I²C BusLeistungsfähiger Atmel ATMEGA32 8-Bit Mikrocontroller Geschwindigkeit 8 MIPS ... bei 8MHz TaktEs gilt die Formel: TWBR = (CPU-Frequenz / SCL-Frequenz -16)/2Die 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.
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?
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
Hallo ehenkes,
Ist bei der Initialisierung als Master einstellbar - man kann die Bitrate in kBit vorgeben.Mit welcher Frequenz wird der I²C-Bus aktuell in der Bibliothek betrieben?
z.B. so:
Code:I2CTWI_initMaster(50); // 50kBit I2CTWI_initMaster(100); // 100kBit I2CTWI_initMaster(220); // 220kBit I2CTWI_initMaster(400); // 400kBit - für RP6-M32
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.Für 400 kHz müsste man doch auf 16 MHz aufrüsten, oder übersehe ich da etwas?
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
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.
> 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
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.Es macht aber schon einen Unterschied ob ein Bot 2h oder 6h läuft!
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
Interessant. Danke für die Info.
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?
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
Lesezeichen