induke 0 27 марта, 2011 Опубликовано 27 марта, 2011 (изменено) · Жалоба на лпц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; Изменено 27 марта, 2011 пользователем IgorKossak Оформление длинного кода тэгами [codebox] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 28 марта, 2011 Опубликовано 28 марта, 2011 · Жалоба Хороший стиль - явно указывать типы, так как в вашей строчке: LPC_ADC->INTEN = (1<<8); компилятор выражение справа может привести к char, обнуляя сдвинутый бит, а вот так более корректно LPC_ADC->INTEN = (1L << 8); или LPC_ADC->INTEN = ( ( (unsigned long)1 ) << 8); хотя дело может быть и не в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sysel 0 28 марта, 2011 Опубликовано 28 марта, 2011 · Жалоба 1) Какая среда разработки? М.б. стоит начать с примера под этот МК. 2) Отладка в RAM(нужен макрос ремапинга векторов прерываний) или Flash (без макроса ремапинга)? 3) Не забыли в проект включить корректный startup.s ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
induke 0 28 марта, 2011 Опубликовано 28 марта, 2011 · Жалоба не все не то я просто чтто не включаю а что не пойму Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
induke 0 29 марта, 2011 Опубликовано 29 марта, 2011 · Жалоба разобрался сам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsk 0 1 апреля, 2011 Опубликовано 1 апреля, 2011 · Жалоба Хороший стиль - явно указывать типы, так как в вашей строчке: LPC_ADC->INTEN = (1<<8); компилятор выражение справа может привести к char, обнуляя сдвинутый бит, а вот так более корректно Нормальный компилятор не должен, т.к. у целочисленных литералов по умолчанию тип int. Вот при сдвиге на 31 бит стоит быть осторожным, в таком случае лучше писать 1UL << 31. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться