 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
MarkoSan Član

Pridružen-a: Pon 11 Dec 2006 12:20 Prispevkov: 123 Aktiv.: 0.55 Kraj: Ljubljana
|
Objavljeno: Čet Feb 09, 2012 10:04 pm Naslov sporočila: Komunikacija med XP6840 in AT91SAM9260EJS preko I2C vodila |
|
|
Spostovani!
Pisem driver za I2C modul na ARM procesorju Atmel ARM91SAM9260EJS preko I2C vodila (Atmelova nomenklatura za I2C vodil je TWI-Two Wire Interface) in stvar mi dela obcasno. Skusam realizirati osnovno funkcionalnost (posiljanje naslova integriranega vezja XP6840) in stvar je zjutraj delovala, sedaj pa ne in ne vem, kaj delam narobe. Koda je sledeca:
Koda: |
int TWI_write_single(AT91PS_TWI pTWI,
const unsigned int iDeviceAddress,
const char pData)
{
volatile unsigned int iStatus=0;
volatile unsigned int iError=0;
volatile unsigned int iEnd=0;
if(pTWI==0)
return;
// System Reset
pTWI->TWI_CR=AT91C_TWI_SWRST;
// Sets TWI Clock
pTWI->TWI_CWGR=(0x8)|
(0x8<<8)|
(0x7<<16);
// Sets up device address and data direction
pTWI->TWI_MMR=(iDeviceAddress<<16)|
(iDirectionWrite<<iMasterDirection);
// **** Interupt Enable Setup (enable NACK interrupt)
pTWI->TWI_IER|=(iOn<<iNotAckowledged);
// **** END OF Interrupt Enable Setup
// Sets up Master Mode
pTWI->TWI_CR=(iOn<<iConditionStart)|
(iOn<<iMasterModeEnable)|
(iOn<<iSlaveModeDisable);
pTWI->TWI_THR=pData;
/*
pTWI->TWI_CR|=((iOff<iConditionStart)|
(iOn<<iConditionStop)|
(iOff<iMasterModeEnable));
*/
/*
TWI_delay(40);
while(!iEnd)
{
iStatus=pTWI->TWI_SR;
if((iStatus&AT91C_TWI_NACK)==AT91C_TWI_NACK)
{
iError++;
iEnd=1;
} // if
if((iStatus&AT91C_TWI_TXRDY)==AT91C_TWI_TXRDY)
{
iEnd=1;
} // if
} // while
iStatus=pTWI->TWI_SR;
while(!(iStatus&AT91C_TWI_TXCOMP))
{
iStatus=pTWI->TWI_SR;
} // while
*/
return iError;
} // TWI_write_signle |
Po dokumentaciji sledec se ob polnitvi registra TWI_THR posiljanje prozi samodejno, vendar se LED dioda na evaluation boardu vezja XP6840 (Ready) ne prizge. Na tem boardu je tudi gumb, ki prozi praznjenje kondenzatorja za blisk 3 LED diod in zjutraj mi je to delovalo, sedaj pa ne. Zanima me, ce se je kdo s tem ze ukvarjal (I2C nasplosno) in kaksne so zacetniske napake. Konektor sem zlotal sam in z voltmetrom sem preveril povezavo, povezava je ok. Evaluation board napajam iz predelanega napajalnika za PC (pomeril sem dovod napajalne napetosti, je ok - 5.2V), ARM board (SMS razvojna plosca od Fakultete za Racunalnistvo in Informatiko) se pa napaja preko USB komunikacije z PCjem. Ima kdo kaksne nasvete?
Lp,
M. |
|
Nazaj na vrh |
|
 |
MarkoSan Član

Pridružen-a: Pon 11 Dec 2006 12:20 Prispevkov: 123 Aktiv.: 0.55 Kraj: Ljubljana
|
Objavljeno: Pet Feb 10, 2012 6:47 pm Naslov sporočila: |
|
|
Spostovani!
Stvar mi je uspela, TWI port ni bil pravilno skonfiguriran in sem vam hotel posneti par LED efektov, ampak, na zalost, ker sem storast, sem nehote vezje skuril in cakam novega. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|