PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ja, schon wieder I2C bzw. TWI! ;o)



Florian
04.01.2005, 19:10
Hi @ all readers!
Danke, dass ihr hier reingeschaut habt!
Wie ihr gelesen habt geht es schon wieder um den berühmten I2C- bzw. TWI-Bus der AVR's!
Ich habe einen ATmega16 als MasterTransmitter und einen ATmega8 als SlaveReciever.
Ich habe als Pullups die internen Pullups des Mega16 benutzt, wie man unten im Code sehen kann.
Der Mega16 läuft mit 16MHz und der Mega8 läuft mit 8MHz.
Unten sieht man das Signal von SCL untere Oszi-Amplitude und SDA obere Oszi-Amplitude.
Die Assembler-Codes sehen für die beiden µC wie folgt aus!

Leider funktioniert der Bus nicht richtig.
Kann mir jemand helfen?

p.s.: Es soll eine LED am Slave eingeschaltet werden! ;o) *simpel, aber schwer genug*

Vielen Dank für eure Hilfe! :o)

deftone
04.01.2005, 20:55
Hallo Florian

Soweit ich weiss sollte man das TWI-Hardwareinterface mit externen Pullups beschalten. Bei mir hab ich es so gemacht und der Bus funktioniert.
Den Code hab ich aber noch nicht angechaut...

MfG
deftone

Florian
04.01.2005, 20:58
Hi deftone!
Hast Du auch in ASM programmiert?
Ich habe mal gehört, dass das auch geht, mit den internen!

deftone
04.01.2005, 21:02
Ich programmiere mit Pascal, und nur ganz selten in ASM.
Das es mit den internen Pullups geht wusste ich nicht, muss ich mal testen.

MfG
deftone

Florian
04.01.2005, 21:04
Kannst du mir Deinen Pascalcode posten, ich kann ihn dann übersetzen und nach Fehlern suchen! :o)

Danke! :o)

deftone
04.01.2005, 21:17
Ich glaube nicht das es Dir was nützt, da ich mit AVRco abreite, und da werden Libs für den TWI verwendet. Ich verwende somit nur die dazugehörigen Funktionen

Bsp: TWIout( slavedaress, data/command)
TWIinp( slaveadress, var)

MfG
deftone

Florian
04.01.2005, 21:23
Schade, naja, vielleicht hat ja wer anders nen Code übrig!?
Kann auch in C oder Basic sein! ;o)

Ich vermute überigends Fehler in dem Slavecode, aber wahrscheinlich sind sogar beide Codes Fehlerbehaftet, ich bin durch manche Sachen nicht durchgestiegen! :o(

Florian
04.01.2005, 22:18
Hat keiner nen C Code oder so?
Fänd ich dolle nett von euch! ;o)