<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=DS1307_RTC</id>
	<title>DS1307 RTC - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=DS1307_RTC"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;action=history"/>
	<updated>2026-06-13T20:35:42Z</updated>
	<subtitle>Versionshistorie for denne side i HTX Arduino</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=5019&amp;oldid=prev</id>
		<title>Bar: Omdirigering til Arduino DS1307 RTC oprettet</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=5019&amp;oldid=prev"/>
		<updated>2022-11-22T20:08:41Z</updated>

		<summary type="html">&lt;p&gt;Omdirigering til &lt;a href=&quot;/index.php/Arduino_DS1307_RTC&quot; title=&quot;Arduino DS1307 RTC&quot;&gt;Arduino DS1307 RTC&lt;/a&gt; oprettet&lt;/p&gt;
&lt;a href=&quot;https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;amp;diff=5019&amp;amp;oldid=3904&quot;&gt;Vis ændringer&lt;/a&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3904&amp;oldid=prev</id>
		<title>Bar: /* Referencer */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3904&amp;oldid=prev"/>
		<updated>2022-10-26T09:04:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Referencer&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 26. okt. 2022, 11:04&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot;&gt;Linje 165:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 165:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{moduler}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{moduler}}  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:JAL-moduler]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:JAL-moduler]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:PIC-moduler]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:PIC-moduler]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3777&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3777&amp;oldid=prev"/>
		<updated>2022-10-26T04:45:12Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 26. okt. 2022, 06:45&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;da&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskel)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3776&amp;oldid=prev</id>
		<title>htx_&gt;Bar med 23. mar. 2018, 13:28</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=DS1307_RTC&amp;diff=3776&amp;oldid=prev"/>
		<updated>2018-03-23T13:28:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Image:DS1307RTC-modul.PNG|thumb|right|300px|Billede af DS1307 Real Time Clock modul]]&lt;br /&gt;
&lt;br /&gt;
Et RTC modul indeholder en Real Time Clock, som er et ur med timer, minutter og sekunder, foruden dato, år og dag på ugen.&lt;br /&gt;
&lt;br /&gt;
Ideen med en Real Time Clock er at man kan stille uret en gang for alle, og så skulle det gerne gå ufortrødent så længe batteriet kan holde spændingen over 2V.&lt;br /&gt;
&lt;br /&gt;
Ud over dette, så ligger der 56 byte RAM med samme batteri-backup, så man kan gemme værdier der - det understøtter modulet her ikke.&lt;br /&gt;
&lt;br /&gt;
På &amp;#039;&amp;#039;&amp;#039;Holstebro HTX&amp;#039;&amp;#039;&amp;#039; er vi gået over til at anvende [[Prog Shield RTC DS3231]].&lt;br /&gt;
&lt;br /&gt;
==Hardware til DS1307 RTC==&lt;br /&gt;
Modulet er beskrevet under [[Arduino DS1307 RTC]] med link til leverandør og koden til Arduino.&lt;br /&gt;
&lt;br /&gt;
Kredsen er dokumenteret i denne [[Media:DS1307.pdf|PDF-fil]] fra Maxim Integrated&amp;lt;ref&amp;gt;[http://datasheets.maximintegrated.com/en/ds/DS1307.pdf DS1307 datablad fra Maxim Integrated]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Man kommunikerer med DS1307RTC ved hjælp af [[I2C Bus]] på adresse 0x68.&lt;br /&gt;
&lt;br /&gt;
==Software modulet DS1307RTC.jal==&lt;br /&gt;
Softwaren er lavet til at kunne læse og skrive i DS1307 Real Time Clock, så man kan stille tiden hvis man ønsker det, og mest af alt at man kan læse tiden nede i uret.&lt;br /&gt;
===Anvendelse af DS1307RTC.jal===&lt;br /&gt;
Når man vil anvende DS1307RTC modulet, så skal man [[include]] DS1307RTC.jal som følger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
   include DS1307RTC.jal&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hvis DS1307RTC.jal ligger i \lib inde i c:\jalpack så kan compileren finde modulet.&lt;br /&gt;
&lt;br /&gt;
DS1307RTC anvender i2c_Software.jal og i2c_level1.jal, så de skal også ligge i \lib men det burde de gøre som standard.&lt;br /&gt;
&lt;br /&gt;
[[JAL-fil]]en ligger sammen med et par eksempler inde i [[Fil:DS1307RTC_jal.zip|denne ZIP-fil]]&lt;br /&gt;
&lt;br /&gt;
Testopstillingen ser ud som vist her:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fil:DS1307RTC_setup.jpg|600px|Testopstilling med PIC16F690, ALCD display og DS1307 Real Time Clock]]&lt;br /&gt;
&lt;br /&gt;
DS1307RTC er testet på følgende kombinationer:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!PIC!!pin&lt;br /&gt;
|-&lt;br /&gt;
|[[PIC16F684]]||&lt;br /&gt;
|-&lt;br /&gt;
|[[PIC16F690]]||b4 og b6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Interface fil til DS1307RTC===&lt;br /&gt;
Interface-filen angiver benforbindelser, bus-hastighed og adreseen på [[I2C Bus]]sen.&lt;br /&gt;
&lt;br /&gt;
I DS1307RTC_def.jal kan man rette på nogle af disse opsætninger.&lt;br /&gt;
&lt;br /&gt;
Benforbindelserne skulle man kunne vælge relativt frit, da man bruger software-modulet til at lave I2C kommunikation med, men i dette tilfælde er der bare valgt de to ben der alligevel er lavet til det hardware-mæssigt.&lt;br /&gt;
&lt;br /&gt;
Bus-speed og level er det ikke tilrådeligt at ændre på, da de er lavet til kredsen (man kan måske prøve sig frem og kredsen kan kommunikere hurtigere).&lt;br /&gt;
&lt;br /&gt;
Adressen er fastlagt hardware-mæssigt inde i DS1307 kredsen, så den skal man normalt heller ikke rette på, men mindre man får fat i kredse der arbejder på en anden adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
var volatile bit i2c_scl is pin_b6&lt;br /&gt;
var volatile bit i2c_scl_direction is pin_b6_direction&lt;br /&gt;
var volatile bit i2c_sda is pin_b4&lt;br /&gt;
var volatile bit i2c_sda_direction is pin_b4_direction&lt;br /&gt;
&lt;br /&gt;
const word _i2c_bus_speed = 1 ; * 100kHz&lt;br /&gt;
const bit _i2c_level = true ; i2c levels (not SMB)&lt;br /&gt;
&lt;br /&gt;
const byte DS1307RTC_Address = 0x68&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anvendelsen af DS1307RTC==&lt;br /&gt;
&lt;br /&gt;
Læsningen af uret er ret simplet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 include DS1307RTC&lt;br /&gt;
&lt;br /&gt;
 forever loop&lt;br /&gt;
   if DS1307RTC_Read then&lt;br /&gt;
     -- Her kan man anvende variablerne Read_Sec, Read_Min ... Read_Year&lt;br /&gt;
   else&lt;br /&gt;
     -- Her kan man angive at der er sket en læsefejl&lt;br /&gt;
   end if&lt;br /&gt;
&lt;br /&gt;
   --&lt;br /&gt;
   -- Her kan placeres anden kode i loopet, der skal lave andre ting&lt;br /&gt;
   --&lt;br /&gt;
 end loop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Funktion!!Læse Variabel!!Skrive Variabel!!Format&lt;br /&gt;
|-&lt;br /&gt;
|Sekunder||Read_Sec ||Write_Sec ||BCD tal fra 00 til 59&lt;br /&gt;
|-&lt;br /&gt;
|Minutter||Read_Min ||Write_Min ||BCD tal fra 00 til 59&lt;br /&gt;
|-&lt;br /&gt;
|Timer||Read_Hour ||Write_Hour ||BCD tal fra 00 til 23&lt;br /&gt;
|-&lt;br /&gt;
|Ugedag||Read_DoW ||Write_DoW ||BCD tal fra 0 til 6&lt;br /&gt;
|-&lt;br /&gt;
|Dato||Read_Day ||Write_Day ||BCD tal fra 01 til 31&lt;br /&gt;
|-&lt;br /&gt;
|Måned||Read_Month ||Write_Month ||BCD tal fra 01 til 12&lt;br /&gt;
|-&lt;br /&gt;
|Årstal||Read_Year ||Write_Year ||BCD tal fra 00 til 99&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ønsker man et sted i softwaren at sætte uret til noget andet end det den står på nu, så skal man skrive alle 7 variabler ind med fornuftige værdier, og så kalde DS1307_Write for at skrive værdierne ned i uret.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
   -- Her skal alle 7 variabler Write_Sec, Write_Min ... Write_Year angives til noget validt, så uret kan fungere&lt;br /&gt;
   if ! DS1307RTC_Write then&lt;br /&gt;
     -- Her kan man angive at der er sket en skrivefejl&lt;br /&gt;
   end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Demo version af DS1307RTC===&lt;br /&gt;
Inde i ZIP-filen ligger en DS1307RTC_demo.JAL, der illustrerer anvendelsen af modulet.&lt;br /&gt;
&lt;br /&gt;
Ved test af modulet i den viste testopstilling kan man få en visning som følgende:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fil:DS1307RTC-display.jpg|600px|Visning fra Demo-programmet]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Forklaring af DS1307RTC software==&lt;br /&gt;
&lt;br /&gt;
Modulet er i høj grad baseret i2c_software.jal og i2c_level1.jal&lt;br /&gt;
&lt;br /&gt;
===Initialisering af softwaren===&lt;br /&gt;
&lt;br /&gt;
Initialiseringen sker inde i DS1307 ved følgende linje:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
i2c_initialize()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Funktionsbeskrivelse===&lt;br /&gt;
&lt;br /&gt;
Kommunikationen sker ved at man starter i2c-kommunikationen og sender adressen og i samme byte om man vil læse eller skrive.&lt;br /&gt;
&lt;br /&gt;
Ved læsning skriver man først hvilken adresse (når det er uret, så er det adresse 0 man starter ved) og derefter læser man de bytes man har behov for (i dette tilfælde 7).&lt;br /&gt;
&lt;br /&gt;
Ved skrivning angiver man ligeledes hvilken adresse man vil skrive til, og derefter skriver man det antal bytes (her igen 7) man vil skrive.&lt;br /&gt;
&lt;br /&gt;
Både læsning og skrivning afsluttes ved at man stopper i2c-kommunikationen.&lt;br /&gt;
&lt;br /&gt;
===Koden inde i funktionen DS1307RTC===&lt;br /&gt;
&lt;br /&gt;
De to funktioner er opbytte som følger og er i høj grad baseret på funktionaliteten i i2c_level1.jal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
function DS1307RTC_read () return bit is&lt;br /&gt;
   i2c_tx_buffer[0] = 0&lt;br /&gt;
   return i2c_send_receive(DS1307RTC_Address * 2, 1, 7)&lt;br /&gt;
end function&lt;br /&gt;
&lt;br /&gt;
function DS1307RTC_write () return bit is&lt;br /&gt;
   i2c_tx_buffer[0] = 0&lt;br /&gt;
   return i2c_send_receive(DS1307RTC_Address * 2, 8, 0)&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Som det kan ses er det samme funktion der kaldes, hvor læsningen foregår ved at skrive en byte (i2c_tx_buffer[0] der er sat til 0 for adresse 0) og derefter læse 7 bytes. Skrivningen sker ved at de 7 bytes i arrayet i2c_tx_buffer[1] - i2c_tx_buffer[7] er skrevet i forvejen, og der angives at i2c_tx_buffer[0] skal være nul, så skrivningen starter i adresse 0, hvorefter der skrives de 8 byte og modtages ingenting.&lt;br /&gt;
&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{moduler}}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:JAL-moduler]]&lt;br /&gt;
[[Kategori:PIC-moduler]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Bar</name></author>
	</entry>
</feed>