본문 바로가기

[Microchip]

(132)
dsPIC33 large const 메모리 할당 - PSV 사용하기 dsPIC33 large const 메모리 할당 - PSV 사용하기 dsPIC33보드를 이용하여 EXP-ARM TFT LCD에 이미지를 출력하려고 const 데이터를 할당받았는데 에러가 발생한다. 하드웨어 구조상 32k 이상 할당이 안된다고 한다. 해결책이 없을까? dsPIC에서 const 데이터는 코어 구조상 32byte까지 할당 가능하다. 대용량의 코드 데이터(constant)를 할당 받으려면 PSV를 이용하면 된다고 한다. 물론 psv를 할당해도 32kbye단위로 설정 가능하다.(그냥 const로 설정하면 32k 이상 할당 할 수가 없다.) 32KB 영역(0x8000 ~ 0xFFFF)을 페이지 별로 할당하여 사용할 수 있다고 한다. C30컴파일러 에서는 __attribute__((space(psv)..
[PIC32-SM EVM] W5100을 이용한 USB 메모리스틱 웹서버 테스트 [PIC32-SM EVM] W5100을 이용한 USB 메모리스틱 웹서버 테스트 PIC32의 강점은 저렴하면서도 고성능의 USB호스트 기능이 있기 때문에 웹서버 어플리케이션에 사용하기에 좋다. 웹페이지를 USB메모리 스틱에 저장하기 때문에 페이지 업데이트와 같은 관리가 편리하고 범용성이 좋다. 뿐만아니라 고용량 이기 때문에 웹페이지 제작시 메모리 문제 없이 작성할 수 있다. 물론 고용량 데이터를 처리하기 위해 PIC32의 PMP기능을 이용하여 이더넷 속도를 좀 더 올릴 필요가 있다. 간단히 웹페이지 몇개와 이미지를 이용하여 웹서버를 테스트 해 보았다. 메인페이지 PIC32 보드 LED테스트 페이지 PIC32 USB메모리스틱을 이용한 웹서버 테스트 동영상
[PIC32-SM EVM] W5100을 TCP서버 전송속도 테스트 - SPI모드 [PIC32-SM EVM] W5100을 TCP서버 전송속도 테스트 - SPI모드 PIC32를 이용하여 W5100 이더넷 테스트를 해 보았다. PIC32는 저렴하지만 W5100을 빠르게 제어할 수 있는 PMP기능과 USB호스트가 있기 때문에 웹서버 어플리케이션에 적용하기 좋을것 같다. 일단 W5100 을 테스트하기 위해 간단히 연결할 수 있는 SPI방식으로 [NET-EVM]보드에테스트 했다. W5100제어를 위한 드라이버 코드는 아래와 같다. //----------------------------------------------------------------------------- // W5100 HAL #define W5100_CS_PORT LATG #define W5100_CS_BIT BIT9 #de..
[PIC32-SM EVM] SPI 테스트 - 가속도 센서 테스트 [PIC32-SM EVM] SPI 테스트 PIC32의 SPI는 최대 25Mhz로 동작하며 8, 16, 32비트로 설정가능하다. [PIC32-SM EVM] 보드에는 SPI핀이 SPI2 RG6(SCLK), RG7(MISO), RG8(MOSI)에 할당되어 있다. PIC32 블록도 PIC32 SPI초기화 void SPI0_Init(void) { SPI2CONbits.ON = 1; // Enable SPI2CONbits.FRZ = 0; SPI2CONbits.SIDL = 0; SPI2CONbits.DISSDO = 0; SPI2CONbits.MODE32 = 0; SPI2CONbits.MODE16 = 0; //8비트 모드 //SPI 모드 설정 SPI2CONbits.SMP = 0; //위상 설정 SPI2CONbits.C..
[PIC12F EVM] Soft UART 테스트 [PIC12F EVM] Soft UART 테스트 소형 MCU에서 UART를 이용하면 디버깅 하기에 편리한 점이 많다. PIC12F683 보드도 Soft UART를 이용하여 시리얼 제어 [LCD Module] 에 디버깅 정보를 표시하는 테스트를 해 보았다. 먼저 Serial.c 코드를 좀 수정하여 기존 코드와 호환 가능하도록 수정한다. // GPIO.0 as UART Rx, and 1 as Tx #define SOFT_UART_INIT() do{ \ TRISIO = 0x39;\ ANSEL = 0x00;\ GPIO = 0;\ Soft_UART_Init(&GPIO,0, 1, 9600, 0 );\ }while(0) #define U0_PutByte Soft_UART_Write void U0_Init(unsign..
[PIC12F EVM] mikroC PRO for PIC 사용기 [PIC12F EVM] mikroC PRO for PIC 사용기 mikroC 는 mikro사의 PIC컴파일러이다. 무료 버젼은 Microchip사 전체 PIC MCU를 지원하지 않지만 PIC12F683은 무료로 컴파일 할 수 있다. 용량도 작고 나름 라이브러리도 잘 구성되어 있어 사용하기는 상당히 편리한것 같다. 아래 링크에서 다운로드 가능하다. http://www.mikroe.com/eng/product_downloads/download/ 프로그램 다운로드 후 설치하고 새로운 프로젝트를 생성하면 위자드가 실행된다. [PIC12F EVM] 보드를 위해 PIC12F683 을 선택한다. 라이브러리 선택 제공되는 라이브러리를 이용하면 편리한 점이 많다. 이렇게 하면 자동으로 프로젝트가 생성되고 특별한 기본 설..
[PIC12F EVM] ADC테스트 [PIC12F673 EVM] ADC테스트 PIC12F 에는 10비트 ADC가 4채널 포함되어 있다. 아래는 PIC12F683의 ADC블록도 이다. 사용법은 간단하다. ADCON0레지스터에 초기화 해주고 ADRES레지스터 값을 읽으면 된다. PIC12F683 ADC 제어 코드 void ADC_Init(void) { Cbi(ANSEL, BIT3); Sbi(TRISIO, BIT4); ADCON0 = 0x8D; } unsigned int ADC_Read(unsigned char Ch) { if(Ch == 0)Cbi(ADCON0, BIT2|BIT3); else if(Ch == 1){Sbi(ADCON0, BIT3);Sbi(ADCON0, BIT2);} else if(Ch == 2){Sbi(ADCON0, BIT3);C..
[PIC12F EVM] TIMER0 테스트 [PIC12F EVM] TIMER0 테스트 TIMER0의 기본 구조는 아래와 같이 입력 클럭을 4분주 하고 2클럭 마다 TMR0를 증가 시킨다. 만약 간단히 대략 1ms를 만들려 다음과 같이 계산할 수 있다. 8Mhz 입력 클럭일 경우 8분주 했을때 타이머 오버플로우 인터럽트 시간은 8Mhz/4/8 = 4us => 256클럭마다 한번씩 오버플로 발생하므로 1.024ms 이다. TIMER0초기화 OPTION레지스터 void InitTimer0(void) { OPTION = 0; OPTION |= BIT1; //prescaler - 1/8 T0CS = 0; // Timer increments on instruction clock T0IE = 1; // Enable interrupt on TMR0 overfl..

반응형