Sida 1 av 1

DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 10:52:33
av danielr112
Fråga:

Ni som kör med flera DS18x20 på en och samma buss. Ni kör ju matchrom. Har någon av er testat Read rom för att läsa av serienumret när bara 1 är inkopplad?
READ ROM [33h]
This command can only be used when there is one slave on the bus. It allows the bus master to read the
slave’s 64-bit ROM code without using the Search ROM procedure. If this command is used when there
is more than one slave present on the bus, a data collision will occur when all the slaves attempt to
respond at the same time.
Står det i databladet. Som jag fattar det att efter man har skickat ut Read ROM så kommer sensorn direkt svara med 8 bytes eller har jag missat nåt?
Har skummat igenom manualen ett par gånger nu men kagn inte hitta tillvägagångssättet för att bara läsa ut 64-bitars numret. Dvs i vilken ordning det ska ske.

Någon som kan hjälpa mig på traven eller vill dummförklara mig? :)

--- tillägg ---

Och för de som vill veta ska jag ha det till en PIC16F690 och jag skriver koden i MikroC. Min frågeställning i detta skedet rör dock bara i vilken ordning jag bör prata med sensorn.

edit: fixade rubriken

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 11:18:31
av v-g
Du har ju själv svarat på din fråga nästan (nej jag dumförklarar dig inte ;) ) dvs sålänge det är en slav på linan kommer den svara direkt efter att du frågat den om sitt ID detta kör jag själv för att läsa av kretsarna innan jag pastar in serienumret i koden.

Mao skicka sen väntar du bara på svar. Såklart en resett innan första kommandot.

Tillägg: Eftersom man inte kört match rom (självklart) så går det inte att ha mer än en på varje lina eftersom de då kommer skicka sitt id samtidigt.

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 11:39:09
av danielr112
Ok.

Så efter jag skickat READ ROM så kan jag helt enkelt läsa av 8 bytes? Är det så enkelt? :) Isåfall har jag förmodligen tänkt/kodat rätt. Har inte hunnit testa den ännu så tänkte att det var lika bra att dubbelkolla.

Jag ska ha en välldigt kompakt liten sak som jag enkelt kan läsa av mina Sensorer med. Dels testa så de funkar och dels kunna se deras serienummer :lol:

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 12:00:37
av JustNeed
Så enkelt är det. Jag har kört med koden nedan

Kod: Markera allt

void read_ROM(void)
{
	char i,n;
	Reset();
	Write(READROM);
	for(i=0; i<8 ;i++)
	{
		n=Read();
		rom[i]=n;
	}
}

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 12:12:18
av danielr112
Härligt.

Fredagskvällen räddad! Tack grabbar :bravo: :D

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 20:32:38
av v-g
Så enkelt är det när kommunikationen funkar som det ska ;) Trevlig helg :)

Re: DS18x20 + PIC (READ ROM)

Postat: 15 maj 2009, 21:01:48
av danielr112
Hmm, Slängde ihop en snutt kod lite snabbt:

Ovanför main:

Kod: Markera allt

char n,i;
char *rom;
I main:

Kod: Markera allt

     Ow_Reset(&PORTB, 7);
     Ow_Write(&PORTB, 7, 0x33);
     for(i=0; i<8 ;i++) {
              n = Ow_Read(&PORTB, 7);
              rom[i] = n;
     }
     Lcd_Out(3,1,rom);
Givetvis har ja massa annat bråte.
Att hämta temperatur o.s.v funkar felfritt men här verkar jag bara få ett par skräptecken.

Förmodligen missat nåt lätt. Ska kolla vidare på det senare.