|
|
  |
Вливаюсь в коллектив ARMоводов ч.2, LPC-H2103 |
|
|
|
Dec 15 2010, 06:50
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Прошу помочь стартануть. Использую:IAR6.10, MT-link, кит плата LPC-H2103. Взял ИАРовский пример "IARMiniDev" Пытаюсь переделать под мигание диодом на плате LPC-H2103. Ничего не получается... делаю так: Код int main(void) { // Disable PLL PLLCON = 0; // Write Feed PLLFEED = 0xAA; PLLFEED = 0x55; // Set periphery divider /4 APBDIV_bit.APBDIV = 0; // Memory map init flash memory is mapped on 0 address #ifdef FLASH MEMMAP_bit.MAP = 1; #else MEMMAP_bit.MAP = 2; #endif
// Init variables PatternInd = 0; pNextPattern = pLedPatterns[0];
__disable_interrupt(); // Init VIC VicInit();
// Init GPIO PINSEL0 = PINSEL1 = 0; // Disable fast IO SCS_bit.GPIO0M = 0; // Set pins connect to LEDs as outputs IODIR = LED_MASK; // All LEDs off IOCLR = LED_MASK; KeysInit();
// Init timer // Reset and stop timer0 T0TCR = 2; // Set timer counters mode - clock by PCLK T0CTCR = 0; // Set timer prescaler T0PR = 0; // Set timer period T0MR0 = PCCLK/TICK_PER_SEC; // Set match action - interrupt by MACH0 enable, reset counter T0MCR = 3; // No external action T0EMR = 0; // Assign to IRQ VICIntSelect_bit.TIMER0 = 0; // Set interrupt slots VICVectAddr3 = (unsigned int) Timer0Handler; VICVectCntl3_bit.NUMBER = VIC_TIMER0; VICVectCntl3_bit.ENABLED = 1; // Timer 0 interrupt enable VICIntEnable_bit.TIMER0 = 1; // Enable timer0 T0TCR = 1;
// __enable_interrupt();
while(1) { FIOCLR = LED_MASK; // wait(); FIOSET = LED_MASK; //wait(); }; } // main(void) В режиме пошаговой отладки диод нереагирует пробовал так: Код IOCLR = LED_MASK; // wait(); IOSET = LED_MASK; //wait(); Результата тоже нет. В настройках проекта (ROMstart= 0x00000044, RAMstart=0x40000040) Проект прикладываю.Схему платы тоже.
|
|
|
|
|
Dec 15 2010, 07:28
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(esaulenka @ Dec 15 2010, 13:18)  Диодик, как я понимаю, "STAT green" ? да. Цитата Вопросы на засыпку: - к какой ножке МК он подключен? - какой ножкой (ножками) МК Вы управляете? Пин P0.26. Ну вот собственно и непонятно как ножками(или ножкой) то дрыгать. По аналогии с инициализацией порта пытался сделать.
|
|
|
|
|
Dec 15 2010, 07:36
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Не надо делать "по аналогии". Надо делать по документации. Работает гораздо лучше, я проверял  #define BIT(x) (1UL<<(x)) IO0DIR = BIT(26); // настроили на выход IO0SET = BIT(26); // погасили IO0CLR = BIT(26); // зажгли LED_MASK, если Вы ничего не меняли в примере, дёргает совсем другие ножки.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 15 2010, 07:44
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (adc @ Dec 15 2010, 12:50)  Прошу помочь стартануть. Напишите хоть три строчки НО СВОИ а не copy-paste. QUOTE (esaulenka @ Dec 15 2010, 13:18)  Ну и претензия к Станимиру Боневу, что написал этот пример Это Вы еще мало творчества примерописателей видимо видели  . Бонев один из самых вменяемых, поверьте!
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 15 2010, 07:49
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
На это пишет что порты неопределены: Код Error[Pe020]: identifier "IO0DIR" is undefined Error[Pe020]: identifier "IO0SET" is undefined Error[Pe020]: identifier "IO0CLR" is undefined Где их надо определить? зы: Си и IAR начинаю изучать, и по этому еще не привык к организации проекта. Сильно не пинайте, как сейчас говорят. Цитата Напишите хоть три строчки НО СВОИ а не copy-paste. Ну вот и попробовал. Кругом куча граблей. Заливаю прошивку а выхлопа нет. Хотелось бы запустить на чужом примере, а потом разобраться в достоинствах и недостатках кода и примера. Ну что тут плохого? Добавляешь своего кода(не копипаст) в программу пример и проверяешь адекватность полученного ожидаемому.
|
|
|
|
|
Dec 15 2010, 07:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
А это уже ко мне претензия  На более "толстых" камнях помимо порта 0 есть и 1,2,3,4, соответственно, там эти регистры нумерованные. В документации на LPC2101..2103 эти регистры значатся без индекса - просто IODIR, IOSET, IOCLR. Думаю, в хедере IAR'а iolpc2103.h сделано точно так же.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 15 2010, 09:05
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата В документации на LPC2101..2103 эти регистры значатся без индекса О! оно.. вот так заработала: Код IOSET = BIT(26); // погасили IOCLR = BIT(26); // зажгли Спасибо! Буду капать дальше! Подскажите что означает 1UL в Код #define BIT(x) (1UL<<(x)) В хелпе iar найти неполучается.. По файлу они везде: Код #define FOSC 14745600UL #define TICK_PER_SEC (8UL) #define TIM_DPER ((PCCLK*DELTA_PER)/1000UL)
|
|
|
|
|
Dec 15 2010, 09:31
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(adc @ Dec 15 2010, 15:05)  Подскажите что означает 1UL в Б. Керниган, Д. Ритчи Язык программирования Си раздел "константы". Ну и остальные разделы тоже стоит прочитать
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 15 2010, 10:08
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(esaulenka @ Dec 15 2010, 15:31)  Б. Керниган, Д. Ритчи Язык программирования Си раздел "константы". В книге нет описания. Нашел здесьUL тип данных (unsigned long int).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|