DS18x20 + PIC (READ ROM)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

DS18x20 + PIC (READ ROM)

Inlägg 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
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: DS18x20 + PIC (READ ROM)

Inlägg 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.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: DS18x20 + PIC (READ ROM)

Inlägg 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:
JustNeed
Inlägg: 799
Blev medlem: 7 november 2007, 22:07:01
Ort: 08

Re: DS18x20 + PIC (READ ROM)

Inlägg 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;
	}
}
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: DS18x20 + PIC (READ ROM)

Inlägg av danielr112 »

Härligt.

Fredagskvällen räddad! Tack grabbar :bravo: :D
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: DS18x20 + PIC (READ ROM)

Inlägg av v-g »

Så enkelt är det när kommunikationen funkar som det ska ;) Trevlig helg :)
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: DS18x20 + PIC (READ ROM)

Inlägg 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.
Skriv svar