Forum » Elektrotehnika in elektronika » Komunikacija med XP6840 in AT91SAM9260EJS preko I2C vodila
Komunikacija med XP6840 in AT91SAM9260EJS preko I2C vodila
KernelPanic ::
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:
Lp,
M.
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:
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_signlePo 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.
KernelPanic ::
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.
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.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | I2C komunikcijaOddelek: Elektrotehnika in elektronika | 1303 (539) | r-a-m |
» | Arduino "leteče luči"Oddelek: Elektrotehnika in elektronika | 3012 (1889) | zrataj4201 |
» | C in funkcije ter #defineOddelek: Programiranje | 3969 (2330) | misek |
» | priklop lcd preko i2cOddelek: Elektrotehnika in elektronika | 1513 (1282) | cefizl88 |
» | C - pomočOddelek: Programiranje | 1457 (1197) | Thagirion |