Sanjuro Poziom 16

Joined: 21 Jan 2004 Posts: 299
|
#7
30 Nov 2004 19:30 Re: Problemy z odczytem DS1923 |
|
|
|
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.
|
|