się.

Dec 01, 2009 0 Replies

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ś?


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required