Pomocy!!!
powiedzcie mi co jest nie tak z moja funkcja resetująca DS18B20, juz nie wiem co robic.
funkcja zwraca obecnosc czujnika jesli presence = 0 i przy okazji zapala diode, nic juz nie działa. Mam zestaw uruchomieniowy ATmega8 zl2avr, czestotliwosc to 1MHz, (domyslnie, bo nie bawiłem sie fuse bitami). DS18B20 zasilam +5 V znajdujacego sie na plytce.
dodam jeszcze ze mój rezystor podciagajacy ma wartosc: 3k3
Wyprobowałem juz prawie wszystko i nic nie działa, prosze pomóżcie
powiedzcie mi co jest nie tak z moja funkcja resetująca DS18B20, juz nie wiem co robic.
uchar init_DS18B20(void)
{
uchar presence = 0;
_1_WIRE_DIR |= _BV(_1_WIRE); //---ustawienie magistrali w trybie send
_1_WIRE_OUT &= ~_BV(_1_WIRE); //--- wysłanie sygnalu reset
_delay_us(480);
_1_WIRE_DIR &= ~_BV(_1_WIRE); //--- ustawienie magistrali w trybie receive
_delay_us(70); //--- DS18B20 czeka do 60 us i ustawia 1_wire na 0
if(!(_1_WIRE_IN & _BV(_1_WIRE))) //--- jesli wykryto ze 1_wire jest 0 zapala diode i ustawia sygnał "obecnosci"
{
PORTC &= ~_BV(PRESENCE);
presence = 1; //--- sprawdzenie czy wystapił sygnał dopstepnosci DS18B20
}
_delay_us(410);
return presence;
}funkcja zwraca obecnosc czujnika jesli presence = 0 i przy okazji zapala diode, nic juz nie działa. Mam zestaw uruchomieniowy ATmega8 zl2avr, czestotliwosc to 1MHz, (domyslnie, bo nie bawiłem sie fuse bitami). DS18B20 zasilam +5 V znajdujacego sie na plytce.
dodam jeszcze ze mój rezystor podciagajacy ma wartosc: 3k3
Wyprobowałem juz prawie wszystko i nic nie działa, prosze pomóżcie