<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/</id><updated>2023-04-04T09:21:16.418000Z</updated><subtitle>Recent posts to Raspberry Pi MC SL with MCP23017</subtitle><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#5be1/771a" rel="alternate"/><published>2023-04-04T09:21:16.418000Z</published><updated>2023-04-04T09:21:16.418000Z</updated><author><name>rubendijk</name><uri>https://forge.codesys.com/u/rubendijk/</uri></author><id>https://forge.codesys.com44c13e1bba75d1c1635ff6eb5d2ad9e09f9fb135</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Nice job, What am I doing wrong here? I added the device and library. When adding the module it says the following.&lt;br/&gt;
&lt;img src="./attachment/attachment.png" width="50%"/&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#5be1" rel="alternate"/><published>2023-01-13T13:46:50.496000Z</published><updated>2023-01-13T13:46:50.496000Z</updated><author><name>laruso</name><uri>https://forge.codesys.com/u/laruso/</uri></author><id>https://forge.codesys.com738f2846afce84af632a62cd8dcef2fca657a63d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Because there is something wrong with the initalization andthe preconfigured values (inputs) from the library are used. &lt;/p&gt;
&lt;p&gt;I found solutions for the issue "not being able to change the outputs, before a dump via linux shell":&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;quick and dirty: change the preconfigured value in the library for your needs. Use 16#FF for Inputs and 16#00 for outputs:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;IO_A&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;IO_B&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;more usually one: reinitialize the port configuration on request. Add this code in the library to the case structure in the FB:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;REINIT&lt;/span&gt; &lt;span class="n"&gt;THEN&lt;/span&gt;
        &lt;span class="n"&gt;_iState&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Additionally you have to trigger/request the reinitialization of the configuration after the device is "operational". And if you want to you can change the polarity and wether the Port A/B is configured as input or output during runtime. Add this code or parts of it to your project:&lt;br/&gt;
Declaration:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;RTRIG_operational&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;R_TRIG&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xInitialized&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xReinitialze&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xSwitchIO&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xSwitchIO_old&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xInputPolarity&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xInputPolarity_old&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Button_1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Button_8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Rele_1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Rele_8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Code:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;RTRIG_operational&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;CLK&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Operational&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;xInitialized&lt;/span&gt; &lt;span class="nt"&gt;AND&lt;/span&gt; &lt;span class="nt"&gt;RTRIG_operational&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Q&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="nt"&gt;xReinitialze&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;xInitialized&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;xSwitchIO&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;xSwitchIO_old&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="nt"&gt;xReinitialze&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;xSwitchIO_old&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;xSwitchIO&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;xInputPolarity&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;xInputPolarity_old&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="nt"&gt;xReinitialze&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;xInputPolarity_old&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;xInputPolarity&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;xReinitialze&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;xSwitchIO&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO_A&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Input&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO_B&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Output&lt;/span&gt;
    &lt;span class="nt"&gt;ELSE&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO_A&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Output&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO_B&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Input&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;xInputPolarity&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IPOL_A&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Same&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IPOL_B&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Same&lt;/span&gt;
    &lt;span class="nt"&gt;ELSE&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IPOL_A&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Opposite&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IPOL_B&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;FF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Opposite&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;REINIT&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;xReinitialze&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;REINIT&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;xSwitchIO&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;Button_1&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_3&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_4&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;3&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_5&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;4&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_6&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_7&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;6&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_8&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;7&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_3&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;3&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_4&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;4&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;5&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_6&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;6&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_7&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;7&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_8&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;ELSE&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_3&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;3&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_4&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;4&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;5&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_6&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;6&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_7&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OUT_A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;7&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Rele_8&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nt"&gt;Button_1&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_3&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_4&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;3&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_5&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;4&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_6&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_7&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;6&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;Button_8&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;MCP23017&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IN_B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;7&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I tested this positively with the old library (posted from eschwellinger at 2021-11-27 &lt;a href="https://forge.codesys.com/forge/talk/Runtime/thread/8981ce928a/?page=1&amp;amp;limit=25#1cc1"&gt;https://forge.codesys.com/forge/talk/Runtime/thread/8981ce928a/?page=1&amp;amp;limit=25#1cc1&lt;/a&gt;) and with the new library (posted from elconfa at 2019-01-10 &lt;a href="https://forge.codesys.com/forge/talk/Runtime/thread/a2dd4dd45f/#774c"&gt;https://forge.codesys.com/forge/talk/Runtime/thread/a2dd4dd45f/#774c&lt;/a&gt;). Finally, I extended the new library so that the polarity switching of the inputs can be controlled with a variable:&lt;br/&gt;
Declaration:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;IPOL_A&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// Port A configuration: 0=same/1=opposite (INPUT POLARITY PORT REGISTER)&lt;/span&gt;
&lt;span class="n"&gt;IPOL_B&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// Port B configuration: 0=same/1=opposite (INPUT POLARITY PORT REGISTER)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Code:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;STATE := STATE AND write8(16#02,IPOL_A);    //  IPOL: INPUT POLARITY PORT REGISTER&lt;/span&gt;
&lt;span class="err"&gt;                        //      1=GPIO register bit reflects the opposite logic state of the input pin.&lt;/span&gt;
&lt;span class="err"&gt;                        //      0=GPIO register bit reflects the same logic state of the input pin.&lt;/span&gt;
&lt;span class="err"&gt;STATE := STATE AND write8(16#03,IPOL_B);    //  IPOL: INPUT POLARITY PORT REGISTER&lt;/span&gt;
&lt;span class="err"&gt;                        //      1=GPIO register bit reflects the opposite logic state of the input pin.&lt;/span&gt;
&lt;span class="err"&gt;                        //      0=GPIO register bit reflects the same logic state of the input pin.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#8a04" rel="alternate"/><published>2020-09-17T06:19:44.368000Z</published><updated>2020-09-17T06:19:44.368000Z</updated><author><name>razvoj</name><uri>https://forge.codesys.com/u/razvoj/</uri></author><id>https://forge.codesys.com71fc72eaae3d199b137523b2c0e9a84521ae7cf8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I have used this library and this example to use the MCP23017 as digital outputs, but there is no change on IO pins when I change the state (always 5V on pins).&lt;/p&gt;
&lt;p&gt;Why is there no change on pins?&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#1aa8" rel="alternate"/><published>2020-02-27T15:31:53.933000Z</published><updated>2020-02-27T15:31:53.933000Z</updated><author><name>JJoe</name><uri>https://forge.codesys.com/u/jjoe/</uri></author><id>https://forge.codesys.comd8daef397f752c209c9894f2f8be9b8cca227d21</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Sorry I forgot my Codesys code:&lt;br/&gt;
MCP23017_0x24.OUT_A:=16#00; //Porta --&amp;gt; Output&lt;br/&gt;
MCP23017_0x24.OUT_B:=16#FF; //PortB --&amp;gt; Input&lt;br/&gt;
GVL.xPB:=MCP23017_0x24.IN_B.0;&lt;/p&gt;
&lt;p&gt;IF NOT GVL.xPB THEN&lt;br/&gt;
    MCP23017_0x24.OUT_A.0:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.1:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.2:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.3:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.4:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.5:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.6:=TRUE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.7:=TRUE;  &lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;IF GVL.xPB THEN&lt;br/&gt;
    MCP23017_0x24.OUT_A.0:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.1:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.2:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.3:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.4:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.5:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.6:=FALSE;&lt;br/&gt;
    MCP23017_0x24.OUT_A.7:=FALSE; &lt;br/&gt;
END_IF&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#8dbd" rel="alternate"/><published>2020-02-27T15:31:53.236000Z</published><updated>2020-02-27T15:31:53.236000Z</updated><author><name>JJoe</name><uri>https://forge.codesys.com/u/jjoe/</uri></author><id>https://forge.codesys.com1bede46af9dd08646ff18bec5693834f0fa312dd</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello&lt;br/&gt;
from time to time I trying to work with the MCP23017. I have no problem to use the MCP ports as inputs but until now I was not able to use the MCP ports as outputs (e.g. to control a LED).&lt;br/&gt;
Regards&lt;br/&gt;
JJoe&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#9611" rel="alternate"/><published>2020-02-27T15:31:52.541000Z</published><updated>2020-02-27T15:31:52.541000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.com88d17e7aca910740a097988b8478bc90e68d01c4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
no mapping is needed for I2C on the GPIO's.&lt;br/&gt;
Did you enable I2C by using CLI?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sudo raspi-config&lt;/strong&gt;&lt;br/&gt;
That's basically the only thing which is needed.&lt;/p&gt;
&lt;p&gt;You could check your device by:&lt;br/&gt;
&lt;strong&gt;i2cdetect -y 1&lt;/strong&gt;&lt;br/&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br/&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br/&gt;
70: -- -- -- -- -- -- -- --&lt;br/&gt;
If this works CODESYS should work with the I2C too.&lt;/p&gt;
&lt;p&gt;BR&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#8e94" rel="alternate"/><published>2020-02-27T15:31:50.458000Z</published><updated>2020-02-27T15:31:50.458000Z</updated><author><name>oliverboswall</name><uri>https://forge.codesys.com/u/oliverboswall/</uri></author><id>https://forge.codesys.com3ce75d64e85e87cb8b80d70e66066b83d9bd3ae2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;Sorry for my late response - hope you all had a lovely Christmas.&lt;/p&gt;
&lt;p&gt;Yes I downloaded that driver, library and sample code from that thread Edwin but I was not able to get any response. I think I am missing something trivial but such as setting the GPIO to an input/output but I am not able to see the i2c gpio in codesys. Is this correct?&lt;/p&gt;
&lt;p&gt;If anyone has 30 minutes (or any time at all) to have a quick run through of what I have already done and give some advice I would greatly appreciate it. &lt;/p&gt;
&lt;p&gt;I look forward to hearing from you&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#d685" rel="alternate"/><published>2020-02-27T15:31:49.614000Z</published><updated>2020-02-27T15:31:49.614000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.com92dea8ac2eae1121ea61867c4c3bdf1484579d5a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
you could give the driver from the section here a try:&lt;br/&gt;
 l &lt;a class="" href="https://forum.codesys.com/viewtopic.php?f=23&amp;amp;t=5872" rel="nofollow"&gt;viewtopic.php?f=23&amp;amp;t=5872&lt;/a&gt; l &lt;br/&gt;
or is it what you have already done?&lt;/p&gt;
&lt;p&gt;This section will move to forge too...next&lt;br/&gt;
BR&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#5ab1" rel="alternate"/><published>2020-02-27T15:31:48.816000Z</published><updated>2020-02-27T15:31:48.816000Z</updated><author><name>i-campbell</name><uri>https://forge.codesys.com/u/i-campbell/</uri></author><id>https://forge.codesys.com347fc4c4ff47bc4212c2b12985b2d87202237669</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello, in my brief search I couldn't find your exact Codesys driver.&lt;/p&gt;
&lt;p&gt;You can make your own though, here is the documentation.&lt;br/&gt;
&lt;a class="" href="https://forge.codesys.com/drv/io-drivers/doc/I2C/"&gt;https://forge.codesys.com/drv/io-drivers/doc/I2C/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you decide to develop your driver on forge.codesys.com, there is a wonderful community to help when you are stuck.&lt;/p&gt;
&lt;p&gt;Let me know if there are any specific questions about the process, or of course you can ask there.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Raspberry Pi MC SL with MCP23017</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/3d46e97553/?limit=25#db5f" rel="alternate"/><published>2020-02-27T15:31:46.865000Z</published><updated>2020-02-27T15:31:46.865000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com4a53f35936280f0436bd027c9d6f245315e85165</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; phenixrb&lt;/p&gt;
&lt;p&gt;hello oliver,&lt;br/&gt;
Codesys does not manage MCP23017 in I2C, but MCP23&lt;span style="color: underline;"&gt;S&lt;/span&gt;17 in SPI.&lt;/p&gt;
&lt;p&gt;l &lt;a class="" href="https://forum.codesys.com/viewtopic.php?f=23&amp;amp;t=6247" rel="nofollow"&gt;viewtopic.php?f=23&amp;amp;t=6247&lt;/a&gt; l &lt;/p&gt;&lt;/div&gt;</summary></entry></feed>