{"id":247,"date":"2012-02-05T17:00:19","date_gmt":"2012-02-05T16:00:19","guid":{"rendered":"http:\/\/robin.jansman.info\/wordpress\/?p=247"},"modified":"2016-07-07T17:38:56","modified_gmt":"2016-07-07T16:38:56","slug":"pic16-c-sample-1-wire","status":"publish","type":"post","link":"http:\/\/www.mb200d.nl\/wordpress\/2012\/02\/pic16-c-sample-1-wire\/","title":{"rendered":"PIC16 C Sample: 1-Wire"},"content":{"rendered":"<p>Environment: MPLAB X IDE + HI TECH Compiler for PIC16<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#define OW_TRIS TRISA0      \/\/Port mode register, 1=input,0=output\r\n#define OW_PORT RA0         \/\/Pin connected to 1-wire bus\r\n\r\nint owReset(void)\r\n{\r\n    char state = 0;\r\n    OW_TRIS = 0;        \/\/Set as output\r\n    OW_PORT = 0;        \/\/Drive Low\r\n    __delay_us(480);\r\n    OW_TRIS = 1;        \/\/Release, Set back as input\r\n    __delay_us(70);\r\n    state = !OW_PORT;   \/\/If devices are present, it will keep the pin low\r\n                        \/\/! will invert 1=0, 0=1\r\n    __delay_us(410);\r\n    return state;       \/\/Returns 1 if devices are present\r\n}\r\n<\/pre>\n<p><!--more--><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nint owReadByte(void)\r\n{\r\n    int loop, result = 0;\r\n    for(loop = 0; loop &amp;lt; 8; loop++)\r\n    {\r\n        result &amp;gt;&amp;gt;= 1;\r\n        if(owReadBit())\r\n            result |= 0x80;\r\n    }\r\n    return result;\r\n}\r\n<\/pre>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nint owReadBit(void)\r\n{\r\n    unsigned int iReadState = 0;\r\n    OW_TRIS = 0;        \/\/Set as output\r\n    OW_PORT = 0;        \/\/Drive low\r\n    __delay_us(4);\r\n    OW_TRIS = 1;        \/\/Release, set as input\r\n    __delay_us(8);\r\n    iReadState = OW_PORT;\r\n    return iReadState;\r\n}\r\n<\/pre>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">void owWriteByte(unsigned int data)\r\n{\r\n    int loop;\r\n    for(loop = 0; loop &amp;lt; 8; loop++)\r\n    {\r\n        owWriteBit(data &amp;amp;0x01);\r\n        data &amp;gt;&amp;gt;= 1;\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvoid owWriteBit(unsigned int b)\r\n{\r\n    OW_TRIS = 0;        \/\/Set as output\r\n    OW_PORT = 0;        \/\/Drive low\r\n\r\n    if(b==1)\r\n    {\r\n        __delay_us(3);\r\n        OW_TRIS = 1;    \/\/Release, set as input\r\n        __delay_us(62);\r\n    }\r\n    else\r\n    {\r\n        __delay_us(57);\r\n        OW_TRIS = 1;    \/\/Release, set as input\r\n        __delay_us(7);\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvoid owMatchRom(unsigned int * id)\r\n{\r\n    owReset();\r\n    owWriteByte(0x55);  \/\/Send command Match ROM\r\n    \/\/Send adress\r\n    for(int i = 0;i&lt;8;i++)\r\n    {\r\n        owWriteByte(id&#x5B;i]);\r\n    }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Environment: MPLAB X IDE + HI TECH Compiler for PIC16 #define OW_TRIS TRISA0 \/\/Port mode register, 1=input,0=output #define OW_PORT RA0 \/\/Pin connected to 1-wire bus int owReset(void) { char state = 0; OW_TRIS = 0; \/\/Set as output OW_PORT = 0; \/\/Drive Low __delay_us(480); OW_TRIS = 1; \/\/Release, Set back as input __delay_us(70); state = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[327,1],"tags":[],"class_list":["post-247","post","type-post","status-publish","format-standard","hentry","category-electronics","category-robin"],"_links":{"self":[{"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":8,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":665,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/posts\/247\/revisions\/665"}],"wp:attachment":[{"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.mb200d.nl\/wordpress\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}