się.

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

Reply to
Sebastian Biały
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.