Učím se s DS18B20 na AVR

Zdravím,

načetl jsem si něco o tomto čidlu a chci ho vyzkoušet. Nejdřív jsem si stáhnul hotovou knihovnu, ale nefunguje mi ani ten základní presence pulse.

Tak sjem si to napsal sám, ale to taky nejde :frowning: kde je chyba ?

void port_init(void)
{
	DDRC |= (1 << PC0);
	PORTC &= ~(1 << PC0);
	
}

int main(void)
{
	
	port_init();
	
	DDRD |= (1 << PD5);
	PORTD &= ~(1 << PD5);
	_delay_us(480);
	
	
	PORTD |= (1 << PD5);
	_delay_us(60);
	
	DDRD &= ~(1 << PD5);
	
	
	if(PIND & (1 <<PD5))PORTC |= (1 << PC0);
	
    while(1)
    {
        //TODO:: Please write your application code 
    }
}

na PC0 je LEDKA
na PD je čidlo

PS: Předtím jsem to čidlo přepoloval, proudový omezovač tam pustil cca 100mA, ale uvnitř je právě pro tento případ ochranná dioda že ?

díky

SOLVED, už vím co sjem podělal :slight_smile: já to puluju dolů procesorem, ale to puluje čidlo samotné :smiley:D

Myslim ze je po smrti to cidlo, naposledy ked som to spravil uz islo iba v prazitnom napajani… ale to uvidis bud pripraveny

Zdravím,

ted jsem ve fázi, kdy si chci dopsat funkce pro provozování více čidel na jedné sběrnici. Ale bohužel po vyslání MATCH_ROM a následném 64b kódu přečtu teplotu +127,9375 což je podle mě prostě max hodnota tedy čidlo neodpovídá.

Myslím že problém by mohl být v tom jak posílím ten ROM kód … Má se to posílat z leva do prava (MSB → LSB) nebo z prava do leva (LSB → MSB) ?
Ani jedna varianta mi myslím ale nešla … možná že špatně hledám kód …

Přikládám provizorní variantu hledacího algoritmu pro test s jedním čidlem: void first(void)

pastebin.com/ks65VjFE

takto v současnosti vypadá moje funkce therm_write_4byte

[code]
void therm_write_4byte(uint64_t bytes)
{
for(int8_t i=3; i>=0; i–)
{

	therm_write_byte((uint8_t)(bytes >> i * 8));
	
}
PORTD |= (1<<PD0);

}[/code]

:arrow_right: administrator: přiloženy externí soubory
kod.txt (1.23 KB)

poradit ti neviem, ale mne fungovala tato kniznica aj s prilozenym mainom(priloha). Uz neviem odkial ju mam. Skus sa pozrie ako to pracuje, mozno ti to pomoze.
DS18B20.c (2.06 KB)
1wire.c (13 KB)
1wire.h (3.16 KB)