Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

PIC18f4580 - ECCP, nieprawidłowy odczyt w trybie przechwytywania

15 Jan 2021 18:59 324 1
This content has been translated » The original version can be found here
  • Level 1  
    PIC18f4580 - ECCP, nieprawidłowy odczyt w trybie przechwytywania

    Cześć wszystkim,
    Używam PIC18f4580, który pracuje z częstotliwością systemu 40 MHz.
    Zawiera tryb CCP i ECCP.
    Wyprowadzam sygnał PWM na pinie P1A ECCP o częstotliwości 1 MHz.
    (patrz rysunek, zielony sygnał).
    Teraz chcę odczytać sygnał wyjściowy za pomocą trybu przechwytywania.
    Do przesyłania używam UART.

    Problem w tym, że na wyjściu otrzymuję różne wartości. Na pin z RC2
    (Capture Mode) otrzymuję taki sam sygnał jak w przypadku ECCP.
    (patrz rysunek, różowy sygnał).

    Czy to w ogóle zadziałałoby, żeby trybu przechwytywania i trybu ECCP
    używać w tym samym czasie?

    Dlaczego otrzymuję różne wartości?
    Dlaczego nie otrzymuję zadanej częstotliwości (1 MHz)?

    W załączeniu mój kod programu, wyjście UART i zapisane sygnały.

    PIC18f4580 - ECCP, nieprawidłowy odczyt w trybie przechwytywania
  • Level 15  
    Jeśli w PIC18 oscylator pracuje z 40MHz, to znaczy że taktowanie cykli procesora to 10MHz. Przy 1 Mhz PWM wychodzi na to, że co każde zbocze narastające procesor wykonuje tylko 10 cykli, co najprawdopodobniej jest za mało by w tym czasie obsłużyć przerwanie, wysłać wartość przez UART.
    Poza tym w kodzie brakuje funkcji obsługi przerwania. Przerwanie w PIC18 polega na tym, że procesor w momencie wystąpienia przerwania przeskakuje do adresu wektora przerwania 000008h lub 000018h, zależy od priorytetu.
    Poniżej przykład funkcji obsługi przerwań dla kompilatora C18 wzięty z dokumentu MPLAB® C18 C COMPILER USER’S GUIDE

    Code: c
    Log in, to see the code