AVR415: RC5 IR Remote Control Transmitter on tinyAVR and

advertisement
AVR 8-bit Microcontrollers
AVR415: RC5 IR Remote Control Transmitter on
tinyAVR and megaAVR
APPLICATION NOTE
Introduction
Use of IR (infrared) light as a method for wireless communication has
become popular for remote control applications. There are a number of
different standards for such communication. In this application note the
widely used RC5 coding scheme from Philips will be described, and a fully
working remote control solution will be presented. This application will use
®
®
the Atmel ATtiny28 AVR microcontroller for this purpose. This powerful unit
contains a hardware modulator, a high current LED driver, and interrupt
options, which makes it especially well suited for these kinds of applications.
Features
•
•
•
•
•
Utilizes ATtiny28 special HW modulator and high current drive pin
Size efficient code, leaves room for large user code
Low power consumption through intensive use of sleep modes
Cost effective through few external components
Complementary of AVR410 RC5 IR Remote Control Receiver on
®
®
Atmel tinyAVR and megaAVR
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
Table of Contents
Introduction......................................................................................................................1
Features.......................................................................................................................... 1
1. RC5 Coding Scheme................................................................................................. 3
2. ATtiny28: The Ideal Solution for Intelligent Remote Control Systems....................... 4
3. Implementation.......................................................................................................... 5
4. Low Cost Implementation.......................................................................................... 6
5. Software.....................................................................................................................7
6. Summary..................................................................................................................11
7. Revision History.......................................................................................................12
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
2
1.
RC5 Coding Scheme
The RC5 code is a 14-bit word bi-phase coded signal as seen in the figure below. The first two bits are
start bits, always having the value “1”. The next bit is a control bit, which is toggled every time a button is
pressed on the remote control transmitter. This gives an easy way of determining whether a button is
pressed and held down, or pressed and released continuously.
Figure 1-1. RC5 Frame Format
S t1 S t2 Ctrl S 4 S 3 S 2 S 1 S 0 S 5 S 4 S 3 S 2 S 1 S 0
Five system bits hold the system address so that only the right system responds to the code. Usually, TV
sets have the system address 0, VCRs the address 5, and so on. The command sequence is six bits
long, allowing up to 64 different commands per address. The bits are transmitted in bi-phase code (also
known as Manchester code) as shown below, along with an example where the command 0x35 is sent to
system 5.
Figure 1-2. Bi-phase Coding
1
0
Figure 1-3. Example of Transmission
Note that the figures above show the signal that enters the Atmel ATtiny28 hardware modulator. The
actual signal emitted by the IR-LED will be modulated with a certain carrier frequency as shown in the
figure below.
Figure 1-4. Signal Before and After Modulation
HM
1
1
0
0
1
1
0
0
Ca rrie r
Fre q uenc y
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
3
2.
ATtiny28: The Ideal Solution for Intelligent Remote Control Systems
ATtiny28 is a low-cost, high-performance 8-bit AVR RISC microcontroller with a number of features that
makes it well suited for remote control applications. The built-in hardware modulator eases the task of
generating the carrier frequency on which a data signal can be modulated. Frequency and duty-cycle are
both easily changed by modifying the value residing in the Modulation Control Register MODCR. The
high current driver on pin two of port A (PA2) is capable of driving an LED with a minimum of external
components. This reduces size and system cost. In Power-down mode, the microcontroller can be
configured to wake up on a low level from any pin on Port B. This provides an easy solution for waking
up, scanning the keyboard, sending the command, and returning to Power-down mode. This application
implements an easy keyboard scanning routine using Port B and Port D.
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
4
3.
Implementation
The figure below shows the complete schematics for a remote control transmitter. See the table for
component descriptions. The 455kHz resonator gives the application a reliable and flexible clock base.
The external LED driver circuit provides a constant current for the IR-LED. Resistor R3 determines the
driver strength, and is in this application chosen to 7Ω giving a drive capability of approximately 100mA.
Higher resistor values will reduce current, and lowering the resistor value will increase driver strength.
The diodes, D1 and D2, are present to ensure a close to constant driving current and to compensate for
temperature variations in the transistor.
Figure 3-1. RC5 Transmitter
VCC
VCC
R1
VCC
D1
RES ET
IL
R3
P ORT B
C1
D2
XTAL1
R2
ATtiny28
PA2
Q1
XTAL1
C2
P ORT D
GND
Table 3-1. Components
Type
Comment
R1
3kΩ
External pull-up resistor is present to make the system less
susceptible to external noise. Without this component, noise might
reset the microcontroller.
R2
3kΩ
R3
7Ω
C1
100pF
Resonator dependent
C2
100pF
Resonator dependent
D1
1N4148
Small signal diode
D2
1N4148
Small signal diode
Q1
BC807-40TD
XTAL
455kHz
���� = 0.5�,
�2 =
�3 =
���min − 1.4
�
2��
0.7
��
Resonator
� = 250 − 600
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
5
4.
Low Cost Implementation
For cost sensitive applications with high tolerance on accuracy, a solution utilizing the internally calibrated
RC Oscillator of the ATtiny28 could be used. The high current drive capabilities of PA2 can sink the LED
directly giving a solution with only a few external components as shown in the figure below.
Figure 4-1. Low Cost RC5 Transmitter
VCC
VCC
VCC
D3
P ORTB[0..7]
PA2
P ORTD[0..3]
GND
By using an external resonator and a driver circuit for the IR LED, a more flexible solution is achieved.
The main advantage is higher driver capabilities and higher frequency stability over voltage range. If
however the receiver is self-synchronized, it will adapt to the changing frequency of the transmitter, and a
solution using the internal RC Oscillator could be used with good results.
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
6
5.
Software
The assembly code found in the AVR415.ASM file contains the latest RC5 Transmitter software. The
program execution can be divided into two routines. Both of them are interrupt driven, and use different
Powerdown modes to reduce power consumption. The program is designed to use only one level of
hardware stack, leaving two levels for user code.
Main
The main program loop is shown in the figure below. First all registers are initiated. The hardware
modulator is configured for correct frequency and duty-cycle. In this application 38kHz is used as the
carrier frequency. This differs from the RC5 standard, which specifies 36kHz for the carrier wave. The
RC5 signal will, however, be the same, and most standard RC5 Receivers should have no problem
receiving and decoding the signal. Once the I/O modules are initialized the purpose of the main loop is to
decide what sleep mode to use after the next wake-up.
Figure 5-1. Main Loop Flowchart
S ta rt
Init Re gis te rs.
Init Port P ins to Idle S ta te.
Ena ble IR Drive r.
Ena ble Ha rdwa re Modula tor.
Exe cute
Inte rrupt Code
Is La s t
Tra ns mis s ion
Finis he d?
No
Ye s
Ena ble Low Leve l Inte rrupt.
Ena ble Powe r-down
Ena ble Idle
Mode
Ena ble Inte rrupts.
Ente r S le e p
The program execution can roughly be divided into two states; “Transmitting a RC5 code” and “Waiting
for a key to be pressed”. While waiting for a key to be pressed, the ATtiny28 is put in Power-down mode.
In this mode the current consumption for the device is at a minimum, and the wake-up time is slightly
longer than for the Idle mode. Since the wake-up condition is caused by physically pressing a key, the
longer wake-up time will not cause a noticeable delay in the system.
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
7
Low Level Interrupt
When the ATtiny28 is in Power-down mode, a low level on any of the Port B pins will generate a Low
Level interrupt, waking the device and executing the code illustrated by the flowchart in the figure below.
The main purpose of this routine is to scan through the keyboard, and determine if a valid key is pressed.
If two or more buttons are pressed simultaneously the routine returns the value 0xFF indicating an error.
The “checksum” ensures that 63 of 64 combinations of row and column lines are high – that only one
unique combination, representing the key, is low. If only one key is pressed, the column and row bit
pattern is decoded into a pointer, which is used to perform a look-up in the Command table. Further, the
Low Level interrupt also controls the toggling of the control bit, indicating if a new “instance” of a
command is present, or if the “same” command should be re-transmitted. At the end of this routine, the
hardware modulator is started preparing the transmission.
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
8
Figure 5-2. Low Level Interrupt Flowchart
Low Le ve l Inte rrupt
A
B
Dis a ble Low Le ve l
Inte rrupts
Loa d Addre s s to S ta rt of Ta ble .
Add P ointe r 2 (Word ta ble )
S e t Che cks um = 193
S e t Column = 1
Loa d Low Byte of Comma nd.
Loa d High Byte of Comma nd.
Activa te Column
S e le ct Ne xt Column
Wa it for S igna l
P ropa ga tion
Ha s Comma nd
Cha nge d?
No
An y Ke ys
P re s s e d ?
Ye s
Inve rt Toggle Bit
Ye s
C h e c ks u m + = 8
S to re C o lu m n
S to re R o w
Tra ns fe r Toggle Bit
to Tra ns mit Byte
De s e le c t C o lu m n
Ne xt C o lu m n
Is b it "1 "?
No
No
Ye s
All C o lu m n s
Te s te d ?
No
S e le ct Ne xt Bit
S ta rt Tra ns mis s ion by
S ta rting Ha rdwa re
Modula tor. Loa d Numbe r
of Bits to Tra ns mit.
C h e c ks u m + = 1
Re s e t Ke yboa rd
Ye s
Ha s Entire Byte
Be e n Te s te d?
S a ve Comma nd P ointe r
Re turn
Lo a d n o Bu tto n
(0 xF F )
No
No
Ye s
Is Only Button
P re s s e d
(Che cks um = 0x00)?
Ye s
P ointe r + = 1
Is LS B of
Row Byte "0"?
S hift Row Byte Right
No
Ye s
P ointe r + = 8
S hift Column Byte Right
Is LS B of
Column Byte
"1" ?
No
Ye s
A
B
Timer Interrupt Routine
The figure below shows the flowchart for the Timer Overflow interrupt. The main task of the Timer
Interrupt routine is to keep track of the bit pattern that will be modulated on the IR LED, i.e., make sure
that the transmitted signal is in accordance with the bi-phase coding scheme. Once a complete frame has
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
9
been transmitted, the routines also generate a necessary delay before a new transmission is to be
started.
Figure 5-3. Timer Overflow Interrupt Flowchart
Time r Inte rrupt
De cre a s e Numbe r
of Bits to Tra ns mit
Ha ve All Bits
Be e n Tra ns fe rre d?
No
R e lo a d Tim e r with
Nu m b e r o f 3 8 kHz
P u ls e s to Tra n s m it
Ye s
Ha s Ho ld o ff
b e twe e n Tra n s m is s io n s
O c c u re d ?
Ye s
No
Is th is
S e c o n d Ha lf o f
Bit S p a c e ?
Dis a b le Mo d u la to r
O u tp u t
Ye s
S h ift C o m m a n d
Le ft (S e le c t Ne xt
Bit to Tra n s fe r)
S to p Tim e r
No
S e t O u tp u t to In ve rt o m
Ne xt In te rru p t (Tra n s m it
S e c o n d Ha lf o f Bit S p a c e )
R e lo a d C o u n te r to
G ive 1 2 m s De la y
No
S e t P o in te r = 0 xF F
(No C o m m a n d )
Ke y P re s s e d ?
S e t Mo d u la to r to
Tra n s m it Bit Va lu e
o n Ne xt In te rru p t
Ye s
R e tu rn Tra n s m is s io n
C o m p le te
R e tu rn Tra n s m is s io n
No t C o m p le te
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
10
6.
Summary
This application note describes how to make a simple RC5 Transmitter. Due to the flexible hardware of
the ATtiny28, other IR coding schemes could easily be implemented. It is also possible to change the duty
cycle of the transmitted signal, further decreasing the power consumption and thus extending battery life.
This application note acts as a foundation upon which other features can be implemented to result in a
power efficient Remote Control Transmitter.
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
11
7.
Revision History
Doc Rev.
Date
Comments
2534B
08/2016
New template and some minor
updates
2534A
05/2003
Initial document release
Atmel AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR [APPLICATION NOTE]
Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
12
Atmel Corporation
©
1600 Technology Drive, San Jose, CA 95110 USA
T: (+1)(408) 441.0311
F: (+1)(408) 436.4200
|
www.atmel.com
2016 Atmel Corporation. / Rev.: Atmel-2534B-RC5-IR-Remote-Control-Transmitter-on-tinyAVR-and-megaAVR_Application Note-08/2016
®
®
®
®
®
Atmel , Atmel logo and combinations thereof, Enabling Unlimited Possibilities , AVR , tinyAVR , megaAVR , and others are registered trademarks or trademarks of
Atmel Corporation in U.S. and other countries. Other terms and product names may be trademarks of others.
DISCLAIMER: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any
intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND
CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED
OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS AND PROFITS, BUSINESS
INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this
document and reserves the right to make changes to specifications and products descriptions at any time without notice. Atmel does not make any commitment to
update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive
applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
SAFETY-CRITICAL, MILITARY, AND AUTOMOTIVE APPLICATIONS DISCLAIMER: Atmel products are not designed for and will not be used in connection with any
applications where the failure of such products would reasonably be expected to result in significant personal injury or death (“Safety-Critical Applications”) without
an Atmel officer's specific written consent. Safety-Critical Applications include, without limitation, life support devices and systems, equipment or systems for the
operation of nuclear facilities and weapons systems. Atmel products are not designed nor intended for use in military or aerospace applications or environments
unless specifically designated by Atmel as military-grade. Atmel products are not designed nor intended for use in automotive applications unless specifically
designated by Atmel as automotive-grade.
Download