من يه برنامه براي راه اندازي ssc نوشتم .اين برنامه تو محيط شبيه ساز درست عمل ميكنه اما وقتي ان رو روي ميكرو پروگ ميكنم هيچ خروجي ندارم.ممنون ميشم دوستان اين برنامه رو ببينند و نظرشون را بگن
هر چقدر هم تنظيات واحد ssc را عوض كردم بازم جواب نداد(البته تو محيط شبيه ساز درست عمل ميكرد و روي ميكرو جواب نميداد)
برد من همين برد فروشگاه هستش(برد arm ورژن 2)
#include <AT91SAM7X256.h>
int a;
int main()
{
*AT91C_PIOB_PER = 0x07F80000;
*AT91C_PIOB_OER = 0x07F80000;
//Enable SSC peripheral clock
*AT91C_PMC_PCER = 1 << 8;//enable clock ssc
//active peripheral SSC
*AT91C_PIOA_ASR = 0x07E00000;//active peripheral on PA21 ta PA26
*AT91C_PIOA_PDR = 0x07E00000;//disable PIO on PA21 ta PA26
// Reset, disable receiver & transmitter
*AT91C_SSC_CR = (1<<1 | 1<<9 | 1<<15);// AT91C_SSC_RXDIS | AT91C_SSC_TXDIS | AT91C_SSC_SWRST;
// Configure clock frequency
*AT91C_SSC_CMR = 0xFF;
//ConfigureReceiver
*AT91C_SSC_RCMR = 0x30400000;
*AT91C_SSC_RFMR = 0x011804A8;
//Configure Transmitter
*AT91C_SSC_TCMR = 0x30400000;
*AT91C_SSC_TFMR = 0x019804A8;
//EnableTransmitter
*AT91C_SSC_CR = 1<<8;//enable TXEN
//Enable Receiver
*AT91C_SSC_CR = 1<<0;//enable RXEN
while(1)
{
//write frame
while ((*AT91C_SSC_SR & 0x01) == 0);
*AT91C_SSC_THR = 0x33;
//read frame
while ((*AT91C_SSC_SR & 0x10) == 0);
a = *AT91C_SSC_RHR;
*AT91C_PIOB_SODR = a<<19;
}
}