ATmega128 보드가 내일 도착 하는데
데이타쉿을 보니 TTL /I/O 라는 문구가 안보여 걱정 입니다.
Port 단자는 대부분 LED Matrix용 Out으로 쓸거라서 Complementary TTL 이어야 합니다.
그런데 오픈 콜렉터(드레인)도 많이 쓰인다네요,
이럴 경우 풀업저항만 있어 출력 1과 0을 연결하면 LED를 킬만큼의 전류를 흘리지 못합니다.
이런경우 따로 버퍼를 써야 하나요?
이것을 Port 단자끼리 연결, 원하는 위치를 제어 하려면 Port 출력은 Complementary TTL이어야 합니다.
만일 AVR Port가 모두 오픈콜렉터라면 1 ~ 8 번까지의 세로선은 풀업저항 만으로 충분한 전류를 흘리지 못합니다.
즉 콤프리멘터리극으로 바꿔주는 버퍼를 달아야 해서요.
TTL 이라고 생각하고 사용해도 전혀 문제가 없습니다. 풀업저항이 내부에 있고 사용을 선택할 수가 있습니다. 내부 풀업을 사용하지 않고 외부에 저항을 달아 사용할 수도 있습니다. 팬아웃은 출력전류가 얼마이고 사용전류가 얼마인지에 달려 있습니다. 출력 가능 전류가 10mA 이면 그이상을 사용하는 회로를 붙이면 안되겠지요. 예를 들어 LED에 1mA를 흘린다면 열개 까지는 한포트에 연결이 가능합니다. 만일 그 이상의 전류를 흘리고 싶다면 TR 이나 버퍼 IC로 전류를 많이 흘려 주도록 설계해야 겠지요. 먼저 LED에 흘릴 전류값을 계산해보세요. 그리고 128 핀의 최대 전류값을 보고 전류값이 모자라면 TR을 붙여 구동하고 led 전류값이 작으면 직접 구동해도 됩니다.
제조사에 확인해본 결과 ATmega의 경우 오픈콜렉터는 아니고 Push-pull 출력임을 확인했습니다.
따라서 +공통이건 -공통이건 마음대로 쓸수가 있다는군요.
AVR Mega 시리즈는 각각의 I/O 핀 모두 Push-Pull, OD(Open-Drain) 를 선택할수 있습니다.
하지만, 윗 그림을 보니 RGB LED Matrix 같습니다.
각각의 LED 규격이 어떤지는 잘 모르지만
CPU Port 출력으로 켜고 끄는것은 좀 무리가 있어 보입니다.
별도의 전류 제한 회로로 켜시는 것이 결과물 보는데 무리가 없을 것입니다.
한두개 켜는 것이면 모르지만 다수의 LED 를 켜려면 아무래도 CPU Port Output이나 Sink 로는 무리가 있습니다.
OD 로 Tr 이나 FET 제어를 하시고 전류는 저항으로 적절히 제한하시는것이 바람직합니다.
Static 제어가 아닌 Dynamic 제어를 하시려면 Darlington Tr 이나 별도의 드라이버를 사용하셔야 합니다.
도움이 되시길.....