LPC1768 Seriport haberlesme hatası

Başlatan KABO, 28 Ocak 2011, 08:46:56

KABO

       Arkadaslar,LPC1768 ile seri haberlesme yapamıyorum.daha once LPC2368 kullandım.LPC2368 de seri haberlesmede hiç bir problem yasamadan UART1 ile haberlesmemm gayet saglıklı bir şekilde oluyordu.Fakat LPC1768 Cortex M3 serisi Arm işlemcisinin ne UART1 nede UART2 ile haberlesme saglayamadım.ben seri haberlesmeyi kesmesiz bir şekilde kullanıyorum.ama Olmuyo.Bu konuda bilgissi olan arkadaslar Asagıda UART2 nin benim yaptıgım initial alt programında hangi hataların oldugunu soyleyebilirlermi acaba.Saygılar...


void init_UART2()
{     
   long baudrate;
   long fdiv;      
   baudrate = 9600;
   LPC_SC->PCONP   |= (1<<24);
   LPC_PINCON->PINSEL0  |=0X500000; //0x40000000;                    /* RXT1 VE TXD1 ENABLE AYARLARI*/
   //LPC_PINCON->PINSEL1  |= 0x1;                          /* RXT1 VE TXD1 ENABLE AYARLARI*/
   LPC_UART2->LCR    = 0x83;                           /* 8 BIT PARITY YOK 1 STOP BITI */
   fdiv     = (25000000 / 16 ) / baudrate;
   LPC_UART2->DLL    = fdiv % 256;
   LPC_UART2->DLM    = fdiv / 256;
   LPC_UART2->FDR    = 0x67;                           /* Fractional Divider */
   LPC_UART2->LCR    = 0x03;                          /* DLAB = 0 */
   LPC_UART2->FCR    = 0x01;
   LPC_UART2->FDR    = 0x00;
}
BILGI PAYLASTIKCA COGALIR...

KABO

          Arkadaslar,yukarıdaki ornekteki initial programı dogru calısıyor.UART1/2 nin calısmamasının sebebi Timer 1 kesmesi oldugu zaman calısmıyor.Simdi size timer initial ve timer kesmesi alt programını gonderiyorum.arkadaslar yardımınızı bekliyorum.acil bir durum..Kafayı yemek üzereyim.

/********   TIMER 1 INITIAL********************************/
void tmr1_initial()
{
   LPC_TIM1->PR    = 0x00000000;                   // On Bolme ( Bolucu )
   LPC_TIM1->TCR   = 0x00000002;                  // Timer Kontrolde Sayiciyi temizle
   LPC_TIM1->MCR   = 0x00000003;                   //mach kontrol register        //  ???????   
   LPC_TIM1->MR0   = 36000;                              
   LPC_TIM1->TCR   = 0x00000001;                   //Timer0'i baslat
   NVIC_EnableIRQ(TIMER1_IRQn); // Enable timer interrupt
}

/********************************** Timer 1 alt programı
void TIMER1_IRQHandler (void)
{
   if (degisken>0)
   {
      degisken=0;   
      LPC_GPIO1->FIOSET = 1 << 0;
   }
   else
   {
      LPC_GPIO1->FIOCLR = 1 << 0;
      degisken=1;   
   }
   LPC_TIM0->IR |= 1 << 0; // Clear MR0 interrupt
}




Arkadaslar bu timer kodlarındaki hata sizce nereden kaynaklanıyor olabilir.Timer initialde herhangi bir problem yok.Timer kesme yapıyo.acaba kesmeden donerken yanlıs birseyler mi yapıyorum.
BILGI PAYLASTIKCA COGALIR...

KABO

arkadaslar problemimin ne oldugunu buldum.problem kesmenin sonundaki      LPC_TIM0->IR |= 1 << 0;      bu satırdn kaynaklanıyor muş.ben timer olarak Timer-1 i kullanıyorum bu komutun     LPC_TIM1->IR |= 1 << 0;   bu sekilde olması gerekiyor.En kısa zamanda LPC1768 in dokumanlarını sitede yayınlayacagım.Benim simdilik herhangi bir problemim kalmadı   ;D ;D ;D
BILGI PAYLASTIKCA COGALIR...