본문 바로가기

분류 전체보기

tapito의 AVR 정복기 - 3부. RAM tapito의 AVR 정복기 3부. RAM (c) tapito Ram이란? 그림 1. PC에서 사용되는 RAM의 한 종류 병렬 메모리는 1 사이클당 1바이트의 데이터를 취급하는 기억 소자입니다. 이 중 RAM은 전원이 차단되면 기억하고 있던 내용이 모두 지워지며 내부 구조에 따라 플립플롭형인 SRAM과 커패시터형인 DRAM 등으로 분류됩니다. 그림 2. 병렬 메모리의 개념도 병렬 RAM의 핀 배열 대부분의 병렬 RAM의 핀은 주소 핀 + 데이터 핀 + 제어 핀으로 구성되어 있습니다. 즉, 어느 제조사의 어느 모델이든 공통적으로 Axx, I/Ox, /OE, /WE, /CE를 가지고 있습니다. 여기에서는 AMIC에서 제조하는 A625308A-70SF를 예로 들어 보겠습니다. 그림 3. A625308A-70S.. 더보기
소나무 새싹 한달 전 쯤에 심어두었던 소나무 씨앗에서 싹이 올라왔습니다. 두 그루(?)... 며칠 새에 부쩍 크는군요 ㅎㅎ 더보기
[블로그 공사중] 스킨을 바꾸고 있습니다. 제가 직접 블로그 스킨을 만들고 있는 중입니다. Mac OS X의 느낌을 모방하여 매킨토시를 갖고싶은 tapito의 소박한(?) 소망을 담백하게 그려내고자 했습니다. 또한 잡스가 추구했던 단순함과 깔끔함에 초점을 맞췄습니다. 티스토리 스킨 가이드를 참고해서 만들었는데 아직 HTML에 서툴러서 버그가 좀 있고 투박한 부분도 있고 합니다. 계속 고쳐나가고 있으니 양해 바랍니다.. 더보기
CodeVision과 AVR Studio간의 인터럽트 비교 CodeVision AVR Studio interrupt [EXT_INT0] void ext_int1_isr(void); ISR(INT0_vect); interrupt [EXT_INT1] void ext_int1_isr(void); ISR(INT1_vect); ATmega128 기준입니다. interrupt [EXT_INT2] void ext_int2_isr(void); ISR(INT2_vect); (출처: http://turbocrazy.tistory.com/1048) interrupt [EXT_INT3] void ext_int3_isr(void); ISR(INT3_vect); interrupt [EXT_INT4] void ext_int4_isr(void); ISR(INT4_vect); interrup.. 더보기
소스로 보는 ATmega8535 – 2부. I/O Port 소스로 보는 ATmega8535 – 2부. I/O Port © tapitolife 1. I/O 포트의 구성 ATmega8535는 4개의 입/출력 포트가 지원됩니다. 각 포트는 8비트로 구성되어 있으므로 한 번에 4바이트의 데이터를 동시에 처리할 수 있죠. 그림 1. Pinout of ATmega8535 표 1. 각 핀에 대응하는 2진 값 핀 이름 Px7 Px6 Px5 Px4 Px3 Px2 Px1 Px0 2진 값 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 포트와 관련된 레지스터로는 DDRx, PORTx, PINx가 있습니다. 1) DDRx 포트의 방향을 설정합니다. 1이면 출력 전용, 0이면 입력 전용이며 각 핀별로 따로 설정할 수 있습니다. 코드 1. DDRx 사용 방법 01 : DDRA .. 더보기
핸디소프트 아리랑 핸디소프트 아리랑은 90년대에는 많이 쓰였던 워드 프로세서입니다. 원래 상용프로그램이었으나 지금은 개발사에서 지원 중단하면서 완전 공개했습니다. 설치 파일: , , , 패치: , 추가 구성: 도움말: , 더보기
포켓 도스 (Pocket DOS) 다운로드 옴니아가 옴레기라고 욕을 먹기는 하지만 그래도 도스는 깔립니다. ㅠㅠ Pocket DOS 1.12.2 다운로드  한글 MS-DOS를 깔아보았지만 에러가 나고 글자도 알아보기가 힘들더군요. Borland C++도 설치하고... 한글 1.5도 설치하고... 윈도우 3.0도 깔았습니다. 포켓 도스에서는 보호모드가 되지 않는 것 같습니다. 윈도우 3.1은 설치가 잘 안 되네요. 마지막으로 보글보글도 실행'만' 됩니다. 속도는 처참하게 느리지만. 더보기
(이동된 게시물입니다.) 본 게시글은 블로그 개편으로 이동되었습니다. 아래 주소로 접속하여 주십시오. This article has been moved due to the the reorganization of the blog. Please visit the page linked below: この文書はブログの改編ので移動されました。下記の住所で接続して下さい。 http://blog.codingcat.kr/37 더보기
소스로 보는 ATmega8535 – 1부. AVR에 HEX 파일 굽기. 소스로 보는 ATmega8535 – 1부. AVR에 HEX 파일 굽기. © tapitolife 2011 처음 시도해 볼 코드는 간단한 LED 점등 회로입니다. main.c #include int main() { DDRA = 0xFF; PORTA = 0b10101010; while(1) ; return 0; } 회로는 이렇습니다. 그림 1. LED 점등 회로 AVR에 프로그램을 넣기 위해서는 아래와 같이 합니다. 1. 회로 구성 먼저 AVR에 프로그램이 입력될 수 있도록 회로를 구성합니다. ISP(In-System Programmable) 보드는 컴퓨터에서 데이터를 받아 AVR에 구워주는 역할을 하는데, 병렬 포트를 이용한 ISP, 직렬 포트를 이용한 ISP, USB를 이용한 ISP 등등 다양한 종류의 I.. 더보기
ATmega 굽기 성공! 결국 ISP 보드(Ahram ISP 1.5, http://devicemart.co.kr/goods/view.php?seq=19015) 하나 샀습니다. USB 직접 꽂아서 쓰는 제품이라 시리얼이나 패러랠 포트가 없는 랩톱에서도 잘 호환되는군요. 이 제품도 내부적으로는 ATmega8535 SMD 타입을 쓰네요... 테스트를 위해 AVR Studio에서 간단하게 코드를 작성한 다음 빌드하고... 미리 준비한 타켓 보드와 ATmega8535를 연결해 봅니다. OK, OK, OK... HEX 파일이 에러없이 잘 구워집니다. 테스트 역시 잘 되는군요 ㅎㅎ 더보기
Visual C++ 1.52 설치 화면과 Spy 실행 화면 Visual C++ 1.52 설치 화면과 Spy (현재는 Spy++) 실행 화면. 출력되는 화면은 각각 hWnd, Message, wParam, lParam 값인듯 하다. 지금과 다른 것이 있다면 hWnd와 wParam이 Windows 3.1 당시에는 2바이트 정수였다는 것 뿐. 그 외에는 지금 쓰는 Windows와 비교할 때 특별히 달라진 것이 없는듯 하다. 더보기
완전 심플 메모장 프로그램 (옴니아 Windows CE용) Windows 메모장 프로그램처럼 아무 파일이나 단순 텍스트 편집만 시키는 프로그램입니다. 물론 옴니아에 기본적으로 Word Mobile이 있기는 합니다만 txt, rtf확장자만 편집할 수 있기에 이를 약간 보완하기 위해 제작했습니다. 또한 이 프로그램은 인코딩 모드(기본, 표준 ASCII, UTF-7/8/16)를 선택해 저장할 수 있습니다. 더보기
숫자 출력 시리즈 1편 - 무지개 피라미드 숫자 출력 시리즈 1편입니다. 구 버전 Borland C++용 함수들을 썼기 때문에 현재 버전의 Visual Studio에서는 컴파일이 안 될 수 있습니다. /* * 삼각, 역삼각 숫자 출력 프로그램 * 작성자: tapitolife * http://tapito.tistory.com * http://kin.naver.com/profile/dkhighest * 사용 환경: Borland C++ 3.1, Windows 3.1 * */ #include #include #define BUFCOL 5 // 버퍼의 열 수를 설정합니다. #define BUFROW 8 // 버퍼의 행 수를 설정합니다. #define NUMMIN 1 // 숫자의 최소 값을 설정합니다. #define NUMMAX 40 // 숫자의 최대 값.. 더보기
일본어 문자 코드: JIS X 0208 코드 표 EUC-JP 기준으로 표시되어 있습니다. 각 바이트의 MSB만 빼 주면 JIS X 0208이 됩니다. 더보기
JIS X 0201 JIS X 0201 ◆ 분류: 국가 표준 ◆ Copyright by tapitolife 소개 JIS X 0201(7비트 및 8비트 문자 교환용 부호화 문자 집합)은 1969년에 처음 제정된 최초의 일본어 문자 코드표입니다. 이 코드는 1바이트 크기 내에서 제정되었기 때문에 반각 가타카나만 존재하고 히라가나와 한자는 없습니다. 코드 영역 0x00-0x0F 0x10-0xFF 0x00-0x0F JIS X 0201 0x00행 0x00열~0xFF열만 점유 0x10-0x1F 코드 표 더보기
이동된 게시물입니다. 본 게시글은 블로그 개편으로 이동되었습니다. 아래 주소로 접속하여 주십시오. This article has been moved due to the the reorganization of the blog. Please visit the page linked below: この文書はブログの改編ので移動されました。下記の住所で接続して下さい。 http://blog.codingcat.kr/32 http://blog.codingcat.kr/33 더보기
한글 완성형 코드 KS C 5601 문자표 (풀버전) 구글링해도 한글 영역만 나와 있고, 한자/특수문자까지 다 포함한 풀버전은 안 나와 있기에 올려봅니다. (KSC5601 1987년 버전, 현재 KS X 1001 : 1987로 명칭이 바뀜) ○ KSC5601의 점유 영역 ↓ 상위 바이트 / 하위 바이트 → 0x00 ~ 0x7F 0x80 ~ 0xFF 0x00 ~ 0x7F 0x80 ~ 0xFF KSC5601 영역 (행: 0xA0 ~ 0xFF, 열: 0xA0~0xFF) 실질 점유 영역: 94행 x 94열  ○ KSC5601 완성형 한글코드 표 (클릭하면 크게 보입니다.) 더보기
MessageBox의 구버전 아이콘들 MessageBox의 구버전 아이콘들 (Windows 3.1 + Win16 API 사용) 1. MB_ICONEXCLAMATION (Windows Vista 부터는 ) 2. MB_ICONINFORMATION와 MB_ICONASTERISK (Windows Vista 부터는 ) 3. MB_ICONQUESTION (Windows Vista부터는 ) 4. MB_ICONSTOP, MB_ICONHAND (Windows Vista부터는 ) MB_ICONERROR는 식별자가 없다는 에러가 뜨는 것으로 보아 Win16 API에는 없었나 봅니다. 더보기
갈아 만든 Windows API - #3 Hello, World! 갈아 만든 Windows API #3 Hello, World! tapitolife(dkhighest@naver.com) 원본 소스 보기 #include HINSTANCE g_hInstance; TCHAR szClassName[] = TEXT("TAPITO WinAPI Example"); TCHAR szWindowName[] = TEXT("TAPITO Windows API Example #1"); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShow.. 더보기
갈아 만든 Windows API - #2. 창 배경색 수정하기 갈아 만든 Windows API #2. 창 배경색 수정하기 tapitolife (dkhighest@naver.com) 1. 원본 소스 보기 #include HINSTANCE g_hInstance; TCHAR szClassName[] = TEXT("TAPITO WinAPI Example"); TCHAR szWindowName[] = TEXT("TAPITO Windows API Example #1"); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSh.. 더보기
갈아만든 Windows API - #1. 도스와는 많이 다른 윈도우 프로그램 - #1. 도스와는 많이 다른 윈도우 프로그램 – Windows 프로그래밍은 도스에서 하던 것과는 다릅니다. 그것도 심하게. 확연히. 도스와 Windows의 가장 근본적인 차이는 바로 Multi-Tasking! 여러 프로그램이 동시에 실행된다는 것이죠. 제가 공부하면서 느꼈던 Windows 프로그래밍은 위와 같다고나 할까요? 도스 프로그래밍에서 자주 등장하는 공통된 내용이 "내가 직접 루프 구문 돌려서 배열 처리하는 거"였다면, 윈도우 프로그래밍에서는 "항상 긴장하고 있다가 어디서 튀어나올 지 모르는 탁구공(=메시지)을 받아 쳐야 하는" 것 같습니다. 매우 길어지고 많아진 온갖 파라미터들은 말할 것도 없죠. 후덜덜…… /* winmain.c */ #include HINSTANCE g_hInstance; .. 더보기
D-SUB 인터페이스 – 1부. Intro D-SUB 인터페이스 #1. Intro 0. D-SUB 커넥터란? D-SUB는 D-Subminiature("초소형")의 줄인 말로, 과거 PC와 여러 가지 주변장치를 연결하던 범용 단자였습니다. 오늘날로 치면 USB나 Fireware에 해당하겠죠. 여기서 D는 단자의 모양이 D자처럼 생겼다 해서 붙여진 것이고, Subminiature는 이 규격이 만들어질 당시 기준에서 보면 단자의 크기가 작았기 때문이라고 합니다. D-SUB는 그 커넥터의 크기에 따라 A, B, C, D, E의 5가지로 분류가 되어있고, 그림 1과 같이 각각의 크기에 따라 핀 수도 다릅니다. - by Tapitolife 1. 규격에 따른 D-SUB의 용도 D-SUB는 단지 단자와 핀의 형태만을 약속해 놓은 것이고, 각각의 핀에 대한 용도.. 더보기
C#의 새 기능: Optional Parameter 출처: http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040102&docId=133887229 가능합니다. 닷넷 프레임워크 4.0에서 추가된 기능 중 하나로 Optional Parameter라고 합니다. Visual Studio 2010을 사용하시면, 해당 오류가 발생하지 않을 것 같습니다. 이런 방식의 표현법은 기존의 COM 개체를 사용할 때, 상당한 사용 편이를 제공합니다. 예를 들어, Microsoft Office 자동화 개체를 사용을 보면 using Microsoft.Office.Interop.Word. var WordApplication = new Microsoft.Office.Interop.Word.Application();WordApplication.. 더보기
C++로 구현해 본 간단 스택 내가 처음 C++ 을 공부할때와는 문법이 약간 달라진듯 하다. 아래 소스는 현재 통용되는 C++ 문법에 따라 자료구조를 다시 공부하는 중에 한번 만들어 본 스택 구현이다. BitField라던가, 예외처리, typeid 같은거는 처음 배울 당시 책에는 없었던 기능들이었는데... 최근에 나온 C++0x는 람다식도 지원한다니. C++이 갈수록 막강해지는 것 같아 재밌다. /* stdafx.h */ #ifndef __STDAFX_H #define __STDAFX_H #include #include #include #include #include #include #include #endif /* tnode.h */ #ifndef __TNODE_H #define __TNODE_H namespace Tapito { .. 더보기
버퍼용 IC 74HC244 참고 문헌: 1. http://www.nxp.com/documents/data_sheet/74HC_HCT244.pdf 2. p256-p261 Datasheet 첨부 74HC244는 버퍼용도로 쓰이는 IC입니다. 케이블로 각 장치들을 연결할 경우 케이블 자체 저항이나 주변 간섭 등으로 감쇠현상이 나타날 수 있는데요... 책과 데이터쉬트를 찾아본 바에 의한다면 이 IC는 전송 도중에 왜곡된 신호를 교정해주는 역할을 하는 것 같습니다. 예를 들면 송신하는 기기 측에서는 "0"(0V)의 신호를 전달했는데 중간에 0.3V나 1.1V 등등으로 바뀌었다면 이걸 다시 "0"(0V)으로 잡아주고, 마찬가지로 "1"(5V)의 신호를 전달했는데, 케이블 자체 저항으로 인해 4.3V나 3.2V 등으로 강하되었을 때 이것 다시.. 더보기
RS232 ISP 회로를 직접 구현. 아무래도 USB-패러렐 변환기를 또 사는 것보다는 아예 직렬 ISP 보드를 만드는 게 훨씬 저렴하죠... 회로 출처: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=79515&start=0 마침 서울 나갔다가 세운상가 들러서 샀습니다. BC547 개당 50원, 1N5231 개당 50원, 직렬포트 개당 200원. 다 합쳐도 단돈 900원. 검색해보니까 BC547도 범용 NPN TR인 거 같은데 노이즈가 적은 특성이 있어 신호 전송용으로 쓰이나 봅니다. 1N5231은 제너다이오드로서 5V로 정전압 유지하기 위해 쓰이고요... 더보기
RS232를 지원하는 AVR ISP 회로 직렬 포트를 사용한 ATmega ISP 회로가 이미 공개되어 있었네요. 아래 회로는 Microsoft Visio로 다시 그린 것입니다. (클릭하면 크게 볼 수 있습니다.) 출처 사이트는 아래와 같습니다. http://diy4fun.blogspot.com/2009/01/simple-serial-programmer-for-avr.html http://www.rocket.pe.kr/10 어떤 종류이든 ATmega라면 공통적으로 VCC, /RESET, MISO, MOSI, SCK 단자만 연결하면 PC와 통신이 가능한 것이겠죠? VCC : 전압을 가하는 단자 GND : 접지와 연결하는 단자 /RESET : 평상시에는 항상 1이 입력되다가 프로그램 덮어 쓸 경우에는 접지시켜 0을 입력함. MOSI(Master O.. 더보기
ISP 보드 회로도입니다. 분류 기호 규격 커패시터 C1, C2 10μF C3 0.1μF C4, C5 20pF 고정 저항 R1 100KΩ 크리스탈 XTAL 16MHz 다이오드 D1 1N4148 집적회로 U1 레귤레이터 7805 U2 버퍼 74HC244 U3 AVR ATmega162 접속단자 D-SUB 25 프린터포트 Female형 D-SUB 25핀 U3 IC 소켓 40핀 병렬포트와 연결해서 쓰는 AVR ISP 보드 회로입니다. 필요한 분들 참고 하세요. 더보기
미니버전 ISP 보드 완성 책을 참고하여 AVR ISP 보드를 제작해 봤습니다. 이제 이 보드를 이용하여 AVR에 프로그램을 입력할 수 있습니다. 책에 나온 기판은 너무 커서 제가 직접 축소하여 미니 버전으로 만들어 봤습니다. 만능기판에다 일일이 리드선 땜질하느라 하루가 다 가버렸네요. 에휴~~ 땜납 흡취기가 없다면 중간에 납땜이 잘못 되었을 때 무지하게 난감해지죠. (오늘 제가 그런 케이스였습니다. 저항 주문하면서 같이 구매 할 걸...) 뒷면의 모습입니다. 책에 나온 회로를 재구성할 때 IC 핀 번호를 잘못 잡는 바람에 74HC244를 만능기판 아랫면에 박아야 했던 불상사가 생겼죠 ㅠㅠ 제 컴퓨터에 병렬 포트가 없는 관계로, USB-병렬포트 변환기를 통해 연결했습니다. 가장 큰 문제가 생겼습니다. 설레는 마음으로 병렬포트를 꽂.. 더보기
장난감 도착 "뇌를 자극하는 하드웨어 입문" 책을 읽어보기만 했지 실제로 거기 수록된 회로들을 만들어 보지는 못했는데 방학이니까 잠시 AVR 한번 갖고 놀아보고 싶어서 주문 했습니다. 0Ω부터 1MΩ 까지, 크기 별로 저항 구매했어도 10000원을 넘지 않음... 저항은 상당히 쌉니다. 이건 네온램프... 고전압을 가하면 은은한 빛이 나온다길래 한번 구매해 봤습니다. 주인공인 AVR과 RAM... 책에는 ATmega 162를 기준으로 내용이 적혀 되어 있으나, 이 모델은 단종된 건지 어쩐건지 세운상가에서 구로동까지 직접 방문해도 재고가 없다고 하네요. 어쩔수 없이 ATmega 16으로 대체하기로 했습니다. (사실 번호에 따른 차이는 핀 배열 빼고는 잘 모르겠음 --;;) 이제 이거 갖고 ISP보드부터 먼저 만들어 보.. 더보기