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

TC77 - Błąd odczytu temperatury z TC77 podłączonego do Atmega32A

unser2014 09 Lis 2014 15:17 1905 9
REKLAMA
  • #1 14115582
    unser2014
    Poziom 9  
    Mam problem z odczytem Temperatury z TC77, podłączonym do Atmegi 32A

    Atmega -- TC77
    2 MISO PB6 --1 SIO
    3 SCK PB7 --2SCK
    44 PB4 --7CS

    Co robie źle ?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 14115639
    BlueDraco
    Specjalista - Mikrokontrolery
    Nie nadajesz po SPI (nie wystawiasz zegara), a chcesz odebrać dane. Tak to się nie da. W SPI zawsze nadajesz i odbierasz.
  • #3 14116951
    unser2014
    Poziom 9  
    BlueDraco napisał:
    Nie nadajesz po SPI (nie wystawiasz zegara), a chcesz odebrać dane. Tak to się nie da. W SPI zawsze nadajesz i odbierasz.


    W rejestrze SPCR ustawiłem SPI w trybie master, więc powinien być generowany zegar w czasie odbioru, chyba że się mylę ?
  • REKLAMA
  • Pomocny post
    #4 14117121
    piotrva
    VIP Zasłużony dla elektroda
    Nie, poczytaj jak działa SPI - w skrócie każda transmisja to wymiana 8 bitów między urządzeniami. Wymianę kontroluje MASTER.
    Czyli, żeby coś odebrać musisz NADAĆ 8 bitów - w tym samym czasie SLAVE też prześle ci 8 bitów.
    Tu sytuacja jest nieco bardziej skomplikowana, bo układ współdzieli MISO z MOSI.
    Ogólnie ja bym rozwiązał to podpinając SIO do pinu MISO procka, pin MOSI niepodłączony.
    Dodatkowo bym ściągał pin SIO do masy za pomocą rezystora kilka kilo.
    Odczyt polegałby na wysłaniu 16 bitów - w tym czasie w 2 transmisjach odczytałbyś 12 bitów danych z termometru.
  • #5 14120723
    unser2014
    Poziom 9  
    Teraz coś odbiera, tylko konwersja temperatury nie bardzo mi wychodzi :
    TC77 - Błąd odczytu temperatury z TC77 podłączonego do Atmega32A

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





    P.S. Teraz żałuje, że chciałem zaoszczędzić 4zł na DS18b20
  • REKLAMA
  • Pomocny post
    #7 14120876
    el2010tmp
    Poziom 25  
    unser2014 napisał:
    tt=bajt*10000000 +bajt1;
    tt jest typu uint16_t więc maksymalna liczba jaką możesz w niej zapisać to 65535 [2^16-1].

    Zrób tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #8 14120918
    michalko12
    Specjalista - Mikrokontrolery
    el2010tmp napisał:
    Zrób tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Bardziej się postaraj, bo przy tym sposobie ujemnych temperatur nie ujrzysz.
  • #9 14121624
    unser2014
    Poziom 9  
    Czy to normalne, że ten czujnik ma aż takie wahania odczytu (ponad 1,5C) ?
    TC77 - Błąd odczytu temperatury z TC77 podłączonego do Atmega32A
  • REKLAMA
  • #10 14121667
    michalko12
    Specjalista - Mikrokontrolery
    Jeśli ma źle odfiltrowane zasilanie to tak może być.
REKLAMA