Skocz do zawartości

AT91SAM7 jak uruchomić układy peryferyjne


Pomocna odpowiedź

Napisano

Witam,
Nie mogę uruchomić układów peryferyjnych w moim mikrokontrolerze (UART, SPI, PWM)

Przykład konfiguracji PWM:

void pwm_init(void)
{
AT91C_BASE_PIOA->PIO_PDR=AT91C_PA1_PWM1;
AT91C_BASE_PIOA->PIO_ASR=AT91C_PA1_PWM1;
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_PWMC;
#define DIVA 150
#define PREA (0x6<<8)
AT91C_BASE_PWMC->PWMC_MR=DIVA|PREA;
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CMR=AT91C_PWMC_CPRE_MCKA|AT91C_PWMC_CPOL;
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CDTYR=(unsigned int)25;
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CPRDR=(unsigned int)50;
AT91C_BASE_PWMC->PWMC_ENA=AT91C_PWMC_CHID1;
};

Po tym kodzie na pinie PA1 powinienem mieć sygnał PWM o okresie 0,5 sekundy. Pin jest cały czas w stanie wysokim, Podobnie z pinami spi i uart0. Nie wiem czy coś zle robie czy kontroler jest zepsuty.

Miganie diodą wykorzystująć PIOA, przerwania timera PIT, działają.

Uart i spi też działają (przychodzą przerwania po zakończeniu transmisji) ale nie mogę wyprowadzić na zewnątrz!

Konfigurowałem wg. Książki o AT91SAM7 jednoczesnie sprawdzając wszystko w dokumentacji i nie działa. Proszę o pomoc.

P.S.

Kontroler to at91sam7s256 moduł zakupiony na allegro

A podłączyłeś im sygnał zegarowy i zdjąłeś reset ? Najpierw musisz w SCU (System Controller Unit) odblokować reset i podać sygnał zegarowy =]

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...