Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATMEGA16]+BASCOM+DS18B20 - Zamiana Waitms 750 na Timer

Retran 24 Gru 2012 04:45 1737 2
  • #1 24 Gru 2012 04:45
    Retran
    Poziom 9  

    Witam wszystkich!
    Pewnie pomyślicie "znowu to samo", no ale zlitujcie się w Wigilię i przeczytajcie te kilka zdań :D

    Walczę z problemem od kilku dni. Nie potrafię skonfigurować Timera by konwertował dane z 1wire poza główną pętlą. Nie mogę sobie pozwolić na waitms, bo wtedy mam problemy z poruszaniem się w menu. Mam już działający Timer1 odliczający sekundę (dokładności nie sprawdzałem, ale na oko i z wyliczeń jest ok) i wyświetlający czas. Trzeba jakimś cudem przenieść coś do funkcji Timera, żeby "odmulić" podprogram Temperatura. Kombinowałem z przeniesieniem już 1wreset, 1wwrite &HCC i 1wwrite &H44, ale w większości przypadków wskazywana temperatura z obu czujników była równa 0 lub zaraz po wejściu do programu było ok, ale po sekundzie znów się zerowała.

    W załączniku mój uproszczony kod. Wyrzuciłem inne podprogramy i nie sprawdzałem "wersji okrojonej", więc za inne błędy przepraszam - wszystko w fazie testów i dopracowywania jest jeszcze :D . To mój pierwszy taki projekt i proszę o wyrozumiałość. Każda wskazówka się przyda. Nawet te w stylu "Poczytaj to i to" :)

    Pozdrawiam i Wesołych Świąt życzę ;)

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 2
  • Pomocny post
    #2 24 Gru 2012 08:52
    alien_audio
    Poziom 21  

    Witam.
    Może spróbuj tak po wywołaniu przerwania ( u Ciebie co sekunda)
    Odczytaj termometr DS. A następnie wydaj rozkaz pomiaru temperatury.
    W następnym przerwaniu odczytasz go o tak w kółko.

    0
  • #3 24 Gru 2012 15:06
    Retran
    Poziom 9  

    heheh, już tak miałem wcześniej, ale przeniosłem ponownie tak ja mi napisałeś alien_audio i zastanawiałem się co mogłem popsuć, bo na logikę to po prostu MUSI działać :P Widać siedzenie do późna mi nie służy, bo... odliczanie sekundy trwało krócej, przez co 1wire nie zdążył konwertować, a już kolejne dane przychodziły do odczytu :P Tak to jest jak człowiek nie pomyśli o konsekwencjach a ustawia Timery i crystala inne niż miał na początku ;)

    Pozdrawiam, dzięki ;)

    0