집에서 뒹굴뒹굴 놀고있는 USB나 Micro5핀 단자가 많이 있으실겁니다~

이번에는 놀고있는 케이블을 개조해서 필요한 형태로 쓰기위한 정보입니다!

 

1. USB 4pin 일반형태

 

         

        [Male 형태]                            [Female 형태]

 

Male형태는 말그대로 숫놈(?)입니다 ^^; 직사각형 모양 (12mm x 4.5mm)의 규격이며 주로 우리가 USB메모리가 저렇게 생겼지요

Female형태는 암놈(?) 입니다; 둥근 직사각형이며 (8mm x 7.2mm) 주로 케이블이나 기기에 저렇게 달렸있지요..

 

형태는 아래와 같이 2가지로 구분이 되며 케이블 헤드부분을 보시면 알겠지만 우리가 자주 봐왔던 형태입니다.

위에서 소개한 USB 4핀은 아래의 그림에서 첫번째 그림(A) 에 해당하며 B는 동일하지만 모양만 정사각형형태입니다.

핀번호를 참고 하시고요~ 만약 중국산이시면..직접 테스터기로 찍어보시길..추천합니다...ㅠㅠ 중국산은 꼭 이런 규격아닌경우도 있더군요...아까운 장비를 날려먹을수도 있으니..저가형 USB는 믿지마세요 ^^;

 

 

 

Pin Name Cable color Description
1 VCC Red +5 VDC
2 D- White Data -
3 D+ Green Data +
4 GND Black Ground

 

 

 

2. Micro 5pin 형태

 

 

미니 5핀의 경우는 위에서 소개해드린 USB 4핀과 동일한 기능을 가지지만 1핀이 더 존재합니다!

즉, 어떤 하나의 핀은 NC (No connected) 이거나 Gnd라는 소리지요~! 그렇지만!

 

이건 규격참 애매합니다잉~ 그러니깐 지금부터 딱 정해드리겠습니다! 이대로만 하는거에요! ㅎㅎ

한번 해보고 싶었습니다..ㅠㅠ ㅋㅋ

 

주로 핀은 아래와 같이 3가지의 형태가 존재합니다! 

     (1)              (2)              (3)

왼쪽부터 1,2,3으로 명명하겠습니다!

 

(1)  Pinout

 

Pin Name Cable color Description
1 VCC Red +5 VDC
2 D- White Data -
3 D+ Green Data +
X ID   May be N/C, GND or used as an attached device presence indicator (shorted to GND with resistor)
4 GND Black Ground

 

X번의 경우 제조사에 따라서  4~5번 핀을 연결시켜서  ID (장치 인식 고유 신호) 로 사용하기 때문에 아래의 (2)과 모양은 같지만 

1, 2, 3, 4로만 된 케이블은 1, 2, 3, 4+5로 된 케이블과는 호환이 되지 않습니다. 반드시 찍어보시길 추천합니다.

 

 

(2) Pinout & Standard Color

 

 Pin

Name 

Cable color 

Description 

 1 

 VCC

 RED   +5 VDC
 2  D-  White  Data -

 3

 D+  Green  Data +
 X      This pin may be connected to GND for cable detection in some cases.
 4  GND  Black  Ground

 

(3) Mini - USB 4PIN

 

Pin

Name

Cable color

Description

1 VCC Red +5 VDC
2 D- White Data -
3 D+ Green Data +
4 GND Black Ground

 

 



기존 케이블2개로 (마이크로USB케이블 하나와 일반 USB확장케이블)

직접만들어보는 USB-OTG케이블 제작설명에 대해서 포스팅 추가합니다.


아래의 두 그림은 USB의 HOST와 SLAVE모드를 구분합니다. 예를들면 스마트폰과 마우스를 연결한다면,

스마트폰은 -HOST, 마우스는-SALVE가 됩니다.


[Micro USB to USB in normal(slave) mode]

[Micro USB to USB in host mode]


위의 그림을 숙지하시고 아래와 같이 진행하시면 됩니다.

1. 준비물 확인

-Generic microUSB cable  (마이크로 USB케이블)

-USB extension cord   (확장케이블)

-Soldering Iron   (솔더링 -납땜을 위하여)

-Wire Stripper / Cutter  (스트리퍼, 니퍼)

-Solder   (인두기와 땜납)

-Heat-shrink  (열수축튜브, 가열하면 쪼그라드는 튜브입니다)




[왼쪽(검) : Generic microUSB cable / 오른쪽(횐) :USB extension cable]

2. 케이블 제작


1) 확장케이블 (숫놈부분만 제거합니다)을 충분한 길이만큼 자르세요. 우린 암놈만 사용합니다.

2) USB케이블의 암놈부분을 자르세요. 이걸 이제 연결할겁니다. 이것도 충분한 길이를 남겨놓으세요

3) 다음으로 위에서 설명한 HOST와 SLAVE 모드의 그림을 참조하셔서 사용용도에 맞도록 색깔에 맞춰서 연결하세요.

  : 빨강은 빨강끼리 초록-초록, 검정-검정으로 하시면 됩니다.

    HOST모드의 경우 4,5번 핀은 서로 땜질을 하시든 꼬으시든 연결해주세요. 

    그리고 쇼트를 방지하기위하여 수축튜브를 사용하시는 권장합니다. 그냥 테이핑 하셔도 됩니다.



[마이크로 USB 헤더를 열어본 사진입니다]


[4번 5번 핀을 서로 쇼트(연결) 시키는 사진입니다]


[마이크로USB(숫놈)와 일반(확장케이블) USB (암놈)를 연결한 사진]

제작은 위의 방법을 따르시면 됩니다.


그리고 참고로 아래의 그림은 Micro USB type A,B 핀배열사진 입니다.

보시는대로 소켓형태만 다를 뿐, 내부의 핀 배치는 동일합니다.



*출처 :

http://www.yogaretnam.com/gadgets/make-your-own-usb-otg-cable/#reply

먼저, 클래스에 대한 이해를 하기전에 왜 클래스가 필요한지 생각해보아야 합니다.

앞서 우리는 왜 변수를 선언하고 사용하는지에 대해서 이해를 했습니다.

변수의 형이라는것은

 - 변수가 사용하는 메모리의 크기

 - 변수가 가질 수 있는 정보

 - 변수를 어떻게 조작하는가?

에 대한 정보가 포함된 정보입니다. 따라서 새로운 형을 만든다는 것은 프로그래머가 디자인하는 시스템에 맞는 최적의 형을 그 문제를 쉽게 해결할수 있는 변수를 만드는 것입니다.

 

1. 클래스란?

관련된 함수들과 연관된 변수들의 집합. (즉 여러 변수들과 함수들을 내가 필요한것만 골라서 뭉쳐놓은것! =묶는다=객체=캡슐화) 

  - 캡슐화라는건 프로그래머에게 상당한 이점을 준다. 객체안에 무엇있는지 어떻게 동작하는지 알필요가 없다. 우린 그냥 잘 사용한

    다. 예를 들어 커피자판기에 우린 돈만 넣고 버튼만 누르면 커피가 나온다! 자판기가 어떻게 동작하는지는 몰라도 커피를 뽑는데

    에는 전혀 지장이 없다!

 

그리고 클래스의 변수들은 멤버변수 또는 자료멤버라고 부르며

          클래스의 함수들은 멤버함수 또는 클래스의 메쏘드라 부른다.

 

 

예를들어 자판기 클래스의 멤버함수는 동전투입부(), 음료출력부() 라 할수가 있고, 변수로는 콜라버튼, 사이다버튼 이라 할수가 있다. ( 예시가 너무 조잡하네요 ^^;..)

 

1-1. 클래스의 선언

클래스를 선언하기 위해서는 class라는 예약어를 사용해야 합니다.

 

class Who

{

int itsAge;

int itsSex;

Talk();

};

 

Who라는 클래스를 선언하였으며  중괄호안에 자료멤버(멤버변수)를 썼습니다. 그리고 메쏘드로는 Talk()를 선언하였습니다.

이 클래스를 선언하였다고 Who 클래스에게 메모리를 할당하지는 않습니다. 단지 클래스의 정보만을 컴파일러에게 알려줍니다.

(그리고 보통 프로그래머들은 멤버변수의 앞에 its를 붙여서 멤버변수임을 구별합니다)

 

이제 클래스를 선언하였다면 객체를 정의해보겠습니다.

 

Who ChulSu;  //Who 클래스명으로 객체 철수를 정의함. : 이것을 Who를 실체화하는것이라 생각하면 된다.

 

클래스 멤버에게 접근하는법은 아래와 같습니다.

ChulSu.itsAge = 18; //철수의 멤버변수에 18살을 대입.

ChulSu.Talk();        //함수를 쓰려면 이와같이 정의한 객체 철수를 통하여 사용.

 

1-2. 객체에 값을 할당

 

기존의 C나 C++에서 int = 1; 이라고 값을 대입하지 않았습니다.

클래스는 일종의 데이터 형이라고 생각해야 합니다.

따라서 Who = 1; 이라는것을 문법상 오류입니다.

 

int a;

a= 1; 과 같이 우리는 사용할 것입니다.

 

Who.Chulsu;

Chulsu.itsAge = 18;

 

과 같이 사용하여야 합니다.

 

2. private(전용) 와 public(범용) 의 이해

 

클래스를 선언할때 주로 같이 사용되는 예약어로 private 와 public이 있습니다.

기본적으로 클래스를 선언하게 되면 private속성으로 자동선언이 되어집니다.

 

private : 전용멤버(privat클래스의 변수)는 그 클래스 안의 해당 메쏘드(함수)에 의해서만 접근이 가능함 

public : 범용벰버(public클래스의 변수)는 다른 클래스의 객체에 의해서도 접근이 가능함

 

예제)

 

#include <iostream.h>

 

class Who

{

public :

      int itsAge;

   char itsSex;

};

 

int main()

{

Who.Chulsu;

Chulsu.itsAge = 18;

Chulse.itsSex =  m;

 

      cout<<"Chulsu Age =";

      cout<<Chul.itsAge;

return 0;

}

 

 

 

만약 예제에서  public : 을 주석 처리해버리거나 빼버리면??  -> 컴파일 오류가 난다.

이는 내가 만든 Who라는 클래스라도.. 그리고 Who의 객체인 Chulsu라 하더라도 public이 아닌 private로 선언된 클래스의 멤버들에 관해서는 접근이 되지 않는 것이다.   private 로 선언된 클래스내 멤버변수들은 클래스내의 함수들에 의한 내부적인 동작으로만 실행이되고 접근이 될뿐이다! 

 

그럼 public에서는 private로 접근할수 없는가?..아니다. 범용 접근자 메쏘드(함수)를 만들어서 클래스의 전용(private) 멤버 변수들을 읽고 쓸수가 있다! (이런 알고리즘은 전용성과 보안성이 생긴다)

 

(예시)

 

class Who

{

 

public :

  unsigned int GetAge();

  void SetAge(unsigned int Age);

  unsigned char GetSex();

  void SetSex(unsigned char Sex);

 

Talk();

private :

  unsigned int itsAge;

  unsigned char itsSex;

 

};

 

 

 

즉 위와 같이  전용변수로써 나이와 성별을 지정해놓으면 객체는 보호된다.

 

3. 클래스 메쏘드의 구현

 

멤버함수의 정의는 클래스의 이름으로 시작하여 두개의 콜론을 넣고 함수명을 쓰고 매개변수를 쓰면 된다.

 

(예시)

 

#include <iostream.h>

 

class Who

{

public :

  int GetAge();

  void SetAge(int age);

  void Talk();

private:

  int itsAge;

};

 

 

int Who::GetAge()   //클래스 메쏘드 함수

{

return itsAge;

}

void Who::SetAge(int age)

{

itsAge = age;

}

 

void Who::Talk()

{

cout<<"HAHAHa..\n";

}

 

int main()

{

Who.ChulSu;

ChulSu.setAge(18);

Chulsu.Talk();

cout<<"ChulSu Age is";

cout<<ChulSu.GetAge();

cout<<"\n";

ChulSu.Talk();

return 0;

}

 

위의 예시에서 중점적으로 봐야하는 부분은 int Who::GetAge()  void Who::SetAge(int age)의 구현부입니다.

접근자 메쏘드의 쓰임이 왜 이렇게 이루어졌는지 클래스선언부를 꼭 확인하시고 개념을 이해하도록 합니다.

 

4. 생성자와 소멸자

 

작성중..

 

 

8-bit with 8K Bytes In-System Programmable Flash

 

 

간단한 특징은 아래와 같습니다.

 

(1) 저 전력 고성능의 RISC구조 - 8MHz를 사용 시 8MIPS, 16MHz 사용 시 16MIPS 실행
(2) 데이터 및 비휘발성 프로그램 메모리
    - 8K Bytes의 프로그램 가능한 Flash Memory (직렬 프로그래밍 인터페이스 방식)
    - 1K Bytes의 내부 SRAM
    - 512 Bytes의 데이터 EEPROM(직렬 프로그래밍 인터페이스 방식)
    - In-System Programing을 위한 SPI Interface
(3) 주변장치의 특징 - 8비트 범용 작업 레지스터 32개
    - Programmable Serial USART
    - Master/Slave SPI Serial Interface
    - 별도의 프리스케일러를 갖는 8비트 타이머/카운터 2개
    - 비교·캡쳐 모드와 8~10비트의 PWM기능을 갖는 16비트 타이머/카운터
(4) 내부 및 외부 인터럽트 소스
(5) 저 전력 Idle, Power Save과 Power-down 모드
(6) 동작전압 : 4.5∼5.5V
(7) 동작클럭 : 0∼16 MHz

 

Features
• High-performance, Low-power AVR® 8-bit Microcontroller
• Advanced RISC Architecture
– 130 Powerful Instructions – Most Single-clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier
• Nonvolatile Program and Data Memories
– 8K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
– 1K Byte Internal SRAM
– Programming Lock for Software Security
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator
– Three PWM Channels
– 8-channel ADC in TQFP and MLF package
Eight Channels 10-bit Accuracy
– 6-channel ADC in PDIP package
Eight Channels 10-bit Accuracy
– Byte-oriented Two-wire Serial Interface
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and
Standby
• I/O andPackages
– 23 Programmable I/O Lines
– 28-lead PDIP, 32-lead TQFP, and 32-pad MLF
• Operating Voltages
– 2.7 - 5.5V (ATmega8L)
– 4.5 - 5.5V (ATmega8)
• Speed Grades
– 0 - 8 MHz (ATmega8L)
– 0 - 16 MHz (ATmega8)
• Power Consumption at 4 Mhz, 3V, 25°C
– Active: 3.6 mA
– Idle Mode: 1.0 mA
– Power-down Mode: 0.5 μA

 

 

아트메가128을 통해서 이미 다 공부해보시고 원하는 기능만을 구현하실때 사용하시면 참 편리합니다^^

적당한 I/O 갯수로 원하는 동작을 심플하게 디자인된 회로로 만들어 내실수 있습니다.

 

 

 

 

ATMega8.pdf

 

+ Recent posts