реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> прерывания на lpc1343
induke
сообщение Mar 27 2011, 14:10
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 14-09-09
Пользователь №: 52 354



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

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

таймер работает, шим выдает а прерывания ни таймер не ацп не выдает
вроде все включаю так же какина лпц1768, там все работает а тут нет
помогите где я чо не включил или где косяк
CODE

#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 - Mar 27 2011, 19:31
Причина редактирования: Оформление длинного кода тэгами [codebox]
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 28 2011, 07:46
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



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

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

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

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

или

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


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

Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 28 2011, 08:12
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



1) Какая среда разработки? М.б. стоит начать с примера под этот МК.
2) Отладка в RAM(нужен макрос ремапинга векторов прерываний) или Flash (без макроса ремапинга)?
3) Не забыли в проект включить корректный startup.s ?
Go to the top of the page
 
+Quote Post
induke
сообщение Mar 28 2011, 10:16
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 14-09-09
Пользователь №: 52 354



не
все не то
я просто чтто не включаю а что не пойму
Go to the top of the page
 
+Quote Post
induke
сообщение Mar 29 2011, 11:29
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 14-09-09
Пользователь №: 52 354



разобрался сам
Go to the top of the page
 
+Quote Post
igorsk
сообщение Apr 1 2011, 00:30
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



Цитата(etoja @ Mar 28 2011, 09:46) *
Хороший стиль - явно указывать типы, так как
в вашей строчке:

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

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

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

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016