|
Вопрос к профи |
|
|
|
Jan 23 2014, 13:14
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Есть вот такая маленькая программа, все отлично компилируется, но! 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
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jan 23 2014, 13:29
|

Участник

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

|
Может вывод RESET не подтянут должным образом ? Вот тут как-то странно написан код: Код static void delay(void ) { volatile int i,j;
for (i=0;i<1000;i++) for (j=0;j<1000;j++); } Может нужно инициализировать переменные и второй цикл FOR взять в фигурные скобки  Хотя по идее если ошибок не выдает то должно и так работать.
Сообщение отредактировал coolbassnik - Jan 23 2014, 13:34
|
|
|
|
|
Jan 23 2014, 13:31
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Цитата(OlegH @ Jan 23 2014, 17:27)  Похоже, к выходам контроллера реле подключены ? а каким образом то ? ТАМ НА САМОМ ДЕЛЕ НЕ РЕЛЕ, А ТРАНЗИТОР 2803. РЕЛЕ БЫЛО РАНЬШЕ И ТОЖЕ ЧЕРЕЗ ТРАНЗИСТОР. НЕ ДОГОНЯЮ ПОЧЕМУ ВИСИТ ГАДСКИЙ АРМ Цитата(coolbassnik @ Jan 23 2014, 17:29)  Может вывод RESET не подтянут должным образом ? ПОДТЯНУТ, ТАМ СУПЕРВИЗОР СТОИТ.
|
|
|
|
|
Jan 23 2014, 13:40
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Цитата(coolbassnik @ Jan 23 2014, 17:36)  На транзистор ток ограничиваете в базу или это полевик ? Полевик. Я поставил задерку delay больше, теперь работает в такт и не зависает. А нееет завис!!!!!!!!!!!!!!! (пока на форум писал) Может быть такое, что когда быстро и разом все включается/выключается, то питание просидает и выбивает арм? Арм сильно критичен к питанию? Цитата(DASM @ Jan 23 2014, 17:32)  КАКОЕ ТО К АВТОРУ ПЕРВОЕ ВПЕЧАТЛЕНИЕ - ГО..НО! Можно не кричать вообще капс-локом то, а ? Извините, если обидел фанатов АРМа!
Сообщение отредактировал Sergey Abaev - Jan 23 2014, 13:43
|
|
|
|
|
Jan 23 2014, 14:30
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Цитата(sadat @ Jan 23 2014, 18:26)  Релюшки, надеюсь, диодами зашунтированы? Что коммутируют релюшки? Все же посоветовал бы развязывать сигналы ограничительными 330 Ом - 1 кОм резисторами. Конденсаторы по питанию АРМ есть? Напряжение питания АРМ какое?
(В общем, тема для ветки "Для новичков") "диодами зашунтированы?" - да "Что коммутируют релюшки" - ток не более 200мА кондеры есть, питание 3.3В
|
|
|
|
|
Jan 23 2014, 14:50
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Цитата(sadat @ Jan 23 2014, 18:40)  "Фото платы в студию" ©..... да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-)
Цитата(sadat @ Jan 23 2014, 18:40)  "Фото платы в студию" ©..... да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-) У меня задача такая, нужно написать программку для тестирования всех GPIO, чтобы моргало. Возможно в моем исходнике еще, что-то не хватает. Т.к. я не силен в АРМе, я кое как написал нечто. Но это нечно: 1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу 2. иногда она виснет! вот и все задача. При этом оригинальная прошивка, которая будет стоять на этом арме - работает отлично и без отказно (ее писал не я)
|
|
|
|
|
Jan 23 2014, 14:52
|

Частый гость
 
Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575

|
Ясно - какая-то демо-плата, к ней прицеплена обвязка из непонятно-чего... Первым делом в разрыв проводов управления добавить 1 кОм резистор, лучше - ближе к плате, чтобы проводки "антеннами" не работали. Что там с питанием проца - по схеме не видно источников 3v3 и 1v8? Ну, думаю, на плате все развели и надо подать только чистое 5в, так? Ну и, логично, что к этому чистому 5в подцеплены 5в релюшки?
upd. Так это все (пред.сообщение ТС) надо было бы и написать в первом сообщении. Тут "быстрая помощь" не придет, надо перелопатить определенное количество источников знаний (книги, форум, исходники), чтобы добиться идеально рабочего устройства. Если есть исходники рабочей программы - то лучше в них и "ковыряться"...
|
|
|
|
|
Jan 23 2014, 16:02
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631

|
Цитата(sadat @ Jan 23 2014, 18:52)  Ясно - какая-то демо-плата, к ней прицеплена обвязка из непонятно-чего... Первым делом в разрыв проводов управления добавить 1 кОм резистор, лучше - ближе к плате, чтобы проводки "антеннами" не работали. Что там с питанием проца - по схеме не видно источников 3v3 и 1v8? Ну, думаю, на плате все развели и надо подать только чистое 5в, так? Ну и, логично, что к этому чистому 5в подцеплены 5в релюшки?
upd. Так это все (пред.сообщение ТС) надо было бы и написать в первом сообщении. Тут "быстрая помощь" не придет, надо перелопатить определенное количество источников знаний (книги, форум, исходники), чтобы добиться идеально рабочего устройства. Если есть исходники рабочей программы - то лучше в них и "ковыряться"... Да нет, исходник тут простой, нужна программа типа BlinkLed Но как ее грамотно под АРМ написать? Я в начале поста выложил свое творение, но возможно, что это коряво! Вот и хочется помощи от АРМщиков, помогите написать блинк лед, хотя бы на один канал. Далее я сам размножу. Должно быть типа этого: .... while (1) { delay(); //1 сек LED=1; // P0.20 delay() //1 сек LED=0 // P0.20 } ....
|
|
|
|
|
Jan 23 2014, 16:08
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(Sergey Abaev @ Jan 23 2014, 11:02)  Но это нечно: 1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу 2. иногда она виснет! .... Как-то у меня процессор не запускался при подаче питания, потому что напряжение питания при включении нарастало слишком медленно. Не помню, насколько медленно.
--------------------
ASB
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|