<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://elektronikforumet.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jesper</id>
	<title>ElektronikWikin - Användarbidrag [sv]</title>
	<link rel="self" type="application/atom+xml" href="https://elektronikforumet.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jesper"/>
	<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/Special:Bidrag/Jesper"/>
	<updated>2026-05-13T15:17:27Z</updated>
	<subtitle>Användarbidrag</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3391</id>
		<title>RF Protokoll - JULA-Anslut</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3391"/>
		<updated>2010-11-15T14:06:35Z</updated>

		<summary type="html">&lt;p&gt;Jesper: /* Kodexempel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JULA 'Anslut' protokoll ==&lt;br /&gt;
[[Fil:JULA Mottagare.jpg]]&lt;br /&gt;
=== Inledning ===&lt;br /&gt;
JULA har en serie självlärande fjärrstyrda uttag i serien 'Anslut', liknande NEXA [[RF_Protokoll_-_Nexa_självlärande]].&lt;br /&gt;
De säljs idag, September 2010, för 99kr för ett paket med 3 on/off-mottagare och en fjärrkontroll. Ett bra pris för en kul leksak som är perfekt för lite hacking.&lt;br /&gt;
&lt;br /&gt;
=== Teknikdetaljer ===&lt;br /&gt;
&lt;br /&gt;
Kontroldata skickas på en 433.92MHz radiolänk.&lt;br /&gt;
Modulationen är en simpel on/off modulation av bärvågen, vilket gör att man kan använda i stort sett alla 433.92MHz sändare, FM eller AM spelar ingen roll.&lt;br /&gt;
&lt;br /&gt;
Sändarkretsen är en Holtek HT46R01T3 [http://www.holtek.com/pdf/consumer/4xR01T3v120.pdf] som internt består av två delar, en MCU och en sändare. &lt;br /&gt;
MCU'n skickar data till sändaren på en I/O pinne som är internt kopplat. Men denne pinne är delat med vanlig I/O och tillgänglig på utsidan av kretsen.&lt;br /&gt;
Då MCU'n har en separat spänningsförsörjning, kan man koppla bort denna, och då går det att modulera sändaren externt.&lt;br /&gt;
&lt;br /&gt;
Pin 12 på kretsen är VCC till MCU'n. Denna pinne lyftas från kretskortet, eller klipps av.&lt;br /&gt;
På Pin 1 kan man nu modulera sändaren med ett 3.3V signal.&lt;br /&gt;
&lt;br /&gt;
Det intressanta med dessa självlärande system, är att de användar en unik kod för varje fjärr. I detta fall är koden 26 bitar lång.&lt;br /&gt;
Det betyder att man, om man själv konstruerar data med en CPU eller PC, kan ha ett mycket stort antal enheter och använda olika koder för varje (eller för grupper). Det enda problem i denna sammanhang är att man då inte kan använda den &amp;quot;vanliga&amp;quot; fjärrkontroll.&lt;br /&gt;
&lt;br /&gt;
=== Bit format ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'0' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_____&lt;br /&gt;
&lt;br /&gt;
|-----|-----|&lt;br /&gt;
   T     T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'1' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_________________________&lt;br /&gt;
&lt;br /&gt;
|-----|-------------------------|&lt;br /&gt;
   T               5T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'START' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |__________________________________________________&lt;br /&gt;
&lt;br /&gt;
|-----|--------------------------------------------------|&lt;br /&gt;
   T                         10T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'STOP' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |_______________________ . . . ____&lt;br /&gt;
&lt;br /&gt;
|-----|----------------------- . . . ----|&lt;br /&gt;
   T                40T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T = 250 us&lt;br /&gt;
(5T = 1250 us)&lt;br /&gt;
(10T = 2500 us)&lt;br /&gt;
(40T = 10 ms)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bitkodning ===&lt;br /&gt;
&lt;br /&gt;
Data på länken är &amp;quot;kodat&amp;quot; så att för varje databit skickas det två bitar på radiolänken.&lt;br /&gt;
'0' =&amp;gt; '01' skickas&lt;br /&gt;
'1' =&amp;gt; '10' skickas&lt;br /&gt;
&lt;br /&gt;
Exempel: För dataströmmen 0111, skickas det 01101010 över radion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paketformat ===&lt;br /&gt;
&lt;br /&gt;
Varje datapaket består av en startbit föld av 26 + 2 + 4 (totalt 32 databitar) och avslutas med en stopbit.&lt;br /&gt;
&lt;br /&gt;
För varje knapptryckning skickas det likadana 3 datapaket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''HHHH HHHH HHHH HHHH HHHH HHHH HHGO EEEE'''&lt;br /&gt;
&lt;br /&gt;
'''H''' = De första 26 bitar är kod som är unik för varje fjärrkontroll och det är denna &amp;quot;home&amp;quot; kod, som mottagarna lär sig att känna igen.&lt;br /&gt;
&lt;br /&gt;
'''G''' = Gruppkommando, denna bit är satt till 1 om kommandot är för hela gruppen.&lt;br /&gt;
&lt;br /&gt;
'''O''' = On/Off bit. Satt till 1 för on, 0 för off.&lt;br /&gt;
&lt;br /&gt;
'''EEEE''' = Enhet som ska tändas/släckas. Enhetsnumet är &amp;quot;inverterat&amp;quot;, 1111 = enhet 0, 1110 = enhet 1,  o.s.v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kodexempel ===&lt;br /&gt;
&lt;br /&gt;
Här är ett kodexempel som slår en enhet av och på varje 500 ms :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
// JULA protokoll exempel för ATmega88&lt;br /&gt;
//&lt;br /&gt;
// Jesper Hansen, Sept. 2010&lt;br /&gt;
// &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MY_HOMECODE     0x9394ff80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define RF_ON		PORTB |= (1&amp;lt;&amp;lt;0)&lt;br /&gt;
#define RF_OFF		PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
#define TSHORT		250		//   250 us&lt;br /&gt;
#define TLONG		(TSHORT * 5)	//  1250 us&lt;br /&gt;
#define TSTART		(TSHORT*10)	//  2500 us&lt;br /&gt;
#define TSTOP		(TSHORT*40)	// 10000 us&lt;br /&gt;
&lt;br /&gt;
#define REPEATS         3&lt;br /&gt;
&lt;br /&gt;
#define TIMERRESOLUTION	542	  //nS&lt;br /&gt;
&lt;br /&gt;
// busy wait&lt;br /&gt;
// up to 65.5 mS&lt;br /&gt;
void twait(uint32_t us)&lt;br /&gt;
{&lt;br /&gt;
        us *= 1000;	&lt;br /&gt;
	us /= TIMERRESOLUTION;&lt;br /&gt;
	TCNT1 = 0;&lt;br /&gt;
	while (TCNT1 &amp;lt; (us &amp;amp; 0xFFFF));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// set a level on the output pin and delay&lt;br /&gt;
//&lt;br /&gt;
void set_level(uint8_t polarity, uint16_t time)&lt;br /&gt;
{&lt;br /&gt;
	if (polarity)&lt;br /&gt;
		RF_ON;&lt;br /&gt;
	else&lt;br /&gt;
		RF_OFF;&lt;br /&gt;
	twait(time);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '1' bit&lt;br /&gt;
//&lt;br /&gt;
void one_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TLONG);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '0' bit&lt;br /&gt;
//&lt;br /&gt;
void zero_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSHORT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send a 32-bit sequence, including start and stop bits&lt;br /&gt;
//&lt;br /&gt;
void shift_out(uint32_t data)&lt;br /&gt;
{&lt;br /&gt;
	uint8_t bit;&lt;br /&gt;
&lt;br /&gt;
	// send lead-in&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTART);&lt;br /&gt;
&lt;br /&gt;
	// send data&lt;br /&gt;
	for (bit=0;bit&amp;lt;32;bit++)&lt;br /&gt;
	{&lt;br /&gt;
		if (data &amp;amp; 0x80000000)	// one-bit&lt;br /&gt;
		{&lt;br /&gt;
			one_bit();&lt;br /&gt;
			zero_bit();&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			zero_bit();&lt;br /&gt;
			one_bit();&lt;br /&gt;
		}&lt;br /&gt;
		data &amp;lt;&amp;lt;= 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// stop bit&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send an RF  command&lt;br /&gt;
//&lt;br /&gt;
void send_data(uint32_t id, int group, int onoff, int channel)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for (i=0;i&amp;lt;REPEATS;i++)&lt;br /&gt;
	{&lt;br /&gt;
		id &amp;amp;= 0xFFFFFFC0;		// mask off ID part&lt;br /&gt;
		id |= ((group &amp;amp; 1) &amp;lt;&amp;lt; 5);	// add group bit&lt;br /&gt;
		id |= ((onoff &amp;amp; 1) &amp;lt;&amp;lt; 4);	// add on/off bit&lt;br /&gt;
		id |= ((~channel) &amp;amp; 15);	// add channel addressing	&lt;br /&gt;
		shift_out(id);			// send the pattern&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delayms(uint16_t v)&lt;br /&gt;
{&lt;br /&gt;
	while (v--)&lt;br /&gt;
		twait(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	// start timer 1&lt;br /&gt;
	// CPU clock is assumed to be 14.7456MHz in this example&lt;br /&gt;
&lt;br /&gt;
	TCCR1A = 0;&lt;br /&gt;
	TCCR1B = 2;      // clk / 8  -&amp;gt;  542nS&lt;br /&gt;
&lt;br /&gt;
	DDRB |= (1&amp;lt;&amp;lt;0);  // set RF modulator pin as output&lt;br /&gt;
&lt;br /&gt;
	while (1)&lt;br /&gt;
	{&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 0, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 1, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Fil:JULA Mottagare.jpg&lt;br /&gt;
Fil:JULA Etikett.jpg&lt;br /&gt;
Fil:JULA Mottagare Öppnat.jpg&lt;br /&gt;
Fil:JULA Mottagere Kretskort.jpg&lt;br /&gt;
Fil:JULA Sändare Framsida.jpg&lt;br /&gt;
Fil:JULA Sändare Kretskort.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Inneh%C3%A5llsf%C3%B6rteckning&amp;diff=3362</id>
		<title>Innehållsförteckning</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Inneh%C3%A5llsf%C3%B6rteckning&amp;diff=3362"/>
		<updated>2010-09-25T22:05:57Z</updated>

		<summary type="html">&lt;p&gt;Jesper: La till RF protokoll - JULA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Diverse ==&lt;br /&gt;
* [[Aff%C3%A4rspartners]] - Kommentarer över affärspartners på forumet. Ris och ros.&lt;br /&gt;
* [[IP leverantörer]] - Tips på internetleverantörer.&lt;br /&gt;
* [[Materialinköpsställen]] - Tips om affärer som säljer material till privatpersoner, samt om de är bra/dåliga.&lt;br /&gt;
* [[ESD-skydd]] - Hur man undviker att fritera komponenter med statisk elektricitet.&lt;br /&gt;
* [[Översättningslista för facknamn]] på Svenska &amp;lt;-&amp;gt; Engelska.&lt;br /&gt;
&lt;br /&gt;
* Temp - [[Felmeddelanden]] vid försök att besöka forumet&lt;br /&gt;
* [[Att fråga|Tips på hur du ställer en fråga i forumet]]&lt;br /&gt;
&lt;br /&gt;
* [[Bläckpatron styrning]] - Direkt styrning av bläckpatron.&lt;br /&gt;
* [[RF Produkter - Brandvarnare Proove]]&lt;br /&gt;
* [[RF Protokoll - Nexa/Proove (äldre, ej självlärande)]]&lt;br /&gt;
* [[RF Protokoll - Nexa självlärande]]&lt;br /&gt;
* [[RF_Protokoll - JULA-Anslut]]&lt;br /&gt;
* [[Parkeringssensor ombyggd till ultraljudsdetektor (Biltema 43-142)]]&lt;br /&gt;
* [[Litteratur]] - Böcker som är intressanta för forumets medlemmar.&lt;br /&gt;
* [[Open Course Ware]] - Kursmaterial som är intressanta för forumets medlemmar.&lt;br /&gt;
* [[Skyddskapsling]] för marin miljö.&lt;br /&gt;
* [[Elektronikrengöring|Rengöring av elektronik]]&lt;br /&gt;
* [[Åskdetektering]]&lt;br /&gt;
* [[Projektsidor]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
* [[Samlade projekt]] - En lista över många av de projekt som publicerats på Forumet.&lt;br /&gt;
* [[Önskemål]] - En lista över önskemål på artiklar som vi vill se i Wikin.&lt;br /&gt;
* [[Arkivering av forumets PM]] - En liten förklarning hur man kan arkivera sina PM.&lt;br /&gt;
* [[Tips och trix]]&lt;br /&gt;
&lt;br /&gt;
== Grundläggande Ellära ==&lt;br /&gt;
* [[Beteckningar]]&lt;br /&gt;
* [[Ohms lag]]&lt;br /&gt;
* [[Strömspikar]]&lt;br /&gt;
* [[LC-krets]]&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* [[Operationsförstärkare, grundkopplingar]]&lt;br /&gt;
* [[Distanskurs i Elektronik]]&lt;br /&gt;
* [[Superpositionsprincipen]]&lt;br /&gt;
* [[Linjärisering]]&lt;br /&gt;
* [[Småsignalscheman]]&lt;br /&gt;
* [[Spänningsdelare]]&lt;br /&gt;
&lt;br /&gt;
== Komponenter ==&lt;br /&gt;
* [[Kondensator]]&lt;br /&gt;
* [[Diod]]&lt;br /&gt;
* [[IGBT]]&lt;br /&gt;
* [[Tyristor]]&lt;br /&gt;
* [[Thyratronen]]&lt;br /&gt;
* [[Lysdiod]]&lt;br /&gt;
* [[Optokopplare]]&lt;br /&gt;
* [[Resistor]]&lt;br /&gt;
* [[Induktans]]&lt;br /&gt;
* [[LCD Displayer]]&lt;br /&gt;
* [[LCD Skärmar]]&lt;br /&gt;
* [[Magnetron]]&lt;br /&gt;
* [[Kontakter]]&lt;br /&gt;
* [[Kapslingar]]&lt;br /&gt;
** [[Hålmonterade]]&lt;br /&gt;
** [[Ytmonterade]]&lt;br /&gt;
* [[Batterier]]&lt;br /&gt;
* [[Thyratron]]&lt;br /&gt;
&lt;br /&gt;
== Ljud ==&lt;br /&gt;
* [[Audio]], samlingssida.&lt;br /&gt;
* [[SID]]&lt;br /&gt;
* [[Tonkontroller, gitarrförstärkare]]&lt;br /&gt;
* [[Tonkontroller, Elbasar]]&lt;br /&gt;
* [[BTc Sound Encoder, uCPU]]&lt;br /&gt;
* [[Distorsion]]&lt;br /&gt;
* [[Effekter]]&lt;br /&gt;
* [[Frekvenssvar]]&lt;br /&gt;
* [[Decibel]]&lt;br /&gt;
* [[Dynamik]]&lt;br /&gt;
* [[Hörrum]]&lt;br /&gt;
* [[Ihopkoppling av audioutrustning]]&lt;br /&gt;
&lt;br /&gt;
== Ljus ==&lt;br /&gt;
* [[PowerLeds]]&lt;br /&gt;
* [[Strömbegränsning för lysdioder]]&lt;br /&gt;
&lt;br /&gt;
== Mekatronik ==&lt;br /&gt;
* [[CNC-länkar]]&lt;br /&gt;
* [[CNC med Linux]]&lt;br /&gt;
* [[AC-motor|AC-motorer]]&lt;br /&gt;
* [[DC-motor|DC-motorer]]&lt;br /&gt;
* [[Stegmotor|Stegmotorer]]&lt;br /&gt;
* [[Motorstyrning]]&lt;br /&gt;
* [[Servo]]&lt;br /&gt;
* [[Lillasyster]]&lt;br /&gt;
* [[Material för bearbetning]]&lt;br /&gt;
&lt;br /&gt;
== Mikrodatorteknik ==&lt;br /&gt;
* [[Mikrokontroller|Allmänt om mikrokontrollers]]&lt;br /&gt;
&lt;br /&gt;
* Typer:&lt;br /&gt;
** [[AVR]]&lt;br /&gt;
** [[PIC]]&lt;br /&gt;
** [[ARM arkitektur]]&lt;br /&gt;
** [[AVR32]]&lt;br /&gt;
** [[Propeller]]&lt;br /&gt;
&lt;br /&gt;
* [[Mikrokontroller perferienheter]]&lt;br /&gt;
&lt;br /&gt;
== Mjukvara ==&lt;br /&gt;
* [[Unix mjukvara]] - Mjukvara för unix plattformar (FreeBSD, Linux, Solaris etc..)&lt;br /&gt;
* [[Praktiska MS-Windows tips]]&lt;br /&gt;
&lt;br /&gt;
== Mätinstrument ==&lt;br /&gt;
* [[Oscilloskop]]&lt;br /&gt;
* [[Multimeter]]&lt;br /&gt;
&lt;br /&gt;
== Nätaggregat ==&lt;br /&gt;
* [[LW PS-305D]] Variabelt laborationsaggregat 0-30V 0-5A&lt;br /&gt;
* [[Skyddad 5V matning]] Skyddad elförsörjning för 5V från instabilt 12V system (bil, båt etc..).&lt;br /&gt;
&lt;br /&gt;
== Mönsterkortstillverkning och lödning ==&lt;br /&gt;
* [[Hur man tillverkar kretskort]] - Så gör du dina egna kretskort. Från början till slut.&lt;br /&gt;
* [[Hur man får andra att tillverka kretskort]] - Beställa kretskort från legotillverkare.&lt;br /&gt;
* [[Tips vid etsning]]&lt;br /&gt;
* [[Etstank]]&lt;br /&gt;
* [[Rita kretskort]]&lt;br /&gt;
* [[Tips vid lödning]]&lt;br /&gt;
* [[Simulera]]&lt;br /&gt;
* [[Kretskortslayout, PCB Designers SI Guide]]&lt;br /&gt;
* [[Hjälp med PCB tillverkning]]&lt;br /&gt;
* [[Rewflow ugn]]&lt;br /&gt;
&lt;br /&gt;
== Samköp ==&lt;br /&gt;
* [[Kress-offert-cncplus]]&lt;br /&gt;
* [[MPG-Samk]]&lt;br /&gt;
&lt;br /&gt;
== Utveckling av forumet ==&lt;br /&gt;
Det finns ett mål att utöka Svenska elektronikforumet till att bli mer än bara ett forum (denna Wiki är ett exempel på detta). De olika projekt som strävar till att förbättra forumet listas här. Varje projekt har (ska ha) en ansvarig, kontakta denne om du vill hjälpa till med en uppgift.&lt;br /&gt;
* [[Exempel på forumutvecklingssida]], ett förslag hur sidorna kan se ut.&lt;br /&gt;
* [[Artikelsystemet]]&lt;br /&gt;
* [[Köp och Sälj]]&lt;br /&gt;
* [[Bildarkivet]]&lt;br /&gt;
* [[Projektgalleriet]]&lt;br /&gt;
* [[Säkerhetskopierar forumets PM]]&lt;br /&gt;
&lt;br /&gt;
== Övrigt ==&lt;br /&gt;
Det som inte passar in på annat ställe...&lt;br /&gt;
* [[TipsForNyaAnvandare]]&lt;br /&gt;
* [[Test]]&lt;br /&gt;
* [[Huvudsida]] / [[Main Page]]&lt;br /&gt;
* [[Regler]]&lt;br /&gt;
* [[Antivirus för Microsoft OS]]&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3356</id>
		<title>RF Protokoll - JULA-Anslut</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3356"/>
		<updated>2010-09-23T13:51:22Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Lagt till bilder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JULA 'Anslut' protokoll ==&lt;br /&gt;
[[Fil:JULA Mottagare.jpg]]&lt;br /&gt;
=== Inledning ===&lt;br /&gt;
JULA har en serie självlärande fjärrstyrda uttag i serien 'Anslut', liknande NEXA [[RF_Protokoll_-_Nexa_självlärande]].&lt;br /&gt;
De säljs idag, September 2010, för 99kr för ett paket med 3 on/off-mottagare och en fjärrkontroll. Ett bra pris för en kul leksak som är perfekt för lite hacking.&lt;br /&gt;
&lt;br /&gt;
=== Teknikdetaljer ===&lt;br /&gt;
&lt;br /&gt;
Kontroldata skickas på en 433.92MHz radiolänk.&lt;br /&gt;
Modulationen är en simpel on/off modulation av bärvågen, vilket gör att man kan använda i stort sett alla 433.92MHz sändare, FM eller AM spelar ingen roll.&lt;br /&gt;
&lt;br /&gt;
Sändarkretsen är en Holtek HT46R01T3 [http://www.holtek.com/pdf/consumer/4xR01T3v120.pdf] som internt består av två delar, en MCU och en sändare. &lt;br /&gt;
MCU'n skickar data till sändaren på en I/O pinne som är internt kopplat. Men denne pinne är delat med vanlig I/O och tillgänglig på utsidan av kretsen.&lt;br /&gt;
Då MCU'n har en separat spänningsförsörjning, kan man koppla bort denna, och då går det att modulera sändaren externt.&lt;br /&gt;
&lt;br /&gt;
Pin 12 på kretsen är VCC till MCU'n. Denna pinne lyftas från kretskortet, eller klipps av.&lt;br /&gt;
På Pin 1 kan man nu modulera sändaren med ett 3.3V signal.&lt;br /&gt;
&lt;br /&gt;
Det intressanta med dessa självlärande system, är att de användar en unik kod för varje fjärr. I detta fall är koden 26 bitar lång.&lt;br /&gt;
Det betyder att man, om man själv konstruerar data med en CPU eller PC, kan ha ett mycket stort antal enheter och använda olika koder för varje (eller för grupper). Det enda problem i denna sammanhang är att man då inte kan använda den &amp;quot;vanliga&amp;quot; fjärrkontroll.&lt;br /&gt;
&lt;br /&gt;
=== Bit format ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'0' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_____&lt;br /&gt;
&lt;br /&gt;
|-----|-----|&lt;br /&gt;
   T     T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'1' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_________________________&lt;br /&gt;
&lt;br /&gt;
|-----|-------------------------|&lt;br /&gt;
   T               5T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'START' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |__________________________________________________&lt;br /&gt;
&lt;br /&gt;
|-----|--------------------------------------------------|&lt;br /&gt;
   T                         10T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'STOP' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |_______________________ . . . ____&lt;br /&gt;
&lt;br /&gt;
|-----|----------------------- . . . ----|&lt;br /&gt;
   T                40T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T = 250 us&lt;br /&gt;
(5T = 1250 us)&lt;br /&gt;
(10T = 2500 us)&lt;br /&gt;
(40T = 10 ms)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bitkodning ===&lt;br /&gt;
&lt;br /&gt;
Data på länken är &amp;quot;kodat&amp;quot; så att för varje databit skickas det två bitar på radiolänken.&lt;br /&gt;
'0' =&amp;gt; '01' skickas&lt;br /&gt;
'1' =&amp;gt; '10' skickas&lt;br /&gt;
&lt;br /&gt;
Exempel: För dataströmmen 0111, skickas det 01101010 över radion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paketformat ===&lt;br /&gt;
&lt;br /&gt;
Varje datapaket består av en startbit föld av 26 + 2 + 4 (totalt 32 databitar) och avslutas med en stopbit.&lt;br /&gt;
&lt;br /&gt;
För varje knapptryckning skickas det likadana 3 datapaket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''HHHH HHHH HHHH HHHH HHHH HHHH HHGO EEEE'''&lt;br /&gt;
&lt;br /&gt;
'''H''' = De första 26 bitar är kod som är unik för varje fjärrkontroll och det är denna &amp;quot;home&amp;quot; kod, som mottagarna lär sig att känna igen.&lt;br /&gt;
&lt;br /&gt;
'''G''' = Gruppkommando, denna bit är satt till 1 om kommandot är för hela gruppen.&lt;br /&gt;
&lt;br /&gt;
'''O''' = On/Off bit. Satt till 1 för on, 0 för off.&lt;br /&gt;
&lt;br /&gt;
'''EEEE''' = Enhet som ska tändas/släckas. Enhetsnumet är &amp;quot;inverterat&amp;quot;, 1111 = enhet 0, 1110 = enhet 1,  o.s.v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kodexempel ===&lt;br /&gt;
&lt;br /&gt;
Här är ett kodexempel som slår en enhet av och på varje 500 ms :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
// JULA protokoll exempel för ATmega88&lt;br /&gt;
//&lt;br /&gt;
// Jesper Hansen, Sept. 2010&lt;br /&gt;
// &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MY_HOMECODE     0x9394ff80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define RF_ON		PORTB |= (1&amp;lt;&amp;lt;0)&lt;br /&gt;
#define RF_OFF		PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
#define TSHORT		250				//   250&lt;br /&gt;
#define TLONG		(TSHORT * 5)	//  1250&lt;br /&gt;
#define TSTART		(TSHORT*10)		//  2500&lt;br /&gt;
#define TSTOP		(TSHORT*40)		// 10000&lt;br /&gt;
&lt;br /&gt;
#define REPEATS         3&lt;br /&gt;
&lt;br /&gt;
#define TIMERRESOLUTION	542	  //nS&lt;br /&gt;
&lt;br /&gt;
// busy wait&lt;br /&gt;
// up to 35.5 mS&lt;br /&gt;
void twait(uint32_t us)&lt;br /&gt;
{&lt;br /&gt;
        us *= 1000;	&lt;br /&gt;
	us /= TIMERRESOLUTION;&lt;br /&gt;
	TCNT1 = 0;&lt;br /&gt;
	while (TCNT1 &amp;lt; (us &amp;amp; 0xFFFF));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// set a level on the output pin and delay&lt;br /&gt;
//&lt;br /&gt;
void set_level(uint8_t polarity, uint16_t time)&lt;br /&gt;
{&lt;br /&gt;
	if (polarity)&lt;br /&gt;
		RF_ON;&lt;br /&gt;
	else&lt;br /&gt;
		RF_OFF;&lt;br /&gt;
	twait(time);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '1' bit&lt;br /&gt;
//&lt;br /&gt;
void one_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TLONG);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '0' bit&lt;br /&gt;
//&lt;br /&gt;
void zero_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSHORT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send a 32-bit sequence, including start and stop bits&lt;br /&gt;
//&lt;br /&gt;
void shift_out(uint32_t data)&lt;br /&gt;
{&lt;br /&gt;
	uint8_t bit;&lt;br /&gt;
&lt;br /&gt;
	// send lead-in&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTART);&lt;br /&gt;
&lt;br /&gt;
	// send data&lt;br /&gt;
	for (bit=0;bit&amp;lt;32;bit++)&lt;br /&gt;
	{&lt;br /&gt;
		if (data &amp;amp; 0x80000000)	// one-bit&lt;br /&gt;
		{&lt;br /&gt;
			one_bit();&lt;br /&gt;
			zero_bit();&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			zero_bit();&lt;br /&gt;
			one_bit();&lt;br /&gt;
		}&lt;br /&gt;
		data &amp;lt;&amp;lt;= 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// stop bit&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send an RF  command&lt;br /&gt;
//&lt;br /&gt;
void send_data(uint32_t id, int group, int onoff, int channel)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for (i=0;i&amp;lt;REPEATS;i++)&lt;br /&gt;
	{&lt;br /&gt;
		id &amp;amp;= 0xFFFFFFC0;			// mask off ID part&lt;br /&gt;
		id |= ((group &amp;amp; 1) &amp;lt;&amp;lt; 5);	// add group bit&lt;br /&gt;
		id |= ((onoff &amp;amp; 1) &amp;lt;&amp;lt; 4);	// add on/off bit&lt;br /&gt;
		id |= ((~channel) &amp;amp; 15);	// add channel addressing	&lt;br /&gt;
		shift_out(id);				// send the pattern&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delayms(uint16_t v)&lt;br /&gt;
{&lt;br /&gt;
	while (v--)&lt;br /&gt;
		twait(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	// start timer 1&lt;br /&gt;
	// CPU clock is assumed to be 14.7456MHz in this example&lt;br /&gt;
&lt;br /&gt;
	TCCR1A = 0;&lt;br /&gt;
	TCCR1B = (1&amp;lt;&amp;lt;ICNC1) | (1&amp;lt;&amp;lt;ICES1) | 2; // clk / 8  -&amp;gt;  542nS&lt;br /&gt;
&lt;br /&gt;
	DDRB |= (1&amp;lt;&amp;lt;0);  // set RF modulator pin as output&lt;br /&gt;
&lt;br /&gt;
	while (1)&lt;br /&gt;
	{&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 0, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 1, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Fil:JULA Mottagare.jpg&lt;br /&gt;
Fil:JULA Etikett.jpg&lt;br /&gt;
Fil:JULA Mottagare Öppnat.jpg&lt;br /&gt;
Fil:JULA Mottagere Kretskort.jpg&lt;br /&gt;
Fil:JULA Sändare Framsida.jpg&lt;br /&gt;
Fil:JULA Sändare Kretskort.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_S%C3%A4ndare_Kretskort.jpg&amp;diff=3355</id>
		<title>Fil:JULA Sändare Kretskort.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_S%C3%A4ndare_Kretskort.jpg&amp;diff=3355"/>
		<updated>2010-09-23T13:38:55Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Sändarens kretskort (med lite modifikationer).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sändarens kretskort (med lite modifikationer).&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_S%C3%A4ndare_Framsida.jpg&amp;diff=3354</id>
		<title>Fil:JULA Sändare Framsida.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_S%C3%A4ndare_Framsida.jpg&amp;diff=3354"/>
		<updated>2010-09-23T13:38:08Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Fjärrkontrollens framsida&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fjärrkontrollens framsida&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagere_Kretskort.jpg&amp;diff=3353</id>
		<title>Fil:JULA Mottagere Kretskort.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagere_Kretskort.jpg&amp;diff=3353"/>
		<updated>2010-09-23T13:37:07Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Baksidan av kretskortet i mottagaren.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Baksidan av kretskortet i mottagaren.&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagare_%C3%96ppnat.jpg&amp;diff=3352</id>
		<title>Fil:JULA Mottagare Öppnat.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagare_%C3%96ppnat.jpg&amp;diff=3352"/>
		<updated>2010-09-23T13:36:32Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Inuti mottarenheten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inuti mottarenheten&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Etikett.jpg&amp;diff=3351</id>
		<title>Fil:JULA Etikett.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Etikett.jpg&amp;diff=3351"/>
		<updated>2010-09-23T13:35:28Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Etiketten på mottagaren&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Etiketten på mottagaren&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagare.jpg&amp;diff=3350</id>
		<title>Fil:JULA Mottagare.jpg</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=Fil:JULA_Mottagare.jpg&amp;diff=3350"/>
		<updated>2010-09-23T13:34:38Z</updated>

		<summary type="html">&lt;p&gt;Jesper: On/Off mottagarenhet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On/Off mottagarenhet&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
	<entry>
		<id>https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3349</id>
		<title>RF Protokoll - JULA-Anslut</title>
		<link rel="alternate" type="text/html" href="https://elektronikforumet.com/wiki/index.php?title=RF_Protokoll_-_JULA-Anslut&amp;diff=3349"/>
		<updated>2010-09-23T13:29:28Z</updated>

		<summary type="html">&lt;p&gt;Jesper: Beskrivning av RF-protokoll för JULA fjärrstyrda el-uttag.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JULA 'Anslut' protokoll ==&lt;br /&gt;
&lt;br /&gt;
=== Inledning ===&lt;br /&gt;
JULA har en serie självlärande fjärrstyrda uttag i serien 'Anslut', liknande NEXA [[RF_Protokoll_-_Nexa_självlärande]].&lt;br /&gt;
De säljs idag, September 2010, för 99kr för ett paket med 3 on/off-mottagare och en fjärrkontroll. Ett bra pris för en kul leksak som är perfekt för lite hacking.&lt;br /&gt;
&lt;br /&gt;
=== Teknikdetaljer ===&lt;br /&gt;
&lt;br /&gt;
Kontroldata skickas på en 433.92MHz radiolänk.&lt;br /&gt;
Modulationen är en simpel on/off modulation av bärvågen, vilket gör att man kan använda i stort sett alla 433.92MHz sändare, FM eller AM spelar ingen roll.&lt;br /&gt;
&lt;br /&gt;
Sändarkretsen är en Holtek HT46R01T3 [http://www.holtek.com/pdf/consumer/4xR01T3v120.pdf] som internt består av två delar, en MCU och en sändare. &lt;br /&gt;
MCU'n skickar data till sändaren på en I/O pinne som är internt kopplat. Men denne pinne är delat med vanlig I/O och tillgänglig på utsidan av kretsen.&lt;br /&gt;
Då MCU'n har en separat spänningsförsörjning, kan man koppla bort denna, och då går det att modulera sändaren externt.&lt;br /&gt;
&lt;br /&gt;
Pin 12 på kretsen är VCC till MCU'n. Denna pinne lyftas från kretskortet, eller klipps av.&lt;br /&gt;
På Pin 1 kan man nu modulera sändaren med ett 3.3V signal.&lt;br /&gt;
&lt;br /&gt;
Det intressanta med dessa självlärande system, är att de användar en unik kod för varje fjärr. I detta fall är koden 26 bitar lång.&lt;br /&gt;
Det betyder att man, om man själv konstruerar data med en CPU eller PC, kan ha ett mycket stort antal enheter och använda olika koder för varje (eller för grupper). Det enda problem i denna sammanhang är att man då inte kan använda den &amp;quot;vanliga&amp;quot; fjärrkontroll.&lt;br /&gt;
&lt;br /&gt;
=== Bit format ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'0' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_____&lt;br /&gt;
&lt;br /&gt;
|-----|-----|&lt;br /&gt;
   T     T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'1' bit:&lt;br /&gt;
 _____ &lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     |_________________________&lt;br /&gt;
&lt;br /&gt;
|-----|-------------------------|&lt;br /&gt;
   T               5T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'START' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |__________________________________________________&lt;br /&gt;
&lt;br /&gt;
|-----|--------------------------------------------------|&lt;br /&gt;
   T                         10T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'STOP' bit:&lt;br /&gt;
 _____             &lt;br /&gt;
|     |    &lt;br /&gt;
|     |            &lt;br /&gt;
|     |_______________________ . . . ____&lt;br /&gt;
&lt;br /&gt;
|-----|----------------------- . . . ----|&lt;br /&gt;
   T                40T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T = 250 us&lt;br /&gt;
(5T = 1250 us)&lt;br /&gt;
(10T = 2500 us)&lt;br /&gt;
(40T = 10 ms)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bitkodning ===&lt;br /&gt;
&lt;br /&gt;
Data på länken är &amp;quot;kodat&amp;quot; så att för varje databit skickas det två bitar på radiolänken.&lt;br /&gt;
'0' =&amp;gt; '01' skickas&lt;br /&gt;
'1' =&amp;gt; '10' skickas&lt;br /&gt;
&lt;br /&gt;
Exempel: För dataströmmen 0111, skickas det 01101010 över radion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paketformat ===&lt;br /&gt;
&lt;br /&gt;
Varje datapaket består av en startbit föld av 26 + 2 + 4 (totalt 32 databitar) och avslutas med en stopbit.&lt;br /&gt;
&lt;br /&gt;
För varje knapptryckning skickas det likadana 3 datapaket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''HHHH HHHH HHHH HHHH HHHH HHHH HHGO EEEE'''&lt;br /&gt;
&lt;br /&gt;
'''H''' = De första 26 bitar är kod som är unik för varje fjärrkontroll och det är denna &amp;quot;home&amp;quot; kod, som mottagarna lär sig att känna igen.&lt;br /&gt;
&lt;br /&gt;
'''G''' = Gruppkommando, denna bit är satt till 1 om kommandot är för hela gruppen.&lt;br /&gt;
&lt;br /&gt;
'''O''' = On/Off bit. Satt till 1 för on, 0 för off.&lt;br /&gt;
&lt;br /&gt;
'''EEEE''' = Enhet som ska tändas/släckas. Enhetsnumet är &amp;quot;inverterat&amp;quot;, 1111 = enhet 0, 1110 = enhet 1,  o.s.v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kodexempel ===&lt;br /&gt;
&lt;br /&gt;
Här är ett kodexempel som slår en enhet av och på varje 500 ms :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
// JULA protokoll exempel för ATmega88&lt;br /&gt;
//&lt;br /&gt;
// Jesper Hansen, Sept. 2010&lt;br /&gt;
// &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MY_HOMECODE     0x9394ff80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define RF_ON		PORTB |= (1&amp;lt;&amp;lt;0)&lt;br /&gt;
#define RF_OFF		PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;0)&lt;br /&gt;
&lt;br /&gt;
#define TSHORT		250				//   250&lt;br /&gt;
#define TLONG		(TSHORT * 5)	//  1250&lt;br /&gt;
#define TSTART		(TSHORT*10)		//  2500&lt;br /&gt;
#define TSTOP		(TSHORT*40)		// 10000&lt;br /&gt;
&lt;br /&gt;
#define REPEATS         3&lt;br /&gt;
&lt;br /&gt;
#define TIMERRESOLUTION	542	  //nS&lt;br /&gt;
&lt;br /&gt;
// busy wait&lt;br /&gt;
// up to 35.5 mS&lt;br /&gt;
void twait(uint32_t us)&lt;br /&gt;
{&lt;br /&gt;
        us *= 1000;	&lt;br /&gt;
	us /= TIMERRESOLUTION;&lt;br /&gt;
	TCNT1 = 0;&lt;br /&gt;
	while (TCNT1 &amp;lt; (us &amp;amp; 0xFFFF));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// set a level on the output pin and delay&lt;br /&gt;
//&lt;br /&gt;
void set_level(uint8_t polarity, uint16_t time)&lt;br /&gt;
{&lt;br /&gt;
	if (polarity)&lt;br /&gt;
		RF_ON;&lt;br /&gt;
	else&lt;br /&gt;
		RF_OFF;&lt;br /&gt;
	twait(time);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '1' bit&lt;br /&gt;
//&lt;br /&gt;
void one_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TLONG);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// output a '0' bit&lt;br /&gt;
//&lt;br /&gt;
void zero_bit(void)&lt;br /&gt;
{&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSHORT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send a 32-bit sequence, including start and stop bits&lt;br /&gt;
//&lt;br /&gt;
void shift_out(uint32_t data)&lt;br /&gt;
{&lt;br /&gt;
	uint8_t bit;&lt;br /&gt;
&lt;br /&gt;
	// send lead-in&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTART);&lt;br /&gt;
&lt;br /&gt;
	// send data&lt;br /&gt;
	for (bit=0;bit&amp;lt;32;bit++)&lt;br /&gt;
	{&lt;br /&gt;
		if (data &amp;amp; 0x80000000)	// one-bit&lt;br /&gt;
		{&lt;br /&gt;
			one_bit();&lt;br /&gt;
			zero_bit();&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			zero_bit();&lt;br /&gt;
			one_bit();&lt;br /&gt;
		}&lt;br /&gt;
		data &amp;lt;&amp;lt;= 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// stop bit&lt;br /&gt;
	set_level(1, TSHORT);&lt;br /&gt;
	set_level(0, TSTOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// send an RF  command&lt;br /&gt;
//&lt;br /&gt;
void send_data(uint32_t id, int group, int onoff, int channel)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for (i=0;i&amp;lt;REPEATS;i++)&lt;br /&gt;
	{&lt;br /&gt;
		id &amp;amp;= 0xFFFFFFC0;			// mask off ID part&lt;br /&gt;
		id |= ((group &amp;amp; 1) &amp;lt;&amp;lt; 5);	// add group bit&lt;br /&gt;
		id |= ((onoff &amp;amp; 1) &amp;lt;&amp;lt; 4);	// add on/off bit&lt;br /&gt;
		id |= ((~channel) &amp;amp; 15);	// add channel addressing	&lt;br /&gt;
		shift_out(id);				// send the pattern&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delayms(uint16_t v)&lt;br /&gt;
{&lt;br /&gt;
	while (v--)&lt;br /&gt;
		twait(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	// start timer 1&lt;br /&gt;
	// CPU clock is assumed to be 14.7456MHz in this example&lt;br /&gt;
&lt;br /&gt;
	TCCR1A = 0;&lt;br /&gt;
	TCCR1B = (1&amp;lt;&amp;lt;ICNC1) | (1&amp;lt;&amp;lt;ICES1) | 2; // clk / 8  -&amp;gt;  542nS&lt;br /&gt;
&lt;br /&gt;
	DDRB |= (1&amp;lt;&amp;lt;0);  // set RF modulator pin as output&lt;br /&gt;
&lt;br /&gt;
	while (1)&lt;br /&gt;
	{&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 0, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
&lt;br /&gt;
		send_data(MY_HOMECODE, 0, 1, 0);&lt;br /&gt;
		delayms(500);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jesper</name></author>
	</entry>
</feed>