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

Liczba postów: 451
Dołączył: 14-02-2015
Post: #18
RE: ATxMega128 i TWI - problemy... cd
Tak. Po zmodyfikowaniu:
Kod:
unsigned char mem_read_reg(unsigned char addr, uint16_t reg)
{
    uint8_t data;
    //nadaj adres slave + nr rejestru
    TWIC_MASTER_ADDR = addr;                                    //adres ukladu + WR, generuje START
    while(!(TWIC_MASTER_STATUS & TWI_MASTER_WIF_bm));            //wait for WIF
    twic_result = twic_test_result();                            //wez status operacji
    if (twic_result != TWI_ACK) return 0;                        //ACK idz dalej, inny zwracaj kod bledu

    TWIC_MASTER_DATA = (reg & 0xFF00) >> 8;                        // /256 adres rejestru
    while(!(TWIC_MASTER_STATUS & TWI_MASTER_WIF_bm));            //wait for WIF
    twic_result = twic_test_result();                            //wez status operacji
    if (twic_result != TWI_ACK) return 0;                        //ACK idz dalej, inny zwracaj kod bledu

    TWIC_MASTER_DATA = reg & 0x00FF;                            //adres rejestru
    while(!(TWIC_MASTER_STATUS & TWI_MASTER_WIF_bm));            //wait for WIF
    twic_result = twic_test_result();                            //wez status operacji
    if (twic_result != TWI_ACK) return 0;                        //ACK idz dalej, inny zwracaj kod bledu

    TWIC_MASTER_ADDR = addr;                                    //adres ukladu + WR, generuje START
    while(!(TWIC_MASTER_STATUS & TWI_MASTER_WIF_bm));            //wait for WIF
    twic_result = twic_test_result();                            //wez status operacji
    if (twic_result != TWI_ACK) return 0;                        //ACK idz dalej, inny zwracaj kod bledu

    //nadaj adres do odczytu
    TWIC_MASTER_ADDR = addr | 0x01;                                //adres ukladu I2C + RD
    while(!(TWIC_MASTER_STATUS & TWI_MASTER_RIF_bm));            //czekaj na zakonczenie odbioru
    
    data = TWIC_MASTER_DATA;                                    //odczytany bajt

    // send NACK and STOP
    TWIC_MASTER_CTRLC = TWI_MASTER_ACKACT_bm|TWI_MASTER_CMD_STOP_gc;
//    twic_result = TWI_OK;                                        //poprawna operacja
    return data;
}

Coraz bardziej podejrzewam 24C512 - nie mam, muszę zakupić...
Rozebrałem, na pamięci napis ATMLH440. Szukam info...

73 Staszek SP2GNB
(Ten post był ostatnio modyfikowany: 14-12-2016 20:57 przez SP2GNB.)
14-12-2016 20:57
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: ATxMega128 i TWI - problemy... cd - SP2GNB - 14-12-2016 20:57

Skocz do:


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