컨트롤러"고속

M

mdeepamenon

Guest
안녕,
우리 PIC18F4520 마이크로 컨트롤러에 대한 22.1184 MHz의 외부 오실레이터와 함께 노력하고있습니다.우리는 캡처 인터럽트가 CCP2 핀 입력에서 떨어지고 가장자리를 캡처하는 것입니다 CCP2 사용하고있습니다.한번 떨어지고 가장자리에 발생 CCP2 모듈의 ISR이 호출됩니다.우리는 거기에 떨어지는 가장자리와 ISR이 첫 번째 명령어의 실행 사이에 발생하는 지연되고있는 것으로 나타났습 13 마이크로 초입니다.우리가 잃어버린 어떤 동기화 이러한 지연으로 인해 막대한 금액입니다.제발 인터럽트 지연을 줄일 수있는 방법을 권해드립니다.약 8 마이크로 초의 대기 시간을 우리가 사건에 대한 이상적인 것입니다.

감사 감사
Deepa

 
왜 홀수 크리스탈 주파수는?당신이 방해가 높은 우선 순위를 사용하고 계십니까?
당신 4xPLL 사용하고 계십니까?

 
무엇보다도, 난 그 이상의 문맥에 대한 ISR이 절약 12 또는 너무 기계 사이클을 더 사용하여 컴파일러를 통해 실행하지 않았습니다.귀하의 경우, 22MHz 오실레이터와 함께 약 2 3us 최상의 금액을 것이다.

일부 마이크로 문맥 절약 위해 ISR이 코드를 CCPR2H 및 CCPR2L 레지스터, 어떤 캡처의 순간 TIMER1 가치를 보유하고 귀하의 가치가되기 전에는, 여전히 유효합니다 통과시켰다.

곰 염두에두고, 반면 내부 ISR이 못 될 것입니다 다른 이후에 발생하는 모든 이벤트를 캡처.난 당신이 그렇게 데이터 시트이 명확하게 찾을 수 믿습니다.그래서 몇 가지를 캡처 타이밍을 제한하는 경우 데이터를 처리할 것으로 예상됩니다.

당신이 없다면 이벤트를 캡처하면서 ISR이 안으로, 지연 캡처 인터럽트가 발생할 수 판독의 정확성에 아무런 효과가있다.

 
안녕,
답장을 보내주셔서 감사합니다.
저기 클럭 주파수 선택을위한 특별한 이유이며 변경할 수없습니다.
CCP2 최고 proirity하는 데 방해가됩니다.
내가 MPLAB IDE를 버전 7.6 및 Hi - Tech는 PICC 컴파일러 버전 8.53을 사용하여 PL3입니다.
내가 ISR이 디자인에 대해 몇 가지 단어를 넣어하는 데 필요한 생각합니다.
CCP2 ISR이 떨어지는 때 가장자리 CCP2 입력 핀에서 발생한 맞았다.
ISR이 있음, 난 CCP2 인터럽트 비활성화됩니다 상승 에지를 기다립니다.
상승 에지적으로 떨어지고 가장자리 17.3 마이크로 초 후에 발생합니다.
자, 문제는, 그것은 13 마이크로 초 정도 ISR이에 입력하는 데 걸리는 제가 약 4 마이크로 초 인터럽트 및 상승 에지를 기다리고위한 지침을 실행을 해제 왼쪽입니다.이것은 시간이 충분하지 않더라도 코드 내부의 ISR이 최대에 최적화되어있습니다.상승 에지를 캡처하는 유일한 방법은 초기 대기 시간 감소 인터럽트입니다.
제발 지연 감소 방법을 권해드립니다.
감사 감사
Deepa

 
내가 전에 말했듯이, 13us 너무 많은 시간을 당신의 오실레이터 속도를 고려하고있다.당신이 뭔가 잘못 생각한다.만약 그때 여기 ISR이 섹션의 코드는 게시물 MPLAB 사용하고 보자보세요.

당신은 또한 PIC는 40MHz의 어떤 선생님의 어떤 코드 오버헤드가 최대 속도가 빨라집니다 @ 실행할 수있습니다.

 
인터럽트 서비스 루틴을 사용하여 인라인 어셈블리 코드입니다.이것은 C 컴파일러를 막을 저장됩니다.

환호

라비

 
안녕하세요당신은 하나의 인터럽트 함수를 호출있을 수있습니다.

우리는 이미이 문제가 있었 기능에 대한 모든 호출을 제거하여 해결

안녕

 
나는 루틴, 인터럽트 함수를 호출하는 프로그램이 제대로 작동 것으로 보인다.

 
답장을 보내주셔서 감사합니다 다.문제는 높은 초기 컨텍스트를 저장하는 이유였다.하이테크 C 컴파일러와 어셈블리가 동일한 프로그램 temperory 변수를 많이 사용했다.이러한 모든 변수는 시간을 절약하기 위해 많은 금액을 지출했다.그래서 우리는 메인 루틴이 인터럽트 루틴에서 코드를 많이 제거하고 문제가 해결 있어요.
감사 감사
Deepa

 

Welcome to EDABoard.com

Sponsor

Back
Top