Перейти к содержанию
    

прерывания на lpc1343

на лпц1768 всё что мне нужно работает на ура

на лпц1343 не могу ни одно прерывание запустить

 

вот тестовая програмка

 

таймер работает, шим выдает а прерывания ни таймер не ацп не выдает

вроде все включаю так же какина лпц1768, там все работает а тут нет

помогите где я чо не включил или где косяк

#include "LPC13xx.h"                        /* LPC13xx definitions */




/* Main Program */

volatile int ad;


int main (void) {


LPC_GPIO0->DIR = 0xFF;
LPC_GPIO2->DIR = 0xFF;
LPC_GPIO3->DIR = 0xFF;
LPC_GPIO1->DIR = 0x00;


LPC_IOCON->PIO0_8 = (1<<1)|(1<<3)|(1<<4);
LPC_IOCON->PIO1_10 = (1<<0)|(0<<7);



//NVIC->ISER = 1;


NVIC->ISER[1] = (1<<9)|(1<<10)|(1<<11)|(1<<14)|(1<<17); // T16(0),T16(1), T32(0),UART,ADC
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7)|(1<<8)|(1<<9)|(1<<12)|(1<<13)|(1<<16); // t16(0), t16(1),t32(0), uart, adc, iocon
LPC_SYSCON->PDRUNCFG |= (0<<4); //ADC ON


LPC_UART->FDR = 0x10;        // disable fractional baudrate
           LPC_UART->LCR = 0x83;        /* 8 bits, no Parity, 1 Stop bit */

           LPC_UART->DLM = 0x0;
           LPC_UART->DLL = 24;
           LPC_UART->LCR = 0x03;        /* DLAB = 0 */
           LPC_UART->FCR = 0x07;        /* Enable and reset TX and RX FIFO. */


           LPC_TMR16B0->TCR =1;
           LPC_TMR16B0->PR = 50;
           LPC_TMR16B0->MCR = (1<<10); // mr3r=1
           LPC_TMR16B0->MR3 =2000;
           LPC_TMR16B0->MR0 = 1000;
           LPC_TMR16B0->PWMC = (1<<0);
           LPC_TMR16B0->MR1 = 20;
           LPC_TMR16B0->IR = 1<<1;



LPC_ADC->CR = (1<<6)|(30<<8)|(1<<16);
LPC_ADC->INTEN = (1<<8);





 while (1)

 {




}


 return 0;	// Should never reach here
}





void TIMER16_0_IRQHandler(void)
{
LPC_GPIO3->DATA = 0;
	LPC_GPIO3->DATA = 255;


}





void TIMER16_1_IRQHandler(void)
{

}
void TIMER32_0_IRQHandler(void)
{

}

void TIMER32_1_IRQHandler(void)
{

}

void SSP_IRQHandler(void)
{

}

void UART_IRQHandler(void)
{

}

void USB_IRQHandler(void)
{

}

void USB_FIQHandler(void)
{

}

//void ADC_IRQHandler(void)

void ADC_IRQHandler (void)
{

LPC_GPIO3->DATA = 0;
LPC_GPIO3->DATA = 255;


ad = LPC_ADC->GDR;
ad>>6;


LPC_TMR16B0->MR0 = ad;

Изменено пользователем IgorKossak
Оформление длинного кода тэгами [codebox]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хороший стиль - явно указывать типы, так как

в вашей строчке:

 

LPC_ADC->INTEN = (1<<8);

 

компилятор выражение справа может привести к char, обнуляя сдвинутый бит,

а вот так более корректно

 

LPC_ADC->INTEN = (1L << 8);

 

или

 

LPC_ADC->INTEN = ( ( (unsigned long)1 ) << 8);

 

 

хотя дело может быть и не в этом.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Какая среда разработки? М.б. стоит начать с примера под этот МК.

2) Отладка в RAM(нужен макрос ремапинга векторов прерываний) или Flash (без макроса ремапинга)?

3) Не забыли в проект включить корректный startup.s ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хороший стиль - явно указывать типы, так как

в вашей строчке:

 

LPC_ADC->INTEN = (1<<8);

 

компилятор выражение справа может привести к char, обнуляя сдвинутый бит,

а вот так более корректно

Нормальный компилятор не должен, т.к. у целочисленных литералов по умолчанию тип int. Вот при сдвиге на 31 бит стоит быть осторожным, в таком случае лучше писать 1UL << 31.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...