Sida 1 av 1
Få PIC att agera som en 1-Wire Slave.
Postat: 2 april 2007, 14:07:00
av ankan
Hittat en LCD-display som kopplas på 1-wire bussen. Den är baserad på en PIC16F628 med en kristall på 8Mhz.
1-Wire LCD:
http://www.louisswart.co.za/1-Wire_Overview.html
Har själv en 16F88 med intern 8Mhz klocka som jag tänkte programmera så den ser ut som en 1-wire slave. Har svårt att komma igång bara. Timingen kommer vara det kritiska i programmeringen och vill gärna ha lite tips på hur man kan sätta upp det hela.
Kom gärna med länkar till andra som har gjort samma sak där man får se lite kod.
Postat: 2 april 2007, 14:38:08
av sodjan
Lite kod, i och för sig ör master, man i allal fall...
http://www.maxim-ic.com/appnotes.cfm/ap ... umber/2420
Annars är det väl bara att kolla specen för 1-Wire och börja "hacka"...
Parasitc power är juinte aktuellt, så det blir bara datalinjen att bekymmra sig om.
Postat: 2 april 2007, 14:47:43
av ankan
Har kollat på den där koden en hel del och jag börjar förstå rätt bra hur den fungerar men nu är uppgiften att skriva kod för en PIC som ska agera slave.
Funderar på om jag ska göra allt i interruptet i och med att kretsen även ska kommunicera med sin RF-modul som inte är lika tidskritisk.
Vilket interrupt tros vara smartast att använda, RB-change eller INT0 ?
Blir mycket timing att använda timer0 till. Vet dock inte riktigt på vilket sätt jag ska använda den. Om jag bara ska låta den ticka på utan att ändra TMR0 och ha en counter vid varje interrupt eller om jag ska ställa TMR0 varje gång jag vill tex kolla hur lång inkommande puls är.
När kretsen ska sända 1-wire data på samma pinne så får jag väll interrupt också.
Postat: 2 april 2007, 14:54:49
av sodjan
> När kretsen ska sända 1-wire data på samma pinne så får jag väll interrupt också.
Nja, dels så måste du ju sätta om den till utgång, dels så kan du ju
enkelt stänga av interrupt när du inte vill ha dom. Inget problem alls...
Interrupt ska du nog titta på rent allmänt. Det brukar underlätta.
INT0 eller IOC (Interrupt On Change) är lite svårare.
Jag skulle välja den där man kan välja "flank", om man inte kan det för båda,
vil säga. Har inte kollat. Ibland är det smart att ställa om flank on-the-fly
för att få interrupt på båda flankerna.
Postat: 2 april 2007, 15:01:02
av ankan
INT0 vet jag att man kan ställa in flank att trigga på. IOC tror jag ger interrupt på båda flankerna.
Funderar på hur jag ska utnyttja timer0 som sagt och hur mycket man kan lägga i interruptrutinen.
Postat: 2 april 2007, 15:05:56
av sodjan
> IOC tror jag ger interrupt på båda flankerna.
"On change"...
Självklart, hjärnsläpp....
> ...och hur mycket man kan lägga i interruptrutinen.
Det nödvändiga. Det som måste ligga där.
Det som inte kan avbrytas av ett *annat* interrupt.
Postat: 2 april 2007, 18:08:59
av ankan
Behöver något litet DOS eller Windows program som man på kommando kan skicka ut 1-Wire kommandon via Maxims adapter DS9097.
Behöver det för att kunna testa och trigga med oscilloskopet.
Postat: 2 april 2007, 18:30:06
av ankan
Hittade Digitemp för windows men den hittar inga enheter.
Kör jag Dallas OneWireViewer så fungerar det men den skickar hela tiden massa kommandon på 1-wiren för att ta reda på vilka enheter som är kopplade mm.