avr_apple_remote
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:ATtiny85 based micro controller project that replicates the functionality of an Apple remote control along with a simple hardware design for the remote control.
### Overview 
ATtiny85 based micro controller project that replicates the functionality of an Apple remote control along with a simple hardware design for the remote control.

### Apple Remote/ NEC Protocol Overview
- The Apple Remote uses an NEC IR protocol which consists of a differential PPM encoding on a 1:3 duty cycle 38 kHz 950 nm infrared carrier.
- Remote commands are 32 bits long, in the format : remote id (8bits), command (8 bits), apple identifier (16 bits)
- The 32 bits of encoded data are sent between the leader and the stop bit (time in microseconds):
  - leader: 9000 on, 4500 off
  - 0 bit: 560 on, 1690 off
  - 1 bit: 560 on, 565 off
  - stop: 560 on
- More information at http://en.wikipedia.org/wiki/Apple_Remote and http://www.sbprojects.com/knowledge/ir/nec.php

### Implementation Overview
- This code uses a 50% duty cycle for the PWM (instead of the standard 1:3) for simplicity which still works.
- PWM is done using 'Clear Timer on Compare Match (CTC) Mode'. [Page 72] 11.7.2 describes CTC mode.
- Output is on 0C0A which is PB0. The internal clock is set to run at 8Mhz.
- No prescaler is used. @8Mhz 1 tick = .000000125 secs, 38khz is a cycle every .000026 secs. 
- This means there is 208 ticks required for a full cycle (.000026/.000000125). OCR0A is set to half of this at 104.
- This is half a full cycle, meaning it will be off for a half cycle, toggled due to COM0A0, and then on for a half cycle.
- We enable/disable PWM by enabling toggle on compare mode and then disconnecting OC0A and assuming normal port operation. [Page 78]
- The buttons are setup in a voltage ladder (http://en.wikipedia.org/wiki/Voltage_ladder). They are triggered via interrupts on PB4 and PB3 and each button is identified via a ADC conversion.
- The MCU is set to sleep in the main loop (using SLEEP_MODE_PWR_DOWN mode) and is only awoken using pin change interrupts.

### Button Voltage Ladder Values
Voltage ladder values (using 10 bit ADC resolution) on PB4
RIGHT:    0.00V @ 5V / 0.00V @ 3V / 0 (1.8K)
DOWN:     0.77V @ 5V / 0.46V @ 3V / 158 (330R)
MENU:     1.78V @ 5V / 1.08V @ 3V / 367 (680R)

Voltage ladder values (using 10 bit ADC resolution) on PB3
UP:      0.00V @ 5V / 0.00V @ 3V / 0 (1.8K)
LEFT:    0.77V @ 5V / 0.46V @ 3V / 158 (330R)
SELECT:  1.78V @ 5V / 1.08V @ 3V / 367 (680R)

### Schematic
![Schematic](https://raw.githubusercontent.com/darkosancanin/avr_apple_remote/master/images/schematic.png)

### Breadboard
![Side View](https://raw.githubusercontent.com/darkosancanin/avr_apple_remote/master/images/breadboard_side.png)

![Top View](https://raw.githubusercontent.com/darkosancanin/avr_apple_remote/master/images/breadboard_top.png)

### PCB Layout
![PCB Layout](https://raw.githubusercontent.com/darkosancanin/avr_apple_remote/master/images/pcb_layout.png)

### Final Product
![Final Product](https://raw.githubusercontent.com/darkosancanin/avr_apple_remote/master/images/final.png)

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。