PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 TWI Defekt



Magelan1979
21.06.2010, 14:22
Hallo,

gibt es eine Möglichkeit, von der RP6-Base aus zu testen, ob die I2C-Schnittstellen funktionieren?. Denn, egal ob ich die M32 oder die M128 anschließe, ich bekomme bei den SelfTests immer beim TWI-Test die Fehlermeldungen.

M32

I2C ERROR - TWI STATE: 0x20

M128


Testing I2C Communication...



I2C COMMUNICATION ERROR!



################################################## ##########

SELFTEST FAILED! PLEASE CHECK MODULE FOR ASSEMBLY MISTAKES!

################################################## ##########


Da ich nicht davon ausgehe, dass meine beiden M32 und die M128 hinüber sind fürchte, dass der Worst-Case eingetreten ist. Wenn mir jemand helfen könnte das zu widerlegen wäre ich erfreut.

Gruß Magelan

TobiKa
21.06.2010, 14:53
Schon gelesen für was "I2C ERROR - TWI STATE: 0x20" steht?
Bzw. die Fehler ausgeschlossen?

Magelan1979
21.06.2010, 15:07
Wenn ich mich nicht irre, dann besagt der, dass er auf das SlaveProgramm wartet

TobiKa
21.06.2010, 15:09
/**
* This function gets called automatically if there was an I2C Error like
* the slave sent a "not acknowledge" (NACK, error codes e.g. 0x20 or 0x30).
* The most common mistakes are:
* - using the wrong address for the slave
* - slave not active or not connected to the I2C-Bus
* - too fast requests for a slower slave
* Be sure to check this if you get I2C errors!
*/

Magelan1979
21.06.2010, 16:05
Schön wär´s. Aber um zu testen habe ich die jungfräulichen Beispielprogramme verwendet, welche vor 2 Monaten noch funktionierten.

TobiKa
21.06.2010, 16:48
Funktioniert der Controller denn ansonsten wie er soll?
Irgendwas an den FuseBits geändert?

Superfreak
21.06.2010, 20:46
bei mir ist dasseöbe problem, nur bei mir hat der Selftest überall bei den TWi eingängen error meldungen.

funktioniert dann bei mir der I²C bus ü+berhaupt nicht ?

SlyD
22.06.2010, 14:53
Hallo,

also erstmal müssen in BEIDE Controller die passenden Programme geladen sein. Also das Slave Programm in die RP6Base und das Master Programm in das RP6-M32 Modul.

Dann kontrollieren ob in den Programmen die Adressen stimmen und ob beide gestartet werden (LEDs auf dem Mainboard gehen aus nachdem das Slave programm gestartet wurde).

ALLES ANDERE vom Bus trennen.

Wenn es dann nicht klappt, mal die Flachbandkabel wechseln und checken ob die Steckverbinder in Ordnung sind oder ob da Pins verbogen sind o.ä.

Für die M128 Unit die Jumper Einstellungen kontrollieren - insbesondere die Adresse des Temperatursensors.

Und mehr als EIN Master sollte natürlich nicht gleichzeitig aktiv sein.

Zum testen ob die Pins noch funktionieren kann man z.B. erstmal ein
Programm schreiben das überprüft ob SDA und SCL beide als "High" Pegel eingelesen werden wenn NICHTS anderes am Bus angeschlossen ist bzw. das Programm im anderen Controller nicht läuft (löschen!).
Also ohne I2C Initialisierung die Pins auf Eingang schalten und testen.
PRTC &=~SCL; PRTC &=~SDA; DDRC &= ~SDA;DDRC &= ~SCL; if (PINC & SCL) writeString_P("\n jop :-) \n"); ... etwa in der art evtl. auch ne LED schalten o.ä. .
Wegen den Pullups am Bus sollte da high rauskommen.

Dann könnte man mit einem Stück Draht VORSICHTIG und VORHER SICH SEBST ENTLADEN wegen statischer Entladungen mit einem Stück Draht die SCL und SDA Pads auf dem Mainboard nach GND verbinden und prüfen ob das klappt.

MfG,
SlyD

Superfreak
22.06.2010, 18:26
Ich habe 4 verschieden Wannensteckerleitungen ausprobiert und die wannenstecker überprüft, alle haben verbundenen Pins haben Kontakt

Dann habe ich das I²C master Programm mit rübergeladen und verscheiden SMd-taster betätigt. Nach jedem Tastendruck kommt die I²C bus Error Meldung. (Egal bei welchem Taster)

Daraufhin habe ich sda und SCL entladen und es noch einmal ausprobiert leider klappte es danach immer noch nicht.

Sonst noch welche Fehlerursachen?

SlyD
22.06.2010, 18:38
> Daraufhin habe ich sda und SCL entladen

????? Hehe ;) :P
Ich meinte selbstverständlich DICH entladen bevor Du mit Deinen Fingern den Roboter berührst wegen elektrostatischen Entladungen Deinerseits gegenüber dem Roboter (s. Anleitung Sicherheitshinweise!!!) das kann die Pins beschädigen wenn man zu unvorsichtig ist da man selbst schnell ein paar tausend Volt Funken generieren kann.

Und das gegen GND schalten war im zusammenhang mit obigem Programmcode Fragment gemeint das ich gepostet habe mit dem man das prüfen könnte ob die Pins den Pegel noch richtig mitbekommen, nicht mit irgendeinem Demo Programm...


Nochmal zurück:
Das I2C Slave Programm ist in den Roboter geladen und das Taster Program in das Erweiterungs Modul, ja?

(ich muss immer davon ausgehen das das nicht gemacht wurde wenns nicht explizit gesagt wurde daher die genauen nachfragen - alles schon da gewesen auch das USB Programmierkabel nicht am jeweiligen Modul angeschlossen und Programm in den falschen Controller geladen usw. )


Beispielprogramme mal neu runterladen neu entpacken und nochmal probieren.

Akkus sind auch voll aufgeladen und in Ordnung?

MfG,
SlyD