de module i2cinterface is de module die de initialisatiecode via I2C naar de codec stuurt. dit hoeft alleen 1 keer bij het opstarten te gebeuren. het rottige is nu dat de I2C_SDAT pin (de bidirectionele I2C data pin) de hele tijd laag blijft als ik kijk via signaltap, het lijkt dus alsof hij nooit in tristate gaat.
hoe zit het in elkaar: als de reset 0 wordt, start er een statemachientje dat 1 voor de 1 de waardes op het pinnetje I2Cdat zet, dit is de waarde die bij de I2C slave moet aankomen. dat werkt ook , dat draadje wordt ook 1.
als I2Cdat een waarde van 1 heeft wordt het pinnetje I2C_SDAT (de pin die naar de slave gaat) getristate, als hij waarde 0 heeft wordt I2C_SDAT 0.
het rottige is nu, als ik via signaltap kijk blijft I2C_SDAT de hele tijd 0.
hoe komt dit? ik kom er niet meer uit. het vreemde is dat als ik via signaltap naar het origineel van terasic kijk, dat het dan wel gewoon werkt en I2C_SDAT wordt daar ook 1 (tristate). wie ziet het verschil?
in allebei zit de signaltap kant en klaar ingebouwd.
het originele terasic project als zipje: klikkie
mijn versie: klikkerdeklik (alleen module i2cinterface hoort bij het initialisatiedeel, de rest is weer wat anders.)
een printscreen van de signaltap van het origineel, I2C_SDAT is de I2C data pin, SDO is het pinnetje wat de data aangeeft die op de data pin moet staan.

en de signaltap van mijn versie, hier is I2Cdat het draadje dat de gewenste waarde aangeeft.
[Bericht gewijzigd door DanielBakker op 2 juli 2009 18:26:30 (11%)]




