<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Hardware Watchdog</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6288e0e398/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6288e0e398/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/6288e0e398/</id><updated>2020-02-27T14:15:14.646000Z</updated><subtitle>Recent posts to Hardware Watchdog</subtitle><entry><title>Hardware Watchdog</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6288e0e398/?limit=25#5dfd" rel="alternate"/><published>2020-02-27T14:15:14.646000Z</published><updated>2020-02-27T14:15:14.646000Z</updated><author><name>Drongo96</name><uri>https://forge.codesys.com/u/drongo96/</uri></author><id>https://forge.codesys.com66aa0e6bcd1b8f8874e7722972ec653d331f93ff</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello! I'm trying to work with hardware watchdog using ioctl, but nothing works.&lt;/p&gt;
&lt;p&gt;As an example, I used the real time clock driver&lt;/p&gt;
&lt;p&gt;var constant&lt;br/&gt;
RTC_RD_TIME: udint := 16#09;&lt;br/&gt;
RTC_SET_TIME: udint := 16#0a;&lt;br/&gt;
group: dword := 16#70;&lt;br/&gt;
IOC_OUT: dword := 16#80000000;&lt;br/&gt;
IOC_IN: dword := 16#40000000; &lt;br/&gt;
IOCPARM_MASK: dword := 16#1fff;&lt;br/&gt;
end_var&lt;/p&gt;
&lt;p&gt;method private ReadRequest : dword&lt;br/&gt;
var_input&lt;br/&gt;
num: udint;&lt;br/&gt;
len: udint;&lt;br/&gt;
end_var&lt;/p&gt;
&lt;p&gt;ReadRequest := IOC_OUT or ( shl( len and IOCPARM_MASK, 16 ) or ( shl( group, 8 ) or num ) );&lt;/p&gt;
&lt;p&gt;method private WriteRequest : dword&lt;br/&gt;
var_input&lt;br/&gt;
num: udint;&lt;br/&gt;
len: udint;&lt;br/&gt;
end_var&lt;/p&gt;
&lt;p&gt;WriteRequest := IOC_IN or ( shl( len and IOCPARM_MASK, 16 ) or ( shl( group, 8 ) or num ) );&lt;/p&gt;
&lt;p&gt;// ...&lt;/p&gt;
&lt;p&gt;hRtc := CDOpen( '/dev/rtc', CmpCharDevice.ACCESS_MODE.O_RDONLY, adr( Result ) );&lt;/p&gt;
&lt;p&gt;if hRtc &amp;lt;&amp;gt; RTS_INVALID_HANDLE then&lt;/p&gt;
&lt;p&gt;Request := dword_to_dint( ReadRequest( RTC_RD_TIME, sizeof( TRtcTime ) ) );&lt;/p&gt;
&lt;p&gt;CDIoctl( hRtc, Request, dword_to_dint( adr( Read ) ), adr( Result ) );&lt;/p&gt;
&lt;p&gt;CDClose( hRtc, adr( Result ) );&lt;/p&gt;
&lt;p&gt;end_if&lt;/p&gt;
&lt;p&gt;// ...&lt;/p&gt;
&lt;p&gt;hRtc := CDOpen( '/dev/rtc', CmpCharDevice.ACCESS_MODE.O_WRONLY, adr( Result ) );&lt;/p&gt;
&lt;p&gt;if hRtc &amp;lt;&amp;gt; RTS_INVALID_HANDLE then&lt;/p&gt;
&lt;p&gt;Request := dword_to_dint( WriteRequest( RTC_SET_TIME, sizeof( TRtcTime ) ) );&lt;/p&gt;
&lt;p&gt;CDIoctl( hRtc, Request, dword_to_dint( adr( rtctime ) ), adr( Result ) );&lt;/p&gt;
&lt;p&gt;CDClose( hRtc, adr( Result ) );&lt;/p&gt;
&lt;p&gt;end_if&lt;/p&gt;
&lt;p&gt;can i use these macros to work with hardware watchdog?&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>