-
مشكل با ssc
من يه برنامه براي راه اندازي 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;
}
}
-
سلام
توی فایل زیر مراحل کار به صورت کامل توضیح داده شده :
[Dear Guest/Member you can't see link before replyclick here to register]
البته من هنوز برنامه ی شما رو چک نکردم .
-
ممنون از پاسختون
من اين فايل را هم ديدم اما تفاوت چنداني با بخش ssc در datasheet نداره جز اينكه يكسري شكل هاي اضافي داره.
من تقريبا مطمئنم برنامه ام درسته .حتي برنامه من در محيط شبيه ساز هم اجرا ميشه. فكر ميكنم بايد نكته ايي باشه كه در ديتا شيت ذكر نشده باشه.
به هر حال ممنون ميشم دوستان برنامه ي من را يكبار اجرا كنند و نظرشون را راجب مشكل برنامه ذكر كنند.
-
كسي نمي خواد برنامه ي من را تست كنه!!!:(:sa::unh: