초보의 아웅다웅 설계하기 336

4. 내부 풀업 사용하기

PIC에서는 내부 풀업을 지원합니다. 내부 풀업이 있으면 CHIP 단가(1608TYPE, 47K 저항 약 0.6원)를 줄일 수 있고, ARTWORK시 패턴하나 안 그려도 돼서 편리하고 SMT시(표준 CHIP SMD 약 6원)가격도 내려가게 되어 여러모로 유리하게 됩니다. 당연한 이야기겠지만, 대전류 사용시에는 사용 불가합니다. ^ ^;; 1. 내부 풀업을 하지 않아서 오동작 OPTIONR 레지스터에서 글로벌 내부 풀업 뿐만 아니라 개별 풀업도 설정해주어야 사용이 가능합니다. 글로벌 내부 풀업만 딸랑 해주고 입력이 오동작 한다고 눈물을 흘릴때가 분명히 생깁니다. 2. ADCON 설정을 하지 않아 포트 오동작. ADCON을 사용하지 않을때는 ANSEL 설정을 해줘야 합니다. AD 컨버터 설정을 안해주면 이상..

3. PCL을 사용하는 데이터테이블 사용시 주의점.

PCL(PROGRAM COUNTER)를 사용하는 데이터 테이블의 위치가 주소의 경계면에 위치하면 오동작이 발생할 수 있습니다. 페이지가 다를 경우뿐만 아니라 0FF, 1FF, 2FF 이런식으로 큰 주소가 바뀔 경우데도 문제가 발생 할 수 있습니다. - 상위 비트 PCLATH의 영향을 받아 CLRF PCLATH를 해줘야 합니다. PC가 페이지 바운더리에 걸리지 않게 페이지 확인해서 수정해야 합니다.

2. CALL 문 사용시 주의할 점

프로그램을 짜다 보면 서브 루틴을 만들고 그 서브루틴을 불러오는 경우가 생기고, 서브루틴 하위에 또 서브 루틴을 불러오는 경우가 종종 생깁니다. 하지만 너무 깊이 들어가다보면 의도하지 않은대로 프로그램이 돌아 원인을 찾는데 너무 많은 시간을 허비할 때도 있습니다.(어디서 문제가 생겼는 지 찾아 낼 수가 없어서) 총 부를 수 있는 CALL문 수치 8개(DATA SHEET의 STACK LEVEL 수치 확인) - 실 수치보다 더 부를 경우(예. CALL문안에 CALL문안에 CALL 문안에........) 문제 발생하게 되므로 적당히 계산해서 사용해야 합니다.

1. 페이지 설정하기

PIC에서는 메모리 뱅크가 나누어져 있고, 메모리 뱅크에 관계없이 계속해서 프로그램을 만들게 되면 프로그램을 넣을 수 있는 메모리 구역을 넘어가게 되어 이상 동작이 발생하게됩니다. 여기에서는 PIC16F690을 예로 들어 설명하겠습니다.(사용이유 20PIN, 저가, NOMAL SPEC.) 000번지에서 7FF번지까지 PAGE0 800번지에서 FFF번지까지 PAGE1 로 구성되어있습니다. (16F887같이 PAGE가 4개인 CHIP도 있습니다.) PCLATH, .3을 1로 셋하거나 0으로 해서 페이지 설정을 해야함. - 프로그램의 길이가 길어서 페이지를 넘어가게 될경우(프로그램 확인) 주소 지정을 해서 번지를 옮겨주어야 합니다. (ORG 0x800) 예) ;---------------------------..