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

[atmega8][c] pcf8583 po sprzętowym TWI-brak komunikacji.

zuraf 26 Cze 2011 03:37 1853 7
  • #1 9650545
    zuraf
    Poziom 14  
    Witam.

    W C programuję od niedawna i mam problem w uruchomieniem PCF8583 po sprzętowym TWI. Przestudiowałem noty, popodglądałem rozwiązania innych...no i nie działa. Linie danych podciągnięte do Vcc rezystorami 2kOhm.

    Wartość, którą odczytuje, to adres PCF'a.

    Gdzie może być błąd? Może jest to spowodowane porą, ale ja już nie mam pomysłu.

    Pozdrawiam, Tomasz.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 9650591
    Bdeath
    Poziom 10  
    Zerknij tu jak jest wykonywany odczyt z linii i porównaj

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Przy czym dla odczytania kilku bajtów musisz, dla wszystkich poza ostatnim ustawiać ack > 0 (= true)
  • #3 9650706
    ssl69
    Poziom 13  
    co robi ta funkcja w "twi_start" ?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    pozdrawiam
    ssl69
  • #4 9650946
    zuraf
    Poziom 14  
    Ta funkcja miała wyświetlać zawartość TWSR, z zamaskowanymi bitami preskalera. Jecz nie wiem w jaki sposób wymyśliłem, by zrobić to operatorem alternatywy:D
  • #5 9651747
    ssl69
    Poziom 13  
    Funkcje "odczyt_twi" masz dosyć "ubogą". Odczytujesz wartość, którą chwilę wcześniej sam wpisałeś do TWDR. Zerknij w przykład kolegi Bdeath.
  • #6 9652192
    zuraf
    Poziom 14  
    dziękuję koledze Bdeath za przykład kodu. Pomogło! Niestety pojawił się kolejny problem... odczytuję kolejne bajty, zamieniam z bcd na dec, tylko że, sekundy są zliczane do...90....
  • #7 9652257
    Bdeath
    Poziom 10  
    Zastanawiam się jak robisz konwersję bcd->bin, dla pewności możesz zamaskować nieużywany bit rejestru PCF'a
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Powinno pomóc.
  • #8 9654002
    zuraf
    Poziom 14  
    Winna byłą funkcjia zamieniająca bcd na dec. PCF rozpracowany.

    Lecz jest i następny problem. Kombinuję już we wszystkie strony i brakuje mi pomysłów. Próbuję wprowadzić atmegę w tryb power-down. Procek się usypia, po wybudzeniu (przerwanie stanem niskim) wykonuje raz pętlę while(1), a następnie łapie zwiechę...

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA