Easyelectronics.ru

Электроника для всех
Текущее время: 23 окт 2019, 03:08

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: нелогичное начало
СообщениеДобавлено: 31 июл 2013, 19:07 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Добрый день, уважаемый All.
Дано:
olimex lpc1227
colinkex v1.1
установленный IAR и рабочие исходники дефолтной прошивы, все прошивается утилой CoFlash
установленный CoIDE и ни одного исходника и рабочих естественно, семплы компилятся но заливаются через раз и не работают
установленный Keil и все плохо

Требуется:
Или осознать как оно работает через IAR от начала и до конца,
или заставить работать связку CoIDE+CoFlash+ColinkEx+olimex lpc1227,
на Keil даже и не рассчитываю...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 17:04 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Ситуация поменялась, смог заставить компилироваться минимальную болванку в IAR но дальше включения первого диода никак ничего не идет...
Код:
int main(void)
{     LED1_DIR |= LED1_MASK; }

зажигает лед1
Код:
int main(void)
{    LED1_DIR |= LED1_MASK;
    LED2_DIR |= LED2_MASK; }

зажигает оба леда
Код:
int main(void)
{
  int cnt = 10000;
 
  while(1)
  {
    LED1_DIR |= LED1_MASK;
    LED2_DIR |= LED2_MASK;
    for (;cnt;cnt--);
    LED1_DIR &= ~LED1_MASK;
    LED2_DIR &= ~LED2_MASK;
    for (;cnt;cnt--);
  }
}

зажигает оба леда и больше ничего не происходит...
Есть у кого-нибудь догадки где я облажался?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 17:44 
Старожил

Зарегистрирован: 19 июн 2012, 14:17
Сообщения: 3440
mitrofanzzz писал(а):
зажигает оба леда и больше ничего не происходит...

А что еще должно происходить?

mitrofanzzz писал(а):
Есть у кого-нибудь догадки где я облажался?

- частота камня наверняка больше 100КГц, счёт в цикле до 10 000 чел. глазом заметить сложно или невозможно
- переменная счётчик после первого прохождения цикла всегда остается нолем
- компилятор в целях оптимизации такие циклы может выкидывать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:26 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Цитата:
А что еще должно происходить?


По идее должен бы потушить...ну я на это надеялся...

По остальным доводам соглашусь, пора выпить кофейку и отдохнуть... усталость не дает правильно анализировать свой же код...

Продолжаю читать рабочий исходник...
Жаль что нет хорошей книги по этому камню, приходится все на ощупь искать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:32 
Старожил
Аватара пользователя

Зарегистрирован: 18 фев 2010, 14:42
Сообщения: 1153
Откуда: Лондон
было бы крайне здорово посмотреть, как иаровский проект настроен. а то мало ли там у тебя ничего не выставлено и он не знает куда и зачем заливать, какая у камня структура памяти, чем дебажить итд.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:35 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
с удовольствием покажу, если подскажете как...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:42 
Старожил

Зарегистрирован: 03 мар 2010, 14:10
Сообщения: 1514
Откуда: Беларусь, Минск
mitrofanzzz писал(а):
Есть у кого-нибудь догадки где я облажался?

Облажались в цикле и типе переменной
Код:
int main(void)
{
  volatile int cnt;
 
  while(1)
  {
    LED1_DIR |= LED1_MASK;
    LED2_DIR |= LED2_MASK;
    for (cnt = 10000;cnt;cnt--);
    LED1_DIR &= ~LED1_MASK;
    LED2_DIR &= ~LED2_MASK;
    for (cnt = 10000;cnt;cnt--);
  }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:44 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
но ведь после первого цикла камень должен был потушить леды... а про цикл я уже понял сижу чашкой кофе реабилитирую мозг


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:47 
Старожил

Зарегистрирован: 03 мар 2010, 14:10
Сообщения: 1514
Откуда: Беларусь, Минск
mitrofanzzz писал(а):
но ведь после первого цикла камень должен был потушить леды... а про цикл я уже понял сижу чашкой кофе реабилитирую мозг

А вы уверены что они именно горят а не моргают очень быстро?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 01 авг 2013, 18:52 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
не уверен, но теперь всего-то надо будет понять как работает системный таймер и заставить его работать на благо меня... с таймером я думаю еще пару-тройку дней мне сидеть... и самое обидное что я не понимаю как оно там внутри камня работает... и меня это огорчает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 05 авг 2013, 13:54 
Старожил

Зарегистрирован: 29 окт 2010, 23:55
Сообщения: 328
Что бы убедиться что действительно гаснет, достаточно вынести мигание из цикла (в том что включается уже убедились же).
Код:
LED1_DIR |= LED1_MASK;
for (cnt = 10000;cnt;cnt--);
LED1_DIR &= ~LED1_MASK;
while(1) { }

Меня смущает LED1_DIR/LED2_DIR. В моем понимание DIR - direction - направление. Вы уверены что пишите туда, куда надо?

_________________
http://angel5a.narod.ru - LPC/STM8/anything yet?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 05 авг 2013, 15:39 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Angel5a: завтря попробую и отчитаюсь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 13:36 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
почтеннейше прошу простить за проволочку... но вариант

LED1_DIR |= LED1_MASK;
for (cnt = 10000;cnt;cnt--);
LED1_DIR &= ~LED1_MASK;
while(1) { }

так же не отработал...

я испытываю стойкое ощущение что я не умею выключать светодиод, но демка его исправно выключает... хотя и там есть какие-то непонятные моменты...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 13:48 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
mitrofanzzz писал(а):
почтеннейше прошу простить за проволочку... но вариант

LED1_DIR |= LED1_MASK;
for (cnt = 10000;cnt;cnt--);
LED1_DIR &= ~LED1_MASK;
while(1) { }

так же не отработал...

я испытываю стойкое ощущение что я не умею выключать светодиод, но демка его исправно выключает... хотя и там есть какие-то непонятные моменты...

Может быть, светодиод зажигается и без Вашей программы (чисто за счёт настройки GPIO / схемы включения).
Поэтому проверьте поведение LED, если им управлять в обратном порядке:
Код:
LED1_DIR &= ~LED1_MASK;
for (cnt = 10000;cnt;cnt--);
LED1_DIR |= LED1_MASK;
while(1) { }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 14:01 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
нет если я комментирую строку применения маски на led1 он не загорается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 14:03 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Код:
#include "includes.h"

int main(void)
{
  int cnt = 0;
  LED1_DIR &= ~LED1_MASK;
  for (cnt = 10000;cnt;cnt--);
  //LED1_DIR |= LED1_MASK;
  while(1) { }
}


в таком виде диод тоже не горит...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:03 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2012, 17:24
Сообщения: 525
mitrofanzzz писал(а):
зажигает оба леда и больше ничего не происходит...
Есть у кого-нибудь догадки где я облажался?

Скорее всего, они моргают, но очень быстро.
Задержку 10000 даже при 1МГц тактовой не видно глазом, а при десятках МГц и подавно.
Ткните осцилом - все прояснится.

##
А, уже советовали, не заметил.
Ещё не заметил, где расписанs LEDx_MASK.
А также, что подразумевается под LEDx_DIR
Терзают смутные сомнения..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:19 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
mitrofanzzz писал(а):
Код:
#include "includes.h"

int main(void)
{
  int cnt = 0;
  LED1_DIR &= ~LED1_MASK;
  for (cnt = 10000;cnt;cnt--);
  //LED1_DIR |= LED1_MASK;
  while(1) { }
}


в таком виде диод тоже не горит...
А в таком виде ("|= LED1_MASK" закомментировано) он и не должен гореть!

Отладчиком посмотрите, как работает порт LED1_DIR в Вашем коде. Также под отладчиком попробуйте вручную этот порт попереключать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:22 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Я попытался из под симулятора посмотреть какие регистры как меняются в момент работы демо-кода но в ИАР отладчик утверждает что ничего не меняется совсем... видимо я совсем тупой... никак не осилю...теперь у меня еще и LPCXpresso IDE установлена но и в ней тоже не разобрался...прямо беда...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:28 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
mitrofanzzz писал(а):
Я попытался из под симулятора посмотреть какие регистры как меняются в момент работы демо-кода но в ИАР отладчик утверждает что ничего не меняется совсем... видимо я совсем тупой... никак не осилю...теперь у меня еще и LPCXpresso IDE установлена но и в ней тоже не разобрался...прямо беда...

Понятно :-( Срочно осваивайте отладчик. LPCXpresso IDE ничем не сложнее и не проще, чем CoIDE, IAR и другие.

А пока зайдём с другой стороны :-) Меня, как и MrYuran, терзают сомнения насчёт этого Вашего LED_DIR...
Это действительно нелогично (оправдывается название темы) управлять свечением светодиода через регистр DIR. Посмотрите в оригинальном (работающем) проекте: нет ли рядом с упоминанием про DIR аналогичных названий, но с "SET" и "CLR" вместо "DIR". Смотреть надо: в .h-файле где дефайнится ..._DIR; и в .c-файле где ..._DIR впервые используется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:33 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Я поискал в демо-коде но ничего не нашел, возможно я не туда смотрел...
Чтобы не быть голословным прикладываю архив демокода


Вложения:
Комментарий к файлу: Собственно демо-код
OLIMEX LPC-P1227 DEMO FOR IAR.7z [212.54 Кб]
Скачиваний: 264
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 16:37 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
mitrofanzzz писал(а):
Я поискал в демо-коде но ничего не нашел, возможно я не туда смотрел...
Чтобы не быть голословным прикладываю архив демокода

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 17:08 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
mitrofanzzz писал(а):
mitrofanzzz писал(а):
Я поискал в демо-коде но ничего не нашел, возможно я не туда смотрел...
Чтобы не быть голословным прикладываю архив демокода
Ну это не совсем тот код что был на камне при покупке, я его немного изменил на верху... тоесть все что касается конфигурирования и холодного старта в коде оригинальное... из моего лишь счетчик на экранчике и задержки между зажиганием и тушением ледов...

Код:
// LED1
#define LED1_MASK   (1UL<<5)
#define LED1_DIR    GPIO1DIR
#define LED1_OUT    GPIO1OUT_bit.P1_5    /* !!! */
// LED2
#define LED2_MASK   (1UL<<4)
#define LED2_DIR    GPIO1DIR
#define LED2_OUT    GPIO1OUT_bit.P1_4    /* !!! */

#define LED_OFF(led) PIN_HIGH(led)
#define LED_ON(led)  PIN_LOW(led)
Для выключения LED надо использовать макрос LED_OFF()! Для включения - соответственно LED_ON(). Так и сделано в проекте. DIR настраивается один раз, и больше его нет смысла трогать.

Если макросы не нравятся, подставьте вместо них их содержимое. Но это будет работа с регистром OUT, а не DIR!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 17:18 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
Изначально я так и думал...но... вот этот код
Код:
#include "includes.h"

int main(void)
{
  int cnt = 0;
  LED_ON (LED1_OUT);
  for (cnt = 10000;cnt;cnt--);
  LED_OFF (LED1_OUT);
  while(1) { }
}


не заработал, с этого и началась данная ветка форума :) ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: нелогичное начало
СообщениеДобавлено: 12 авг 2013, 17:20 
Заглядывает иногда

Зарегистрирован: 31 июл 2013, 18:59
Сообщения: 52
mitrofanzzz писал(а):
Изначально я так и думал...но... вот этот код
Код:
#include "includes.h"

int main(void)
{
  int cnt = 0;
  LED_ON (LED1_OUT);
  for (cnt = 10000;cnt;cnt--);
  LED_OFF (LED1_OUT);
  while(1) { }
}


не заработал, с этого и началась данная ветка форума :) ...


что опять же странно, воздействие на DIR зажигает леды...
а
Код:
LED_ON (LED1_OUT);
нет...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB