2011-09-28 2 views
1

저는 PIC32와 C 프로그래밍의 새로운 점이 많아서 다음과 같은 문제를 해결하는 방법에 대해 다소 혼란스러워합니다. 나는 PIC32의 LED를 켜고 끄기 위해 내가 할 수있는 것을 토글했다. 그러나 이제 전환 사이에 0.25 초 지연을 추가하려고합니다. 나는 72MHz 시스템 클록과 36MHz 주변 버스 클럭을 사용한다고 가정하라고 들었다. 나는 이제 Timer2가 Type B 타이머라는 것을 알고 있으며, 16 비트의 우스꽝스러운 조작을 위해 그것을 구성해야한다는 것을 알고있다. TON을 설정하기 전에 필요에 따라 TMR2, PR2 및 기타 비트의 초기 값을 T2CON에 먼저 설정하고 TON을 지우고 초기 값을 재설정하여 종료 할 수 있다고 생각했습니다.PIC32의 Timer2를 사용하여 지연 설정

글쎄, 위의 소리가 맞다면 C로 어떻게하면 좋을까요? 내가 참조 설명서에서 수집 할 수있는 것은이 같이 보일 수도 않습니다 : I는 프리 스케일을 설정하는 방법과 내 0.25s이 지연 달성 할 수 없습니다 있도록 어떤

이제
T2CON = 0x0;   // Stop Timer and clear control register, 
         // set prescaler at 1:1, internal clock source 
TMR2 = 0x0;   // Clear timer register 
PR2 = 0xFFFF;   // Load period register 
T2CONSET = 0x8000;  // Start Timer 

? 나는 내가 C에 필요한 것을 다루는 일에 능숙하지 못하다. 그리고 나는 여전히 어셈블리에서 이런 종류의 일을 수행하는 데 그다지 좋지 않다. 모든 지침이 인정된다. 그 어떤 사용의 경우 p32mx360f512l.h :

#include <p32xxxx.h> 

int main() 
{ 
    while(1) 
    { 
     PORTDbits.RD0 = 1; // Turns LED On? 
     // Delay...? 
     PORTDbits.RD0 = 0; // Turns LED Off? 
     // Delay...? 
    } 
    return 0; 
} 

헤더 파일 : 여기에 지금까지 내 코드입니다.

답변

0

헤더 파일의 이름이 당신이 C에서 일부 코드 샘플을 찾을 수 페이지에 ...와 http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532441

일을해야하는 칩 사용 ... 내가 생각하는 파일 이름을 기반으로 IS 당신이 ungated 모드에서 b 형 타이머를 제공하고 있기 때문에

루프는 좋은 생각이지만, :, 그래서 당신의 일반적인 접근 방식 때문에

"어떻게 C에서이 칩을 작동하는"와 같은 질문을 포함해야한다 , 나는 그 작업을 할 수있는 인터럽트 처리기를 사용하는 힌트를해야한다고 생각 ... http://ww1.microchip.com/downloads/en/DeviceDoc/61105E.pdf (섹션 14.4) 봐 방법에 se t이 최대 ISR에서

원하는 시간이 조금 플립 올 때 당신이 알 수 있도록, 클럭 주파수와 프리스케일러 설정에 따라 계산해야하는 값으로 타이머/카운터 값을 비교

비트가 뒤집은 후 다음주기의 타이머를 재설정하십시오.

+0

그래, 인터럽트 사용에 대해 생각해 보았습니다.하지만 교수님이 우리에게 루프백 지연을 변경하도록 요청할 것이라고 생각합니다. 하나는 다음 실험실을 위해 인터럽트를 사용합니다. 나는 그것을 알아낼 수 있었다고 생각한다. ;' 'TMR2 = 0;' 'PR2 = 0xFFFF가,' 'TCONSET = 0x8000' ' 'T2CON = 0x0으로 : 나는 일하는 것이 같은 것을 생각 ... PRX가 어떨지 기억에 문제가 있었다 while (TRM2 <(SysClockSpeed ​​* SecondsOfDelay)) {}' 'TCONCLR = 0x8000' –