:::: MENU ::::
Browsing posts in: Tip

I2C 프로토콜의 NACK

I2C 프로토콜은 필립스반도체(지금의 NXP)에서 만든 프로토콜로 I2C의 약자는 Inter-Integrated-Circuit 이다. SDA, SCL 2 wire 만 필요해서 간단한데, SPI와 마찬가지로 마스터-슬레이브 구조를 가진다. 데이터를 전송하고 ACK가 오면 통신에 이상이 없는 것이지만 NACK의 상황도 있다.

하기 표와 같이 NACK의 상황중 가장 많은 경우가 Slave Address가 틀릴 경우일 것 같은데, 데이터 시트에서 명기한 주소가 7 bit address인지 아지면 8 bit인지 확인이 필요하고, 칩 벤더에서 제공하는 드라이버 코드가 8bit를 받아서처리하는 것인지, 7bit를 받아서 처리하는 루틴인지 확인이 필요하다. 참고 문서



ATTiny85 아두이노

ATTiny85는 8핀짜리 칩이나 아두이노 환경에서 개발가능하다.

  • Digispark-Compatible ATtiny85 USB 같이 부트로더가 있는 보드를 사용하거나
  • ATMEL ICE 같은 장비를 사용하고 아두이노 IDE에서 다운로드가 가능하다.

Digispark-Compatible ATtiny85 USB

주의할 점

Fuse 비트를 수정하면 Reset 핀도 사용이 가능하지만 일반적으로 안쓰는 것이 좋다. 나머지 사용이 가능한 핀은 다음과 같고, 시리얼 출력은 Software Serial이 사용이 가능하다. 단 프로그래밍을 할때 8Mhz로 해야 한다. Tools –> Board –> ATtiny85 (internal 8 MHz clock)

ATmega85 Pin Reference

사용이 가능한 함수들:

Getting Extra Pins on ATtiny

핀수가 적어서 이를 유용하게 사용하기 위한 팁 – http://www.technoblogy.com/show?LSE

참고


LED 회로 주의점

각  LED의 최대 전류를 넘으면 안됨. 하지만 각 LED 소자의 Forward Voltage가 조금씩 다를 수 있기 때문에 각각의 LED에 저항을 달으라는 이야기.


맥에서 avrdude 설치하기

맥에서 AVR 개발 환경을 셋업하는 방법은 AVR SetupStep-by-step how to install AVR dev tools에 잘 정리가 되어있다. 기본적으로 Arduino IDE를 설치하면 컴파일러나 make까지 설치가 되는데, Marlin 코드를 컴파일해서 다운로드 할 경우 make파일에 avrdude의 경로 설정이 없어서 이 경로를 .bash_profile에 설정을 하거나 avrdude를 홈 디렉토리에 설정을 하면된다. 

avrdude 설치하기

cd avrdude-6.3
./configure
make
sudo make install


벽돌된 Arduino Pro Micro 살리기

Sparkfun사의 Arduino Pro Micro는 ATmega32U4를 사용하고 USB CDC기능이 있다. 문제는 이 보드를 잘못 프로그래밍하면, 즉 아두이노에서 디바이스 선택을 잘못하거나, 5V 디바이스(16Mhz)인데 3.3V 디바이스(8Mhz)로 선택을 해서 프로그래밍을 하면 USB CDC포트가 사라져서 더 이상 프로그래밍을 할 수 없다.

해결 방법

Serial 포트를 연결해서 전원을 공급하고 보드의 RST와 GND를 연결했다 떼면, PC에서 시리얼 포트가 잡힌다. 이때 아두이노에서 제대로 된 세팅으로 다시 프로그래밍을 하면 된다.


키보드 설계 – 고스트 현상

키보드의 각 키는 스위치이고 이것의 입력을 받아서 처리하는 MCU는 I/O에 이 스위치가 연결된다. 하지만 모든 키에 I/O를 할당하기 위해서는 키보드의 갯수 만큼 I/O필요하므로 효율적이지 않다. 따라서 키보드 메트릭스 라는 것을 사용한다. 간단히 설명하면 MCU의 I/O에 여러개의 키를 연결하고 주기적으로 키를 스캔하는 방식이다.

키보드 매트릭스

위 그림에서 Row R0~R7은 MCU의 입력으로 주기적으로 스캔이되고, Column C0~C19까지는 MCU의 출력으로 5V에 연결이 되어 있다.

키보드 고스트 현상

키보드 고스트 현상은 여러개의 키가 눌려질때 어떤키가 인식이 안되거나 다른 키가 눌린것으로 인식이 되는 것이다. 아래 마이크로소프트 사이트에서 확인이 가능하다.

아래 그림의 경우 1) a와 c 키가 동시에 눌린경우는 각각의 키가 인식이 된다. 하지만 a, c, b가 같이 눌리는 경우, 보라색의 도통경로가 형성이 되어 d키도 눌린 것으로 인식이 된다. 이런 현상을 방지하기 위해 다이오드가 필요하다.

다이오드 연결

다음 그림과 같이 각 키에 다이오드를 연결하는데, 스캔 방향이 순방향이 되게 연결을 한다.



Safety Capacitor – X,Y Capacitor

Safety Capacitor, 보통 X,Y Capacitor로 부르며, 안전을 위해 AC 전원 라인에 사용되고, X, Y 2가지 타입이 있다. 일반적으로  X2, Y2를 많이 사용한다.

When a Class-X capacitor, also referred to as an “across the line capacitor”—the capacitor placed between line and neutral—fails because of an overvoltage event, it is likely to fail short. This failure, in turn, would cause an overcurrent protective device, like a fuse or circuit breaker, to open. Therefore, a capacitor failing in this fashion would not cause any electrical shock hazards.

If a Class-Y capacitor, also known as the “line to ground capacitor” or “the line bypass capacitor”—the capacitor placed between line and ground—fails short, this could lead to a fatal electric shock due to the loss of the ground connection. Class-Y safety capacitors are designed to fail open. A failure will cause your electronic device to be subjected to the noise and interference that the capacitor would normally filter out, but at least there will be no fatal electric shock hazard.

참고



맥 ISO 이미지를 부팅용 USB로 복사하기

ISO파일을 img파일로 변환

hdiutil convert -format UDRW -o OSX-Mavericks.img OSX-Mavericks.iso

OS X 는 자동적으로 확장자를 .dmg 로 한다. 즉 OSX-Mavericks.img.dmg

diskutil list를 실행하여 USB 메모리 스틱이 어떤 디바이스에 할당됐는지 확인하고 다음과 같이 unmount를 한다.

diskutil unmountDisk /dev/disk2

디스크 이미지를 복사

sudo dd if=OSX-Mavericks.img of=/dev/rdisk2 bs=1m

Disk Utility.app’ 를 실행하여 드라이버를 unmount

diskutil eject /dev/disk2 를 실행하고 USB 메모리 스틱을 물리적으로 분리

*위 글에서 OSX-Mavericks.iso가 맥용 이미지 파일이고, USB 메모리 스틱은 /dev/disk2에 있다고 가정


Pages:1234