Есть вот такая маленькая программа, все отлично компилируется, но!
1. Заливаем в LPC2214, запускаем и затем все начинает на плате моргать (как и должно)
по через 10-15 секунд (время разное) как бы все зависает!
ПЕРИОДЫ ПЕРЕКЛЮЧЕНИЯ НЕ РАВНЫЕ, КАК БУДТО АРМ ПРИТОРМАЖИВАЕТ!
ПОЧЕМУ???? ЭТО ARM НЕ МОЖЕТ СПРАВИТЬСЯ С ЗАДАЧЕЙ???
Я В ARM НОВИЧОК, НО В ATMEGAX Я ТАКОГО ТУПИЗМА НЕ ВИДЕЛ! АРМ ВООБЩЕ СТРАННЫЙ ДЕВАЙС.
ПОДСКАЖИТЕ, ЧТО НЕ ТАК?
2. ЕЩЕ КОГДА ПОДАЮ ПИТАНИЕ, ВЫПОЛНЕНИЕ ПРОГРАММЫ В АРМЕ МОЖЕТ СРАЗУ ЗАПУСТИТЬСЯ, А МОЖЕТ НЕТ (
ПОМОГАЕТ ЕЩЕ РАЗ ПЕРЕЗАПУСК ПИТАНИЯ ИЛИ НОЖКА RESET
ВООБЩЕ ВСЕ СТРАННО! КАКОЕ ТО К АРМАМ ПЕРВОЕ ВПЕЧАТЛЕНИЕ - ГО..НО! НО НЕ МОЖЕТ ВЕДЬ ТАКОГО БЫТЬ????
ГДЕ ЛОГИКА?
ВСЕ КОМПИЛИЛ В KEIL UVISION 5.XX
Код
#include "lpc22xx_keil.h"
#define STATUS_LED 20 // P0 (STATUS LED)
#define RELAY1 16 // P1 (GPIO 9)
#define RELAY2 25 // P3 (GPIO 10)
#define RELAY3 24 // P3 (GPIO 11)
#define RELAY4 25 // P1 (GPIO 12)
#define RELAY5 24 // P1 (GPIO 13)
#define RELAY6 23 // P1 (GPIO 14)
#define RELAY7 12 // P0 (GPIO 15)
#define RELAY8 22 // P1 (GPIO 16)
#define INOUT1 21 // P0 (GPIO 0)
#define INOUT2 22 // P0 (GPIO 1)
#define INOUT3 23 // P0 (GPIO 2)
#define INOUT4 19 // P1 (GPIO 3)
#define INOUT5 24 // P0 (GPIO 4)
#define INOUT6 18 // P1 (GPIO 5)
#define INOUT7 25 // P0 (GPIO 6)
#define INOUT8 17 // P1 (GPIO 7)
#define INOUT9 26 // P3 (GPIO 8)
static void delay(void )
{
volatile int i,j;
for (i=0;i<1000;i++)
for (j=0;j<1000;j++);
}
int main(void)
{
MAMCR = 2;
IODIR0 |= (1<<STATUS_LED) | (1<<RELAY7) | (1<<INOUT1) | (1<<INOUT2) | (1<<INOUT3) | (1<<INOUT5) | (1<<INOUT7);
IODIR1 |= (1<<RELAY1) | (1<<RELAY4) | (1<<RELAY5) | (1<<RELAY6) | (1<<RELAY8) | (1<<INOUT4) | (1<<INOUT6) | (1<<INOUT8);
IODIR3 |= (1<<RELAY2) | (1<<RELAY3) | (1<<INOUT9);
while (1)
{
IOCLR0 |= (1<<STATUS_LED) | (1<<RELAY7) | (1<<INOUT1) | (1<<INOUT2) | (1<<INOUT3) | (1<<INOUT5) | (1<<INOUT7);
IOCLR1 |= (1<<RELAY1) | (1<<RELAY4) | (1<<RELAY5) | (1<<RELAY6) | (1<<RELAY8) | (1<<INOUT4) | (1<<INOUT6) | (1<<INOUT8);
IOCLR3 |= (1<<RELAY2) | (1<<RELAY3) | (1<<INOUT9);
delay();
IOSET0 |= (1<<STATUS_LED) | (1<<RELAY7) | (1<<INOUT1) | (1<<INOUT2) | (1<<INOUT3) | (1<<INOUT5) | (1<<INOUT7);
IOSET1 |= (1<<RELAY1) | (1<<RELAY4) | (1<<RELAY5) | (1<<RELAY6) | (1<<RELAY8) | (1<<RELAY8) | (1<<INOUT4) | (1<<INOUT6) | (1<<INOUT8);
IOSET3 |= (1<<RELAY2) | (1<<RELAY3) | (1<<INOUT9);
delay();
}
}
Сообщение отредактировал Sergey Abaev - Jan 23 2014, 13:24