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