Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 (изменено) · Жалоба Есть вот такая маленькая программа, все отлично компилируется, но! 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(); } } Изменено 23 января, 2014 пользователем Sergey Abaev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OlegH 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Похоже, к выходам контроллера реле подключены ? а каким образом то ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coolbassnik 0 23 января, 2014 Опубликовано 23 января, 2014 (изменено) · Жалоба Может вывод RESET не подтянут должным образом ? Вот тут как-то странно написан код: static void delay(void ) { volatile int i,j; for (i=0;i<1000;i++) for (j=0;j<1000;j++); } Может нужно инициализировать переменные и второй цикл FOR взять в фигурные скобки :laughing: Хотя по идее если ошибок не выдает то должно и так работать. Изменено 23 января, 2014 пользователем coolbassnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Похоже, к выходам контроллера реле подключены ? а каким образом то ? ТАМ НА САМОМ ДЕЛЕ НЕ РЕЛЕ, А ТРАНЗИТОР 2803. РЕЛЕ БЫЛО РАНЬШЕ И ТОЖЕ ЧЕРЕЗ ТРАНЗИСТОР. НЕ ДОГОНЯЮ ПОЧЕМУ ВИСИТ ГАДСКИЙ АРМ Может вывод RESET не подтянут должным образом ? ПОДТЯНУТ, ТАМ СУПЕРВИЗОР СТОИТ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба КАКОЕ ТО К АВТОРУ ПЕРВОЕ ВПЕЧАТЛЕНИЕ - ГО..НО! Можно не кричать вообще капс-локом то, а ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coolbassnik 0 23 января, 2014 Опубликовано 23 января, 2014 (изменено) · Жалоба На транзистор ток ограничиваете в базу или это полевик ? Вообще в ARM-ах все немного подругому чем в AVR, по идее вам нужно сначала проинициализировать периферию, включить тактирование на шинах, настроить PLL и тому подобные вещи. Тут скорей не в АРМах дело, а в правильном подходе к вопросу. Изменено 23 января, 2014 пользователем coolbassnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 (изменено) · Жалоба На транзистор ток ограничиваете в базу или это полевик ? Полевик. Я поставил задерку delay больше, теперь работает в такт и не зависает. А нееет завис!!!!!!!!!!!!!!! (пока на форум писал) Может быть такое, что когда быстро и разом все включается/выключается, то питание просидает и выбивает арм? Арм сильно критичен к питанию? КАКОЕ ТО К АВТОРУ ПЕРВОЕ ВПЕЧАТЛЕНИЕ - ГО..НО! Можно не кричать вообще капс-локом то, а ? Извините, если обидел фанатов АРМа! Изменено 23 января, 2014 пользователем Sergey Abaev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadat 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Релюшки, надеюсь, диодами зашунтированы? Что коммутируют релюшки? Все же посоветовал бы развязывать сигналы ограничительными 330 Ом - 1 кОм резисторами. Конденсаторы по питанию АРМ есть? Напряжение питания АРМ какое? (В общем, тема для ветки "Для новичков") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Релюшки, надеюсь, диодами зашунтированы? Что коммутируют релюшки? Все же посоветовал бы развязывать сигналы ограничительными 330 Ом - 1 кОм резисторами. Конденсаторы по питанию АРМ есть? Напряжение питания АРМ какое? (В общем, тема для ветки "Для новичков") "диодами зашунтированы?" - да "Что коммутируют релюшки" - ток не более 200мА кондеры есть, питание 3.3В Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба а еще поглядеть бы хорошо, не отрубается ли ПЛЛ, и не вылетаете ли вы по этому поводу в какой нибудь могучее прерывание все сломалось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadat 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба "Фото платы в студию" ©..... да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба "Фото платы в студию" ©..... да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-) "Фото платы в студию" ©..... да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-) У меня задача такая, нужно написать программку для тестирования всех GPIO, чтобы моргало. Возможно в моем исходнике еще, что-то не хватает. Т.к. я не силен в АРМе, я кое как написал нечто. Но это нечно: 1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу 2. иногда она виснет! вот и все задача. При этом оригинальная прошивка, которая будет стоять на этом арме - работает отлично и без отказно (ее писал не я) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadat 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Ясно - какая-то демо-плата, к ней прицеплена обвязка из непонятно-чего... Первым делом в разрыв проводов управления добавить 1 кОм резистор, лучше - ближе к плате, чтобы проводки "антеннами" не работали. Что там с питанием проца - по схеме не видно источников 3v3 и 1v8? Ну, думаю, на плате все развели и надо подать только чистое 5в, так? Ну и, логично, что к этому чистому 5в подцеплены 5в релюшки? upd. Так это все (пред.сообщение ТС) надо было бы и написать в первом сообщении. Тут "быстрая помощь" не придет, надо перелопатить определенное количество источников знаний (книги, форум, исходники), чтобы добиться идеально рабочего устройства. Если есть исходники рабочей программы - то лучше в них и "ковыряться"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serjaru 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Ясно - какая-то демо-плата, к ней прицеплена обвязка из непонятно-чего... Первым делом в разрыв проводов управления добавить 1 кОм резистор, лучше - ближе к плате, чтобы проводки "антеннами" не работали. Что там с питанием проца - по схеме не видно источников 3v3 и 1v8? Ну, думаю, на плате все развели и надо подать только чистое 5в, так? Ну и, логично, что к этому чистому 5в подцеплены 5в релюшки? upd. Так это все (пред.сообщение ТС) надо было бы и написать в первом сообщении. Тут "быстрая помощь" не придет, надо перелопатить определенное количество источников знаний (книги, форум, исходники), чтобы добиться идеально рабочего устройства. Если есть исходники рабочей программы - то лучше в них и "ковыряться"... Да нет, исходник тут простой, нужна программа типа BlinkLed Но как ее грамотно под АРМ написать? Я в начале поста выложил свое творение, но возможно, что это коряво! Вот и хочется помощи от АРМщиков, помогите написать блинк лед, хотя бы на один канал. Далее я сам размножу. Должно быть типа этого: .... while (1) { delay(); //1 сек LED=1; // P0.20 delay() //1 сек LED=0 // P0.20 } .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Но это нечно: 1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу 2. иногда она виснет! .... Как-то у меня процессор не запускался при подаче питания, потому что напряжение питания при включении нарастало слишком медленно. Не помню, насколько медленно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться