Hallo,
das kann viele Ursachen haben (sowohl auf dem Master als auch auf den Slaves) und ist allgemein schwer zu debuggen wenn man nur einen Forenbeitrag vor sich hat
Läuft der I2C Bus mit 100kBit/s oder 400kBit/s? Mal umschalten.
Wieviele Daten fragst Du wie häufig ab?
Bytes / s ?
Natürlich entsteht noch Protokoll overhead (Start, Stop, pausen... ) also die 400kBit/s ist NICHT die Nutzdatenrate.
Ändert sich in Deinem Programm auf der M128 irgendwas wenn die Motoren laufen?
(werden mehr Daten abgefragt...?)
Klappt es wenn Du die Daten weniger häufig abfragst oder ein paar Daten weglässt?
Frag mal NUR die Base oder NUR die M32 ab.
Nutzt Du die Interrupt Signale oder fragst Du einfach IMMER ALLE Sensordaten ab?
Die Regelungsroutinen auf der Base benötigen natürlich zusätzliche Rechenleistung und es werden durch die Drehgeber Interrupt Events im MEGA32 erzeugt (je Flanke ein Interrupt - d.h. 625 je Radumdrehung und Encoder).
Die Regelungsroutinen werden standardmäßig alle 200ms aufgerufen.
Bitte auch bedenken das der MEGA32 auf der Base mit 8MHz läuft (weniger Energiebedarf) und nicht mit 16MHz wie auf dem RP6-M32 Modul.
MfG,
SlyD
Lesezeichen