Witam
Mam problem z inicjalizacja czujnika DS18B20. Chciałem sam napisac inicjalizacje czujnika DS18B20 na podstawie noty jego katalogowej. Mam problem z czujnikiem bo nie zgłasza mi on swojej dostępnosci i albo mam problem z kodem albo z czujnikiem.
Prosiłbym aby ktos mi powiedzial czy kod jest prawidłowy:
Funkcja działa w ten sposób ze kiedy wykryje na 1_WIRE 0 zapala diode która sygnalizuje o dostępnosci. Czy cos zle rozumiem jesli chodzi o inicjalizacje?
By wszystko bylo jasne:
Bardzo uprzejmie prosze o rade
Poprawiłem tytuł - regulamin p.11.1
[zumek]
Mam problem z inicjalizacja czujnika DS18B20. Chciałem sam napisac inicjalizacje czujnika DS18B20 na podstawie noty jego katalogowej. Mam problem z czujnikiem bo nie zgłasza mi on swojej dostępnosci i albo mam problem z kodem albo z czujnikiem.
Prosiłbym aby ktos mi powiedzial czy kod jest prawidłowy:
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(60); //--- 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(240);
return presence;
}
Funkcja działa w ten sposób ze kiedy wykryje na 1_WIRE 0 zapala diode która sygnalizuje o dostępnosci. Czy cos zle rozumiem jesli chodzi o inicjalizacje?
By wszystko bylo jasne:
#define _1_WIRE_IN PINC
#define _1_WIRE_OUT PORTC
#define _1_WIRE_DIR DDRC
#define _1_WIRE 0
#define PRESENCE 5
Bardzo uprzejmie prosze o rade
Poprawiłem tytuł - regulamin p.11.1
[zumek]
