Pomocy pisze obsługe DS18B20 na ATmega8... i funkcja czytajaca mi nie działa, dobrze, nie zczytuje mi temperatury jak nalezy, własciwie to odbieram jakieś misie;/
Oto kod mojej funkcji:
gdzie 1_WIRE_DIR oznacza DDRC, 1_WIRE oznacza 0, 1_WIRE_OUT oznacza PORTC, a 1_WIRE_IN oznacza PINC.
Prosze pomóżcie, przeleciałęm mase podobnych tematów i starałem sie implementowac tamte rozwiazania i nie bardzo pomogło...
Oto kod mojej funkcji:
unsigned char read_data_DS18B20(void)
{
volatile unsigned char data = 0x00;
for(unsigned char i = 0; i < 8; i++)
{
_1_WIRE_DIR |= _BV(_1_WIRE);
_1_WIRE_OUT &=~ _BV(_1_WIRE);
_delay_us(5);
_1_WIRE_DIR &=~ _BV(_1_WIRE);
_delay_us(15);
if((_1_WIRE_IN & _BV(_1_WIRE)))
{
data+=0x80;
}
data>>=1;
_delay_us(15);
}
return data;
}gdzie 1_WIRE_DIR oznacza DDRC, 1_WIRE oznacza 0, 1_WIRE_OUT oznacza PORTC, a 1_WIRE_IN oznacza PINC.
Prosze pomóżcie, przeleciałęm mase podobnych tematów i starałem sie implementowac tamte rozwiazania i nie bardzo pomogło...