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.

Problemy z odczytem DS1923

Sanjuro 26 Lis 2004 23:15 2073 9
  • #1 26 Lis 2004 23:15
    Sanjuro
    Poziom 18  

    Czy ktos juz wykorzystywal czujniczek DS1923? Jak cos do niego wpisac lub odczytac?

    Bo ja najpierw probowalem odrazu zrobic konwersje i odczytac z pamieci pomiary, ale mialem tylko odczyt FFh. Wkoncu doczytalem sie ze trzeba uruchomic RTC. Wiec wpisuje do ScratchPada (czy jak mu tam) adres rejestru kontroli zegara i i wpisuje 03h (uruchomienie oscylatora i szybki okres), nastepnie odczyt ScratchPada i... nawet nie dochodze do kopiowania ScratchPada do pamieci bo mi znowu wywala FFh :( Co musze zrobic zeby orzywic tego Hygrochrona??

    0 9
  • #2 28 Lis 2004 12:48
    wisiena
    Poziom 18  

    Witam !!!
    Nie wiem dlaczego nie piszesz nic o inicjowaniu pomiaru. Ja zwykle robie tak:
    1. wysyłam rozkaz inicjujący pomiar
    2. czekam na zakończenie czyli wypełnienie Pada
    3. odczytuje Pada.

    Pozdrawiam (M.)

    0
  • #3 29 Lis 2004 12:04
    Sanjuro
    Poziom 18  

    Taaaa zeby to bylo takie proste jak przy na ds1820 i tym podobnych to bylo by fajnie. Ale ten ma dosc dziwne utrudnienia. Jest to czujnik temperatury i wilgotnosci, a przedewszystkim loger czyli ma RTC, baterie i pamiec gdzie zapisuje wyniki pomiarow. Dodatkowo moze byc zabezpieczony 2 haslami (odczyt / zapis). Problem w tym ze musze najpierw uruchomic oscylator dla RTC by moc wymusic konwersje i zrobic odczyt, ale za cholere nie mode nic wpisac/odczytac. Tzn wpis moze jest, ale przy odczycie mam tylko FFh co oznacza jakis blad (zwykle adres lub haslo a przy buforze to blad ogolny). Aby zainicjowac oscylator musze zrobic 3 rzeczy:

    1) Wpisac do bufora (ScratchPad) adres rejestru gdzi chce cos zmienic/wpisac. Wpisac dane. Adres koncowy offestu scratchpada musi byc rowny 1Fh.

    2) Odczytac dane z bufora w celu weryfikacji

    3) skopiowac bufor do rejestrow czujnika.

    Ja zatrzymuje sie przy punkcie 2 i nijak nie moge tego ominac. Probowalem nawet zgodnie z przykladem z pdf'u wpisywac tak jakbym chcial zaczac nowa misje logowania (tyle ze nie wlanczalem misji w rejestrach kontroli logowania). I dalej nie wiem co jest przyczyna.

    0
  • #4 29 Lis 2004 15:58
    zumek
    Poziom 39  

    Witam.
    Wiem , to jest oczywiste , ale jakoś nikt nie wspomniał o "reset pulse" i "presence pulse".Czy układ odpowiada na reset ?

    Pzdr.
    Piotrek Sz.

    0
  • #5 29 Lis 2004 19:35
    Sanjuro
    Poziom 18  

    Tak robie reseta i jak nie mam presence to zapetlam reseta by czujka odpowiedziala. Czyli jakby nie wystapil presence to by mi program sie zapetlil na resecie 1wire i bym nie odczytal bledu FFh

    0
  • #6 29 Lis 2004 22:06
    zumek
    Poziom 39  

    Sanjuro napisał:
    Tak robie reseta i jak nie mam presence to zapetlam reseta by czujka odpowiedziala. Czyli jakby nie wystapil presence to by mi program się zapetlil na resecie 1wire i bym nie odczytal bledu FFh


    Hmm...
    To się nie dziwię , że nie możesz się dogadać z DS-em , jeśli nie wiadomo , po ilu resetach Ci odpowiada(?) :(
    FF-y świadczą o milczeniu DS-a - nieodpowiednie sloty czasowe.
    W czym piszesz kod , dla jakiego proca , jaki kwarc ... :?:
    Wrzuć kawałek kodu .

    Pzdr.
    Piotrek Sz.

    0
  • #7 30 Lis 2004 18:30
    Sanjuro
    Poziom 18  

    Jako ze mialem problemy z uruchomieniem w C wyswietlacza, a nie mam teraz czasu na bawienie sie z zaleznosciami czasowymi, wiec sprobowalem bascomem (o dziwo wyswietlacz sie uruchomil bez problemow). Czyli jezyk dla ulomnych wiec sam dopasowywuje zaleznosci czasowe dla procedur. Kwarc 8MHz, proc 90S4433.
    Kwarc taki duzy bo w zalozeniach mialem liczyc jeszcze punkt rosy (potrzebny log10), ale to moze jak uruchomie najpierw ten czujnik i przerzuce kod na c (bo w bascomie mi sie nie miesci). Nad przeniesieniem kodu bede siedzial dopiero wprzerwie swiatecznej.
    Petla z resetem po to, by czujnik jak bedzie zajety odezwie sie dopiero po resecie ktory nastapi gdzies po skonczeniu swojego zadania wewnetrznego (oprocz tego robie w odpowiednich miejscach przerwy by sie mogl wyrobic). Jak narazie to probowalem krok po kroku cos robic i to zgodnie z tym co przy koncy pdf'u pisza jak zrobic nowa misje. Tyle ze zmienilem dane z rejestrow uruchamiajacych misje, gdyz niechce logowania, a tylko pomiar. Procedurka odpowiadajaca za inicjalizacje m.in. RTC:

    Code:

    Sub Wlaczds1923
      Local X As Byte
      1wreset Pinc , 1        'petla dopuki ds sie nie odezwie.
      If Err = 1 Then
        Cls
        Lcd Ds1923
        Do
          1wreset Pinc , 1
        Loop Until Err = 0
      End If
      1wwrite &HCC , 1 , Pinc , 1        'Ominiecie ROM
      1wwrite &H0F , 1 , Pinc , 1         'Zapis do scratchpada
      1wwrite &H00 , 1 , Pinc , 1         'Adres docelowy w
                                                     'rejestrze
      1wwrite &H02 , 1 , Pinc , 1         '2bajt adresu
      1wwrite &H00 , 1 , Pinc , 1         'Tu jest zgodne z pdf'em
      1wwrite &H30 , 1 , Pinc , 1         'ustawiany zegar
      1wwrite &H15 , 1 , Pinc , 1
      1wwrite &H15 , 1 , Pinc , 1         'data
      1wwrite &H05 , 1 , Pinc , 1
      1wwrite &H04 , 1 , Pinc , 1
      1wwrite &H0A , 1 , Pinc , 1         'czestotliwosc logowania
                                                     'malo wazne gdy nie log
      1wwrite &H00 , 1 , Pinc , 1                             
      1wwrite &H66 , 1 , Pinc , 1         'alarm temp.
      1wwrite &H7A , 1 , Pinc , 1
      1wwrite &H6F , 1 , Pinc , 1         'alarm wilg.




      1wwrite &H9E , 1 , Pinc , 1
      1wwrite &HFF , 1 , Pinc , 1         'tylko do odczytu
      1wwrite &HFF , 1 , Pinc , 1
      1wwrite &HFF , 1 , Pinc , 1
      1wwrite &HFF , 1 , Pinc , 1
      1wwrite &H00 , 1 , Pinc , 1        'nie wlanczaj alarmu t
      1wwrite &HFC , 1 , Pinc , 1        'nie wlanczaj alarmu Rh
      1wwrite &H01 , 1 , Pinc , 1        'wlacz oscylator RTC
      1wwrite &HCC , 1 , Pinc , 1       'nie wlanczaj misji
      1wwrite &HFF , 1 , Pinc , 1         'tylko do odczytu
      1wwrite &HFF , 1 , Pinc , 1
      1wwrite &H00 , 1 , Pinc , 1        'opoznienie misji
      1wwrite &H00 , 1 , Pinc , 1
      1wwrite &H00 , 1 , Pinc , 1
      For X = 1 To 7
        1wwrite &HFF , 1 , Pinc , 1      'Do konca sratchpada
      Next X                                    'czyli by uzupelnic do
                                                   '32bajtow
      1wreset Pinc , 1
      If Err = 1 Then
        Cls
        Lcd Ds1923
        Do
          1wreset Pinc , 1
        Loop Until Err = 0
      End If
      1wwrite &HCC , 1 , Pinc , 1      'Ominiecie ROM
      1wwrite &HAA , 1 , Pinc , 1      'Odczyt ScratchPada
      T(1) = 1wread(3 , Pinc , 1)      'I to tutaj juz wywala mi
                                                   'FFh a powinno dac adres
                                                   'i ofest
      For I = 1 To 32
        T(4) = 1wread(1 , Pinc , 1)     'to taka prowizorka bo i
                                                   'tak pierwsze 3bajty sa
                                                   'niepoprawne
      Next I
      Waitms 1000
      Lcd T(1) ; T(2) ; T(3)
      1wreset Pinc , 1
      If Err = 1 Then
        Cls
        Lcd Ds1923
        Do
          1wreset Pinc , 1
        Loop Until Err = 0
      End If
      1wwrite &HCC , 1 , Pinc , 1      'Ominiecie ROM
      1wwrite &H99 , 1 , Pinc , 1       'Copy ScratchPad
      1wwrite &H00 , 1 , Pinc , 1       'Adres docelowy
      1wwrite &H02 , 1 , Pinc , 1           
      1wwrite &H1F , 1 , Pinc , 1       'ofest scratchpada
      For X = 1 To 8
        1wwrite &HFF , 1 , Pinc , 1     'fake haslo 64bit
      Next I
      1wreset Pinc , 1
    End Sub


    Sposob zapisu komend odpowiedzialnych za 1wire taki, gdyz na PC0 mam czujnik DS18b20 i chcialem ominac ROM (kody czujnikow). DS18B20 dziala a takze ma petle z resetem, wiec ta nie powinna wplywac na wynik odczytu.

    Jak narazie chyba nie ma sensu bym podawal inna czesc kodu gdy juz tu mam problemy przy weryfikacji danych przeslanych do scratchpada. Probowalem na poczatku odrazu ominac niepotzrbne rejestry i zaczac od 0212h czyli kontroli RTC (ofest w scratchpadzie 12h). Wiec do scratchpada musialbym wpisac 2bajty znane czyli kontrole RTC i logowania, reszta niewazna czyli 11 bajtow by osiagnac wymagany ofest 1Fh (1Fh-12h = 13 bajtow), ale tez nie wyszlo. Nawet proba odczytania stanu misji (czyli to co moze mi bruzdzic) takze konczyla sie niepowodzeniem.

    0
  • #8 28 Maj 2006 12:45
    12811
    Użytkownik usunął konto  
  • #9 28 Maj 2006 12:57
    janek1815
    Poziom 38  

    witaj sanjuro udalo ci się ożywić te ds bo u mnie tez leza i nie wiem jak sie za nie zabrać

    0
  • #10 28 Maj 2006 12:57
    janek1815
    Poziom 38  

    witaj sanjuro udalo ci się ożywić te ds bo u mnie tez leza i nie wiem jak sie za nie zabrać

    0