Elektroniskt lås med one-wire iButton (3 / 6 steg)
Steg 3: Hur en tråd verk
Bilderna visar du timings och de nivåer som du måste respektera för att kunna kommunicera. Ange en PIN-kod till en ingång sker genom att den coresponding TRIS lite till '1', förvandla det till produktionen innebär en '0' på denna bit ståndpunkt.
Lägger ut en '0' på PIN-koden görs genom att helt enkelt säga GPx = 0; där x är antalet GPIO pin anslutit du din-uttaget.
För att göra detta instructable så fullständig som möjligt, jag vill ger du den fullständiga koden (även om jag inte gillar idén att inte ge alla att göra saker fungerar). Jag är inte känslig om någon använder den här koden för att slutföra sina projekt, du hänvisar till (eller inte) var koden kom ifrån är du bestämma.
Själva koden är självförklarande, timings gjordes med timer 1, i röstningen läge. Jag ville inte overcomplicate projektet med avbrott service rutiner. Jag bara avmarkera flaggan, Ställ in timern för att ge mig rätt timing och vänta tills flaggan blir uppsättningen igen. Detta händer när TMR1 regsiter vänder från 65535 till 0.
Ju mindre värde i det, ju längre tid tar det för flaggan för att ställa in. Det är allt det finns det!
Kortare tider egentligen inte värt att göra detta sätt använde jag inline asm kommandon till gör så pass. En enda nop operation tar exakt en instruktion cykel att slutföra, som - i vårt fall - är 1 mikrosekund.
Makron användes för att hålla koden ren.