logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AtMega168/C - Losowe zawieszanie TWI przy sygnale START, błąd 0xF8

ADI-mistrzu 03 Sty 2013 12:24 744 0
REKLAMA
  • #1 11733840
    ADI-mistrzu
    Poziom 30  
    Witam,

    Od jakiegoś czasu już mam z tym problem, ale z racji że był on sporadyczny, to odkładałem jego rozwiązanie na później.
    Ale teraz wziąłem się za niego.

    Ogółem problem jest taki, że czasem przy uruchamianiu mikrokontrolera zawiesza się transmisja przez TWI.
    Sprawa jest o tyle dziwne że następuje tylko i wyłącznie podczas nadawania sygnału START.
    Odczytałem rejestr TWSR w celu sprawdzenia statusu błędu i tutaj jestem zaskoczony... wszystkie bity TWSx mają wartość 1 (pierwsze 3 bity 0).
    Oznacza to że jest to błąd 0xF8 czyli TWI_NO_STATE (No relevant state information available).

    No i tutaj problem... co z tym?
    Jest to o tyle irytujące że błąd pojawia się tyko przy starcie, w trakcie pracy programu jest wszystko ok.
    Nie jest to spowodowane narastaniem napięcia, ponieważ przy restarcie procesora ten problem także występuje.
    Po prostu losowo co jakiś czas następuje niemożność wysłania sygnału START.

    Spotkał się ktoś z czymś takim?
    Tutaj kod obsługi TWI:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jak widać próbuję ponawiać transmisję, ale efekt jest taki że diody informujące mi o błędzie (zapalane przez register_data() ) jedynie ciągle migają tym samym błędem.
  • REKLAMA
REKLAMA