Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
ATxMega128 i TWI - problemy... cd
SP5FCS Offline
Adam
*****

Liczba postów: 1,072
Dołączył: 02-02-2009
Post: #9
RE: ATxMega128 i TWI - problemy... cd
W celu uproszczenia zapisu zdefiniowałem nowy typ u8, zawsze to mniej pisania niż uint8_t lub niejednoznaczny uint.

Kod:
///////////////////////////////////////////////////////////////////////////////////////////////////
// TWI write buffor
// addr - adres ukladu, *buffer - wskaznik do bufora danych, length - ilosc bajtow
void twic_write_buf(u8 addr, u8 *buffer, u8 length)
{
u8  i;
//nadaj adres slave  
TWIC.MASTER.ADDR = addr;                               //adres ukladu + WR,
                                                                     //generuje  START                                                                
while(!(TWIC.MASTER.STATUS&TWI_MASTER_WIF_bm));        //wait for WIF

//petla wysylania bajtow do slave
for (i=0;i<length;i++)
    {
    twic_result=twic_test_result();                     //wez status operacji
    if (twic_result!=TWI_ACK) return;                   //ACK idz dalej,
    
    TWIC.MASTER.DATA = *buffer++;                       //wskaznik do bufora danych                                   
    while(!(TWIC.MASTER.STATUS&TWI_MASTER_WIF_bm));     //wait for WIF
    };
    
//zakonczenie wysylania danych do slave
TWIC.MASTER.CTRLC=TWI_MASTER_CMD_STOP_gc;              //rozkaz STOP dla TWI
twic_result=TWI_OK;                                    //poprawna operacja                            
}

Na bazie tych trzech funkcji możemy napisać obsługę dowolnego układu z innterfejsem I2C /PCF8574, 24c512, Si570, itd. /.

73 Adam
12-12-2016 20:02
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: ATxMega128 i TWI - problemy... cd - SP5FCS - 12-12-2016 20:02

Skocz do:


Użytkownicy przeglądający ten wątek: 6 gości