Få PIC att agera som en 1-Wire Slave.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Få PIC att agera som en 1-Wire Slave.

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg 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å.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg 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.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

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