-
1. Data: 2009-12-01 21:31:05
Temat: PWM na SAM7S32 nie uruchamia się.
Od: Sebastian Biały <h...@p...onet.pl>
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ś?