<?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=Frekvensmodul</id>
	<title>Frekvensmodul - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Frekvensmodul"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Frekvensmodul&amp;action=history"/>
	<updated>2026-04-20T22:43:09Z</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=Frekvensmodul&amp;diff=4618&amp;oldid=prev</id>
		<title>Bar: /* Opkobling m. Arduino */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Frekvensmodul&amp;diff=4618&amp;oldid=prev"/>
		<updated>2022-11-05T11:23:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Opkobling m. Arduino&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 5. nov. 2022, 13:23&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-l226&quot;&gt;Linje 226:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 226:&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;&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 colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Atmel Microcontroller}}&lt;/ins&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;&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:I2C 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:I2C 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=Frekvensmodul&amp;diff=3219&amp;oldid=prev</id>
		<title>Bar: /* Opkobling m. Arduino */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Frekvensmodul&amp;diff=3219&amp;oldid=prev"/>
		<updated>2022-10-24T19:06:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Opkobling m. Arduino&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 24. okt. 2022, 21:06&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-l221&quot;&gt;Linje 221:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 221:&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;== Opkobling m. Arduino ==&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;== Opkobling m. Arduino ==&lt;/div&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;Den komplette kode samt kode til at benytte en Arduino som master kan downloades her&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;Den komplette kode samt kode til at benytte en Arduino som master kan downloades her  &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;[[Fil:I2C_frekvensmaaler.zip]]&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;[[Fil:I2C_frekvensmaaler.zip]]&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=Frekvensmodul&amp;diff=3120&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Frekvensmodul&amp;diff=3120&amp;oldid=prev"/>
		<updated>2022-10-24T18:18:22Z</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 24. okt. 2022, 20:18&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=Frekvensmodul&amp;diff=3119&amp;oldid=prev</id>
		<title>htx_&gt;Mort544a med 22. feb. 2015, 22:36</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Frekvensmodul&amp;diff=3119&amp;oldid=prev"/>
		<updated>2015-02-22T22:36:56Z</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;Frekvensmodulet kan måle maksimum spænding, minimum spænding og periodetiden for en vekselspænding, som derefter kan kommunikeres til en anden enhed via [[I2C]].&lt;br /&gt;
&lt;br /&gt;
== Teori ==&lt;br /&gt;
En vekselspænding kan beskrives som en sinussvingning med funktionen: [[Fil:Sinussvingning_formel.png]]. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Symboler og begreber.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Spændingen U: Spænding ved tiden t. Enhed: [V]&lt;br /&gt;
&lt;br /&gt;
Amplituden A: Maksimal udsving i spændingen. Enhed: [V]&lt;br /&gt;
&lt;br /&gt;
Periodetiden T: Tiden en periode tager. Enhed: [s]&lt;br /&gt;
&lt;br /&gt;
Frekvensen f: Antallet af perioder pr. tid. Enhed: [1/s = Hz]&lt;br /&gt;
&lt;br /&gt;
Fasen ϕ: Startpositionen af svingning ved tiden t=0. Enhed: [radianer el. grader]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nedenstående illustrerer en svingning med størrelserne: A = 5 V, T = 1/3 s, f = 3 Hz, ϕ = 0.&lt;br /&gt;
&lt;br /&gt;
[[Fil:Sinussvingning_plot.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generelt om modulet ==&lt;br /&gt;
&lt;br /&gt;
Modulet består overordnet set af to dele. En konverter, der forskyder svingingen så den ligger omkring 2.5 V, som derefter måles af mikroprocessoren [[ATTiny45]], som vist i blokdiagrammet herunder.&lt;br /&gt;
&lt;br /&gt;
=== Blokdiagram ===&lt;br /&gt;
[[Fil:Blokdiagram_frekvensmaaler.png]]&lt;br /&gt;
&lt;br /&gt;
=== Udviklingsmiljø ===&lt;br /&gt;
Modulet er udviklet med et [[Atmel_udviklingsmiljø]]. Print og beskrivelse af programmering af mikroprocessoren kan findes under siderne [[AVR-programmer_Shield]] og [[ATTiny45]].&lt;br /&gt;
&lt;br /&gt;
=== Specifikationer ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Forsyning:&amp;#039;&amp;#039;&amp;#039; +5V&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Strømforbrug:&amp;#039;&amp;#039;&amp;#039; 15.3 mA - 19.5 mA&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Effekt:&amp;#039;&amp;#039;&amp;#039; 76.5 mW - 97.5 mW&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Inputspænding:&amp;#039;&amp;#039;&amp;#039; -2.5 V - +2.5 V&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Måleområde:&amp;#039;&amp;#039;&amp;#039; 50 Hz - 800 Hz&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Typisk tolerance:&amp;#039;&amp;#039;&amp;#039; ±15%&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Da inputspændingen til tider er negativ kan denne spænding ikke måles direkte med [[ATTiny45]]&amp;#039;en. Derfor må man forskyde spændingen op i et positivt område mellem 0V og +5V, som er det område [[ATTiny45]]&amp;#039;en kan måle. Hvordan man kan gøre dette er beskrevet i følgende afsnit.&lt;br /&gt;
&lt;br /&gt;
=== Konverter ===&lt;br /&gt;
&lt;br /&gt;
Spændingen forskydes fra intervallet [-2.5V; +2.5V] til intervallet [0V; +5V], ved hjælp af følgende kredsløb.&lt;br /&gt;
&lt;br /&gt;
[[Fil:Konverter_schem2.png]]&lt;br /&gt;
&lt;br /&gt;
Kredsløbet fungerer således at der øverst er en spændingsdeler, der laver en +2,5V spænding. Denne spænding bliver nu udgangspunktet for den nye svingning. Ud fra spændingen fra inputsvingningen bliver kondensatoren C1 skiftetvis op- og afladet, hvilket gør at spændingen til ATTiny&amp;#039;en svinger op og ned omkring de +2,5V. På den måde kan svingningen nu måles med ATTiny&amp;#039;en.&lt;br /&gt;
&lt;br /&gt;
=== ATtiny45 ===&lt;br /&gt;
ATTiny45 er produceret af Atmel, og er en del af en række af mikroprocessorer, som kører med AVR-arkitektur.&lt;br /&gt;
For disse gælder der, at de ved hjælp af deres opbygning kan programmeres med kompileret C-kode&amp;lt;ref&amp;gt;http://da.wikipedia.org/wiki/Atmel_AVR:Extension:Cite Beskrivelse af AVR - Set 22-02-2015&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Nedenstående er en beskrivelse af den software, der ligger bag modulet. Software&amp;#039;en er skrevet i programmeringssproget C. Hvordan udviklingsmiljøet kan opsættes kan læses under siden [[Atmel_udviklingsmiljø]].&lt;br /&gt;
&lt;br /&gt;
Hvis man er vandt til at programmerer en Arduino, er en udgave Arduino IDE&amp;#039;s BareMinimum følgende til ATTiny.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int main( void ) &lt;br /&gt;
{&lt;br /&gt;
  //Setup&lt;br /&gt;
  &lt;br /&gt;
  while(1) //Loop&lt;br /&gt;
  {&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
For at modulet skal kunne kommunikerer ved hjælp af I2C, er der anvendt et software bibliotek kaldet usiTwiSlave&amp;lt;ref&amp;gt;https://code.google.com/p/attiny45-workshop/source/browse/#hg%2Ftwi_slave%2Ffirmware:Extension:Cite I2C software bibliotek - Set 22-02-2015&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Biblioteket benyttes ved at placerer filerne i samme mappe, som sin programkode, hvorefter den indlæses ved at skrive følgende i toppen af koden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
extern &amp;quot;C&amp;quot; &lt;br /&gt;
{&lt;br /&gt;
	#include &amp;quot;usiTwiSlave.h&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan man benytte følgende kommandoer til at modtage og sende data via I2C.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
extern &amp;quot;C&amp;quot; &lt;br /&gt;
{&lt;br /&gt;
	#include &amp;quot;usiTwiSlave.h&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( void ) &lt;br /&gt;
{&lt;br /&gt;
  sei();&lt;br /&gt;
  usiTwiSlaveInit(slaveAddress); //Her sætter man den adresse som slaven skal have.&lt;br /&gt;
&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
	&lt;br /&gt;
	if(usiTwiDataInReceiveBuffer()) // Her tjekker man om der er modtaget data.&lt;br /&gt;
		{&lt;br /&gt;
&lt;br /&gt;
		        uint8_t inp = usiTwiReceiveByte(); // Gemmer modtaget data i en variable inp.&lt;br /&gt;
			usiTwiTransmitByte(inp); // Sender det modtaget tilbage.&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovenstående virker blot, som en echo, der sender det der modtages fra masteren tilbage til masteren.&lt;br /&gt;
&lt;br /&gt;
=== Timer ===&lt;br /&gt;
For at benytte sig af en timer, til at holde styr på tiden, kan man benytte følgende kode inden loop&amp;#039;et.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCCR0B |= ((1 &amp;lt;&amp;lt; CS02) | (1 &amp;lt;&amp;lt; CS00));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan tiden aflæses som en 8-bit værdi med følgende kode.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t ctime = TCNT0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ønsker man at udvide tælleren, kan man skrive følgende.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
t1 = t2;&lt;br /&gt;
t2 = TCNT0;&lt;br /&gt;
if(t1&amp;lt;=t2){&lt;br /&gt;
	ctime += t2-t1;&lt;br /&gt;
}else{&lt;br /&gt;
	ctime += t2-t1 + 256;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hvor tiden nu kan aflæses i en som 16-bit, hvis ctime er defineret således, og den kan endda være 32bit, hvis man ønsker dette.&lt;br /&gt;
&lt;br /&gt;
Den egentlige tid kan nu beregnes med nedenstående formel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
T = (0.125/1000) * ctime * s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analog input ===&lt;br /&gt;
For at måle en analog spænding skal man ændre en del værdier i ATTiny&amp;#039;ens registre. Denne funktion gør denne process lettere funktion&amp;lt;ref&amp;gt;http://www.marcelpost.com/wiki/index.php/ATtiny85_ADC:Extension:Cite Opsætning af analog input - Set 22-02-2015&amp;lt;/ref&amp;gt; der gør dette for en. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void initADC()&lt;br /&gt;
{&lt;br /&gt;
  ADMUX =&lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADLAR) |     // left shift result&lt;br /&gt;
            (0 &amp;lt;&amp;lt; REFS1) |     // Sets ref. voltage to VCC, bit 1&lt;br /&gt;
            (0 &amp;lt;&amp;lt; REFS0) |     // Sets ref. voltage to VCC, bit 0&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX3)  |     // use ADC2 for input (PB4), MUX bit 3&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX2)  |     // use ADC2 for input (PB4), MUX bit 2&lt;br /&gt;
            (1 &amp;lt;&amp;lt; MUX1)  |     // use ADC2 for input (PB4), MUX bit 1&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX0);       // use ADC2 for input (PB4), MUX bit 0&lt;br /&gt;
&lt;br /&gt;
  ADCSRA = &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADEN)  |     // Enable ADC &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADPS2) |     // set prescaler to 64, bit 2 &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADPS1) |     // set prescaler to 64, bit 1 &lt;br /&gt;
            (0 &amp;lt;&amp;lt; ADPS0);      // set prescaler to 64, bit 0  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionen skal blot kaldes en gang i koden, hvorefter man kan måle analog spænding ved følgende kode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ADCSRA |= (1 &amp;lt;&amp;lt; ADSC);         // Starter analog måling.&lt;br /&gt;
while (ADCSRA &amp;amp; (1 &amp;lt;&amp;lt; ADSC) ); // Venter til målingen er færdig.&lt;br /&gt;
uint8_t val = ADCH;            //gemmer målingen i en variable val.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan man omregne den 8-bit værdi man får fra målingen med følgende formel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U = val/255 * 5V&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse af input ===&lt;br /&gt;
For at måle den maksimale og minimale spænding, kan man skrive følgende kode.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(val&amp;gt;ma){&lt;br /&gt;
	ma = val;&lt;br /&gt;
}&lt;br /&gt;
if(P&amp;lt;mi){&lt;br /&gt;
	mi = val;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hvor val er den målte spænding. mi og ma er globale variabler af type uint8_t, der gemmer den maksimale og minimale spænding, der er målt.&lt;br /&gt;
&lt;br /&gt;
=== Måling af periodetiden ===&lt;br /&gt;
&lt;br /&gt;
Man kan registrerer periodetiden, ved at se på hvornår spændingen passerer middelspændingen på +2,5V svarende til en decimal værdi på 127, når spændingen måles med en 8-bit værdi. Dette kan gøres på følgende måde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oldval = val; // Den gamle analoge værdi gammes.&lt;br /&gt;
val = ADCH; // der foretages en ny måling.&lt;br /&gt;
if(oldval &amp;gt; (mid - (ma-mi)/20) &amp;amp;&amp;amp; val &amp;lt;= (mid - (ma-mi)/20)){ // &lt;br /&gt;
	time = ctime;&lt;br /&gt;
	ctime = 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koden virker således at, hvis den gamle måling er større en midterspændingen + en sikkerhedsmargin, samt at den nye spænding er under eller lig med midterspændingen - et margin, så skal den gemme den tid der gået siden sidste periodeskift, og derefter nulstille tiden. &lt;br /&gt;
&lt;br /&gt;
== Opkobling m. Arduino ==&lt;br /&gt;
Den komplette kode samt kode til at benytte en Arduino som master kan downloades her&lt;br /&gt;
&lt;br /&gt;
[[Fil:I2C_frekvensmaaler.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategori:I2C Moduler]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Mort544a</name></author>
	</entry>
</feed>