реклама на сайте
подробности

 
 
> Вопрос к профи
Sergey Abaev
сообщение Jan 23 2014, 13:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 21)
OlegH
сообщение Jan 23 2014, 13:27
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Похоже, к выходам контроллера реле подключены ? а каким образом то ?
Go to the top of the page
 
+Quote Post
coolbassnik
сообщение Jan 23 2014, 13:29
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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 взять в фигурные скобки laughing.gif Хотя по идее если ошибок не выдает то должно и так работать.

Сообщение отредактировал coolbassnik - Jan 23 2014, 13:34
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 13:31
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631



Цитата(OlegH @ Jan 23 2014, 17:27) *
Похоже, к выходам контроллера реле подключены ? а каким образом то ?



ТАМ НА САМОМ ДЕЛЕ НЕ РЕЛЕ, А ТРАНЗИТОР 2803.

РЕЛЕ БЫЛО РАНЬШЕ И ТОЖЕ ЧЕРЕЗ ТРАНЗИСТОР.


НЕ ДОГОНЯЮ ПОЧЕМУ ВИСИТ ГАДСКИЙ АРМ

Цитата(coolbassnik @ Jan 23 2014, 17:29) *
Может вывод RESET не подтянут должным образом ?


ПОДТЯНУТ, ТАМ СУПЕРВИЗОР СТОИТ.

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
DASM
сообщение Jan 23 2014, 13:32
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



КАКОЕ ТО К АВТОРУ ПЕРВОЕ ВПЕЧАТЛЕНИЕ - ГО..НО!
Можно не кричать вообще капс-локом то, а ?
Go to the top of the page
 
+Quote Post
coolbassnik
сообщение Jan 23 2014, 13:36
Сообщение #6


Участник
*

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



На транзистор ток ограничиваете в базу или это полевик ?
Вообще в ARM-ах все немного подругому чем в AVR, по идее вам нужно сначала проинициализировать периферию, включить тактирование на шинах, настроить PLL и тому подобные вещи. Тут скорей не в АРМах дело, а в правильном подходе к вопросу.

Сообщение отредактировал coolbassnik - Jan 23 2014, 13:41
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 13:40
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
sadat
сообщение Jan 23 2014, 14:26
Сообщение #8


Частый гость
**

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



Релюшки, надеюсь, диодами зашунтированы? Что коммутируют релюшки?
Все же посоветовал бы развязывать сигналы ограничительными 330 Ом - 1 кОм резисторами.
Конденсаторы по питанию АРМ есть?
Напряжение питания АРМ какое?

(В общем, тема для ветки "Для новичков")
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 14:30
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631



Цитата(sadat @ Jan 23 2014, 18:26) *
Релюшки, надеюсь, диодами зашунтированы? Что коммутируют релюшки?
Все же посоветовал бы развязывать сигналы ограничительными 330 Ом - 1 кОм резисторами.
Конденсаторы по питанию АРМ есть?
Напряжение питания АРМ какое?

(В общем, тема для ветки "Для новичков")


"диодами зашунтированы?" - да
"Что коммутируют релюшки" - ток не более 200мА

кондеры есть, питание 3.3В
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 23 2014, 14:32
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а еще поглядеть бы хорошо, не отрубается ли ПЛЛ, и не вылетаете ли вы по этому поводу в какой нибудь могучее прерывание все сломалось...
Go to the top of the page
 
+Quote Post
sadat
сообщение Jan 23 2014, 14:40
Сообщение #11


Частый гость
**

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



"Фото платы в студию" ©.....
да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-)
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 14:50
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631



Цитата(sadat @ Jan 23 2014, 18:40) *
"Фото платы в студию" ©.....
да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-)



Прикрепленное изображение


Цитата(sadat @ Jan 23 2014, 18:40) *
"Фото платы в студию" ©.....
да и схемку-то целиком неплохо... А то телепаты водятся на другом форуме :-)



У меня задача такая, нужно написать программку для тестирования всех GPIO, чтобы моргало.

Возможно в моем исходнике еще, что-то не хватает. Т.к. я не силен в АРМе, я кое как написал нечто.

Но это нечно:
1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу
2. иногда она виснет!

вот и все задача.

При этом оригинальная прошивка, которая будет стоять на этом арме - работает отлично и без отказно (ее писал не я)
Go to the top of the page
 
+Quote Post
sadat
сообщение Jan 23 2014, 14:52
Сообщение #13


Частый гость
**

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



Ясно - какая-то демо-плата, к ней прицеплена обвязка из непонятно-чего...
Первым делом в разрыв проводов управления добавить 1 кОм резистор, лучше - ближе к плате, чтобы проводки "антеннами" не работали.
Что там с питанием проца - по схеме не видно источников 3v3 и 1v8? Ну, думаю, на плате все развели и надо подать только чистое 5в, так? Ну и, логично, что к этому чистому 5в подцеплены 5в релюшки?

upd.
Так это все (пред.сообщение ТС) надо было бы и написать в первом сообщении. Тут "быстрая помощь" не придет, надо перелопатить определенное количество источников знаний (книги, форум, исходники), чтобы добиться идеально рабочего устройства.
Если есть исходники рабочей программы - то лучше в них и "ковыряться"...
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 16:02
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 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
}
....
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 23 2014, 16:08
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(Sergey Abaev @ Jan 23 2014, 11:02) *
Но это нечно:
1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу
2. иногда она виснет!
....

Как-то у меня процессор не запускался при подаче питания, потому что напряжение питания при включении нарастало слишком медленно. Не помню, насколько медленно.


--------------------
ASB
Go to the top of the page
 
+Quote Post
Sergey Abaev
сообщение Jan 23 2014, 16:12
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631



Цитата(Aleksandr Baranov @ Jan 23 2014, 20:08) *
Как-то у меня процессор не запускался при подаче питания, потому что напряжение питания при включении нарастало слишком медленно. Не помню, насколько медленно.


Тут на это дело стоит супервизор. Он нормально контролирует этот вопрос.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jan 23 2014, 16:23
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Sergey Abaev @ Jan 23 2014, 20:12) *
Тут на это дело стоит супервизор. Он нормально контролирует этот вопрос.

Угу, и очень эффективно ресетит проц на иголках например sm.gif
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 23 2014, 16:43
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(Sergey Abaev @ Jan 23 2014, 11:12) *
Тут на это дело стоит супервизор. Он нормально контролирует этот вопрос.

У меня тоже на это дело стоял супервизор.


--------------------
ASB
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Jan 24 2014, 13:01
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



С точки зрения Арма -- мне как программисту кажется что у Вас Сергей всё написано правильно.
Единственно что очень много пинов сразу включается выключается, проверте ещё раз может вы какой-нить жизнено важный пин задействуете (не было желания всматриваться в схему).

Поэтому я грешу на аппаратные причины. У вас есть осциллограф? Я бы курил в сторону watdogов.



--------------------
Go to the top of the page
 
+Quote Post
alx2
сообщение Jan 24 2014, 13:14
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Sergey Abaev @ Jan 23 2014, 19:50) *
1. не запускается когда подаю питание! только ножка ресет заставляет запуститься программу

Цитата(Sergey Abaev @ Jan 23 2014, 21:12) *
Тут на это дело стоит супервизор. Он нормально контролирует этот вопрос.

??? Как это понимать? Супервизор стоит, но при включении ресет не формирует? sm.gif

Цитата(Sergey Abaev @ Jan 23 2014, 21:02) *
Я в начале поста выложил свое творение, но возможно, что это коряво!

Вы выложили только часть своего творения (функцию main()). А до выполнения main() у Вас, очевидно, выполняется много другого кода (стартап, инициализирующий .data/.bss, стек, возможно, переключающий режимы генераторов и т.п.). Этот код Вы нам не показали. И если, как Вы говорите, программа не стартует при включении питания, вероятно, выполнение до main() и не доходит вовсе, все останавливается где-то в стартапе (а может и вообще не стартует, если ваш супервизор не формирует reset при включении)...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 25 2014, 05:33
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(alx2 @ Jan 24 2014, 19:14) *
Вы выложили только часть своего творения (функцию main()). А до выполнения main() у Вас, очевидно, выполняется много другого кода (стартап, инициализирующий .data/.bss, стек, возможно,
...

Что вы так разоряетесь? По уровню "творения" из первого сообщения и последующих сообщений ТС всё сразу было ясно wink.gif
У автора весь исходник и ограничивается тем, что приведено в первом сообщении и что такое "стартап", "инициализация периферии"
и пр. заумные слова, автор сроду не знает laughing.gif
Сразу после первого сообщения надо посылать курить доки на всё подряд, все остальные попытки лечения автора не имеют смысла.
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jan 26 2014, 02:12
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Плата заводская, тем более с SDRAM, так что отбросим схему и разводку. Разве что от коммутаций реле тычки по питанию лезут. Идем сюда, качаем примеры, изучаем, запускаем. Для точных задержек в 1с. запускайте таймер. И неважно, ARM это или AVR, всегда будьте готовы разбираться с неизвестной платформой.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 06:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01574 секунд с 7
ELECTRONIX ©2004-2016