Witam.
Mam SAM7S32. Chcę uzyskać PWM. Procesor działa z pełną prędkoscią i poprawnie (przerwanie PIT dziala dokładnie z takim okresem z jakim powinno, więc mam pełna predkość zegara taktującego rdzeń).
Wziąłem do reki lib_AT91..., przejrzalem wszystko w internecie co mi wpadło w łapska dotyczące PWM i wyprodukowalem kod, który _nie działa_.
AT91F_PWMC_StopChannel( AT91C_BASE_PWMC, AT91C_PWMC_CHID0 ); AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, AT91C_PA11_PWM0, 0 ); //AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, 0, AT91C_PA11_PWM0 );
AT91F_PWMC_CfgPMC(); //AT91F_PWMC_CH0_CfgPIO();
AT91F_PWMC_CfgChannel( AT91C_BASE_PWMC , AT91C_PWMC_CHID0 , 0 //0x0a , 100 , 75 );
//AT91C_BASE_PWMC_CH0->PWMC_CMR = AT91C_PWMC_CPRE_MCKA|AT91C_PWMC_CPOL;
AT91F_PWMC_StartChannel( AT91C_BASE_PWMC , AT91C_PWMC_CHID0 );
Komentarze pokazują miejsca eksperymentowania. Mimo zaklęć pin PA11 pozostaje martwy, choć fizycznie jest odpinany z GPIO, bo nie mogę nim recznie sterować (a sąsiednimi mogę). Pin PA11 jest sprawny elektrycznie
- nie inicjujac PWM mogę nim recznie machać z kodu.
Zakładam więc, że potrafie podpiąc PWM do pinu, ale z jakiejś przyczyny PWM nie pracuje. Co ciekawe w zależności od tego jakie mam szczęscie podczas wlaczania zailania pin pozostaje albo w stanie 1 albo w 0 (i juz sie nie zmienia). Errate czytalem, nic mi w oko nie wpadło.
Czy ktoś może zasugerować czego mi brakuje? Może gdzieś nie podpinam głównego zegara do modułu PWM? Ale chyba to powinno się zrobić samo w PWMC_CfgPMC().
Brak mi już pomysłów co sprawdzić, spędziłem nad tym jakieś 1.5 popoludnia i bez efektów. Poratuje ktoś?