Mam Atmegę 128 (14.745.600Hz).
I otoż na porcie B.4 mam sobie termometr DS18B20.
Próbuję się z nim skomunikować i mam dziwny problem.
Otóż, robię reset 1wire, a potem próbuję zrobić 1wirecount (bo może być więcej niż 1 termometr) ;
Ale niestety - na "Ds_count = 1wirecount()" program się zatrzymuje.
Widzę, że na pinie DQ układu DS18B20 jest jakaś komunikacja - znaczy cały czas coś tam jest wysyłane (statycznie - czyli cały czas to samo).
Ale program nie przechodzi dalej.
Ten fragment programu wykorzystałem sobie z innego programu, który mi chodził bez problemu na M162, więc wydaje się, że powinno być dobrze - zresztą, do wywołania 1wirecount w sumie nic się nie dzieje specjalniego.
Po 1WRESET nie ma błędu (ERR=0).
Ki czort ?
EDIT : wylutowałem DS18B20, czyli że na porcie 1Wire nic nie ma - efekt ten sam - program zawiesza się na 1wirecount. Ale - żeby było ciekawiej, ERR nadal nie wykazuje błędu (czyli ERR = 0)
EDIT2 : sprawa wyjaśniona - brak rezystora podciągającego 4K7 na linii 1wire.
Pamiętaj elektroniku młody - sprawdzaj najpierw swe przewody
Zamykam.
I otoż na porcie B.4 mam sobie termometr DS18B20.
Próbuję się z nim skomunikować i mam dziwny problem.
Otóż, robię reset 1wire, a potem próbuję zrobić 1wirecount (bo może być więcej niż 1 termometr) ;
' ZNAJDZ URZĄDZENIA DS ////////////////////////////////////////
Sub Ds_find
1wreset
Waitms 100
Print "ERR=" ; Err
Print "search for DS18B20 :"; '
Ds_count = 1wirecount()
Print "search finalized :";
If Ds_count = 0 Then
'Print "DS devices not found !"
Else
'Print "found " ; Ds_count ; " DS sensors"
Ds_id1(1) = 1wsearchfirst()
If Ds_count >= 2 Then
Ds_id2(1) = 1wsearchnext()
End If
If Ds_count >= 3 Then
Ds_id3(1) = 1wsearchnext()
End If
If Ds_count >= 4 Then
Ds_id4(1) = 1wsearchnext()
End If
End If
End Sub
Ale niestety - na "Ds_count = 1wirecount()" program się zatrzymuje.
Widzę, że na pinie DQ układu DS18B20 jest jakaś komunikacja - znaczy cały czas coś tam jest wysyłane (statycznie - czyli cały czas to samo).
Ale program nie przechodzi dalej.
Ten fragment programu wykorzystałem sobie z innego programu, który mi chodził bez problemu na M162, więc wydaje się, że powinno być dobrze - zresztą, do wywołania 1wirecount w sumie nic się nie dzieje specjalniego.
Po 1WRESET nie ma błędu (ERR=0).
Ki czort ?
EDIT : wylutowałem DS18B20, czyli że na porcie 1Wire nic nie ma - efekt ten sam - program zawiesza się na 1wirecount. Ale - żeby było ciekawiej, ERR nadal nie wykazuje błędu (czyli ERR = 0)
EDIT2 : sprawa wyjaśniona - brak rezystora podciągającego 4K7 na linii 1wire.
Pamiętaj elektroniku młody - sprawdzaj najpierw swe przewody
Zamykam.