ICmaster
Ik maak geen fouten, hooguit een vergissing.
Momenteel ben ik bezig in assembly een programma te schrijven voor een PIC processor.
Het programma maakt gebruik van het 1-WIRE protocol van Dallas en meerdere temperatuursensoren de DS18S20
Ik hoop dat er een 1-WIRE expert is die mij kan helpen met het volgende?
Ik loop al een aantal weken te stoeien met het SEARCH ROM commando en krijg het maar niet goed werkend.
Alle andere commando's werken verder prima.
Temperatuur uitlezen gaat perfect.
Iedere sensor heeft een 64 bits ROM code.
Met de SEARCH ROM functie zou het mogelijk moeten zijn van alle sensoren de 64 bits ROM code op te vragen.
Dit lukt me maar gedeeltelijk. Helaas krijg ik niet alle ROM codes te pakken met het stukje asm code dat ik geschreven heb.
In diverse datasheets(Dallas/Maxim) wordt er gesproken over een SEARCH ROM ALGORITHM. Een wiskundige manier om de ROM codes te achterhalen. Alleen zijn er een aantal dingen die me nog niet helemaal duidelijk zijn, zoals hoe precies verder te gaan als er halverwege de ROM code een discrepancy plaats vind.
Internet heb ik al afgezocht maar heb helaas nog geen duidelijke uitleg kunnen vinden. Wel een hoop tabellen en blokschema's en voorbeelden maar duidelijke uitleg hoe en wat ontbreekt.
Wie is ook met het SEARCH ROM commando bezig geweest en kan mij er wat meer over vertellen?
Of heeft iemand een stukje voorbeeld code in assembler al is het alleen maar hoe om te gaan met een discrepancy.
Ik zou daar erg mee geholpen zijn.
Alvast bedankt.
Louis
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Elektuur heeft eens in een halfgeleidergids een PIC thermometer met deze sensor gezet (DS1820, maar as memory serves is er niet zoveel verschil met de DS18S20).
Daar is de assembler broncode gratis van te downloaden, inclusief uitlezen van de sensor.
Mogelijk dat dat je op weg helpt.
Link naar het artikel.
Aan dat artikel heb je weinig. Als je maar 1 sensor op de bus hebt dan gebruik je het SKIP ROM commando en kan je de chip lezen. Alleen wanneer er meerdere sensors op de bus hangen heb je dat SEARCH ROM commando nodig om te achterhalen welke en hoeveel sensors er zijn.
Ik heb nooit meer dan een sensor tegelijkertijd gebruikt.
Op Phil Andersons site http://www.phanderson.com kan je het nodige vinden, maar volgens mij staat het search brokje er nu net niet op.
edit: Even googelen gaf deze link: http://www.mikrocontroller.net/topic/6505 met een stukje assembly voor een SEARCH ROM commando.
[Bericht gewijzigd door JoWi op (14%)]
Op 2 september 2007 10:44:01 schreef picsels:
....
Link naar het artikel.
Heb hier ff snel doorheen gelezen maar volgens mij gebruiken ze niet de mogelijkheid van 1-wire adressering gebruik te maken. Ze gaan ervan uit dat er maar 1 sensor aanwezig is.
Heb er ooit wel aan gewerkt maar kan mij herinneren dat inderdaad het verkrijgen van de adressen niet eenvoudig was.
Ik heb er toen voor gekozen om meerdere in/uitgangen te gebruiken. Een voor voor elek sensor.
ICmaster
Ik maak geen fouten, hooguit een vergissing.
Bedankt voor het meedenken.
De link naar de site was me al bekend.
Alleen staat hier niet de informatie die ik zoek.
Ik heb nu al heel wat datasheets zitten uitspitten en de SEARCH ROM ALGORITHM is me nu denk ik voor 90% bekend.
Alleen begrijp ik de werking nog niet helemaal.
Met name hoe om te gaan met een discrepancy situatie is me nog niet helemaal duidelijk.
Hopelijk is er iemand op dit forum die de werking daarvan wel begrijpt en me enige adviezen kan geven.
Bij voorbaat dank.
Hier staat een proton basic programma dat bij meerdere 1 wire componenten op een lijn, de ID's van deze een voor een zoekt.
http://www.picbasic.org/forum/showthread.php?t=6524
jan
ps Ik heb er uren op gezocht, toch de moeite om deze info ook hier te hebben
)
Maxim applicationnote 187 gaat ook over het search algoritme van 1-wire devices