Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: at91sam7s256 IAR помогите помигать светодиодом
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
dexter_khm
Прошу помощи !!!!
Есть некий прибор с которым мне сейчас приходится разбираться. Собран он на at91sam7s256 на выходе РА24 зацеплен тестовый светодиод. До этого с АРМами не работал, занимался AVR под CodeVision. Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))
kovigor
smile3046.gif
Цитата(dexter_khm @ Aug 29 2011, 10:58) *
Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))

IAR слишком тяжел для старта. Советую начинать с Keil. С ним и примеры проектов поставляются, и вашего - в том числе ...
dexter_khm
Да я читал про Кейл но вся проблема в том что проект воплощен как в железе атак же на него в iar были подготовлены библиотеки и функции. Моя задача сейчас дописать пару функций. Но вот уже как неделя прошла а я немогу его заставить "шевелить" ногой.

kovigor
Цитата(dexter_khm @ Aug 29 2011, 11:26) *
Да я читал про Кейл но вся проблема в том что проект воплощен как в железе атак же на него в iar были подготовлены библиотеки и функции. Моя задача сейчас дописать пару функций. Но вот уже как неделя прошла а я немогу его засталить "шевелить" ногой.

С IAR'ом также поставляются примеры. Плюс к этому с ним же поставляются различные "TUTORIALs" и "Getting Started ...", в которых подробно и по шагам разбирается, как создать новый проект. Очень советую начать с них ...
kumle
На мой взгляд IAR всетаки попроще.
А книга Редькина не понравилась
Вот посмотри мой стартовый проектик, может че прояснится.
Нажмите для просмотра прикрепленного файла
mempfis_
rolleyes.gif
Цитата(dexter_khm @ Aug 29 2011, 10:58) *
Прошу помощи !!!!
Есть некий прибор с которым мне сейчас приходится разбираться. Собран он на at91sam7s256 на выходе РА24 зацеплен тестовый светодиод. До этого с АРМами не работал, занимался AVR под CodeVision. Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))


Не пробовали создать пустой проект а иар под Ваш процессор, добавить к нему файл main.c в котором определить функцию void main(void) с пустым циклом внутри. Добавить стартап из примеров, в линкере подключить icf-файл для 7s256 а дальше по ошибкам поискать файлы board_lowlevel.c board_memories.c чтобы добавить их к проекту и т.д. ......
На сайте полно примеров для иар для моргания светодиодом.
Выкладываю пример моргания светодиодом который создал давно когда начал разбираться с 7s64
dexter_khm
Всем спасибо за примеры мигания rolleyes.gif . Вот теперь бы мне еще инициализацию АЦП на первом канале. Нашел вот такой пример
http://www.uschema.com/face/2010/11/at91sa...b0%d1%86%d0%bf/

но только чет не работает он уменя из АЦП читается одно и тоже значение. Он конечно для GCC сделан но я все пересмотрел вроде нормально IAR не ругается но значение всевремя одно и тоже
mempfis_
Вы в папку с примерами заглядывали вообще?
Там первый же проект - работа с АЦП
Когда разбирался именно оттуда брал работу с АЦП - всё завелось с первого раза
dexter_khm
Я дико извиняюсь вот только что посмотрел в папку examples\arm там только работа семисегментного индикатора может я не там смотрю конечно но больше ничего нет скинте пожалуйста пример с АЦП
mempfis_
Все примеры из папки для sam7s
dexter_khm
Цитата(mempfis_ @ Aug 31 2011, 09:48) *
Все примеры из папки для sam7s

да большое спасибо за пример.

Я вчера понял почему у меня нет примеров скачал себе с иара Демо версию Кик старт там примеров реально много
Zelepuk
Цитата(dexter_khm @ Aug 30 2011, 18:54) *
Я дико извиняюсь вот только что посмотрел в папку examples\arm там только работа семисегментного индикатора может я не там смотрю конечно но больше ничего нет скинте пожалуйста пример с АЦП


насколько я помню примеры лежат в examples\atmel
dexter_khm
Да спасибо я нашел уже примеры!!!
dexter_khm
Вобщем модифицировал я пример "basic-adc-project" хотел сделать на первом канале АЦП срабатывание 5 диапазонов. Тоесть если значение в первом диапазоне то один раз мигнуть светодиодом, если во втором то два раза мигнуть. Вобщем все срабатывает только в итоге светодиод мигает вместо одного два раза, вместо 3 - 6 , вместо 5 - 10. Даже не знаю как так может быть

Глянте пожалуйста что не так????
mempfis_
Цитата(dexter_khm @ Sep 2 2011, 16:54) *
Вобщем модифицировал я пример "basic-adc-project" хотел сделать на первом канале АЦП срабатывание 5 диапазонов. Тоесть если значение в первом диапазоне то один раз мигнуть светодиодом, если во втором то два раза мигнуть. Вобщем все срабатывает только в итоге светодиод мигает вместо одного два раза, вместо 3 - 6 , вместо 5 - 10. Даже не знаю как так может быть

Глянте пожалуйста что не так????


Посмотрел на Ваш код.
В основном цикле программы у Вас идёт запуск преобразования, считывание, разбивка на диапазоны и потом моргание.
Первое что бросилось в глаза - после цикла while (l<b){} нет никакой паузы которая позволила-бы визуально отделить один процесс считывания показаний ацп с морганием от другого.
Второе - ИМХО просто ужасный код взятый из примера.

Когда сам разбирался с ацп в пример конечно заглядывал, но код доводил до более или менее вменяемого вида.
Получилось вот что:

Код
#ifndef adc_H
#define adc_H

#define ADCCLK 100000
#define ADCPRESCAL ((BOARD_MCK/(ADCCLK*2))-1)

#define VREF 3060 //mV
#define DELITEL_ADC 17 //(8.5*2) //коэф деления входного делителя
#define DELITEL_PSV 26 //(13*2) //коэф деления входного делителя


#endif //adc_H


Код
/*****************************************************/
//запуск преобразования АЦП
__thumb void ADCStartConvertion(void)
{
  AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;
}
/*****************************************************/

/*****************************************************/
//конфигурирование АЦП
__thumb void ConfigureADC(void)
{
  //запуск software, 10 бит, sleep mode,  прескалер на 100 кГц
  AT91C_BASE_ADC->ADC_MR = (ADCPRESCAL<<6)|AT91C_ADC_SLEEP_MODE;
  
  //разрешаем каналы 4,5,6,7
  AT91C_BASE_ADC->ADC_CHER = AT91C_ADC_CH7|AT91C_ADC_CH6|AT91C_ADC_CH5|AT91C_ADC_CH4;
  
  //запускаем первое преобразование
  AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;
}
/*****************************************************/

/*****************************************************/
//чтение канала АЦП
__thumb unsigned int ADCRead(unsigned int ch)
{
  unsigned int res=0;
  unsigned int delitel;
  switch(ch)
  {
    case 0: res = AT91C_BASE_ADC->ADC_CDR6;
            delitel = DELITEL_ADC;
    break;
    case 1: res = AT91C_BASE_ADC->ADC_CDR5;
            delitel = DELITEL_ADC;
    break;
    case 2: res = AT91C_BASE_ADC->ADC_CDR4;
            delitel = DELITEL_ADC;
    break;
    case 3: res = AT91C_BASE_ADC->ADC_CDR7;
            delitel = DELITEL_PSV;
    break;
  }
  
  //переводим показания ацп в мВ
  return (res*VREF*delitel)>>11;
}

/*****************************************************/

Подключите 2 файла к проекту.
Напишите в код снизу и больше ничего не надо!!!

Код
void main(void)
{

ConfigureADC();

unsigned int adc_res;
while(1)
{

ADCStartConvertion();

pause(); //тут подождать немного на преобразование

adc_res = ADCRead(0);

//тут манипуляции с морганиями

pause(); //тут пауза чтобы отделить один процесс моргания от другого

}

}
dexter_khm
Mempfis большое спасибо!!!
добавил в свой код указанные задержки и он заработал как надо.


dexter_khm
Mempfis еще раз прошу у вас помощи.

Совместил вашу инициализацию и свое мигание светодиодом. Запустил в дебаггере застряет на первых адресах и не идет дальше. Подозреваю что чтото не выставил правильно в настройках проэкта. Посмотрите пожалуйста проект прикрепляю
mempfis_
Посмотрите внимательно на настройки первого проекта что я Вам скидывал.
У Вас куча всего ненастроено.
Я добавил стартап в проект, для линкера указал корректный icf-файл (в настройках закладка линкер необходимо указать путь к файлу flash.icf, ищите в папке board), переопределил точку входа с дефолтной на resetHandler, добавил пару необходимых файлов к проекту.

Попробуйте прошить процессор без дебаггера и посмотреть как оно работает. У меня в симуляторе вроде всё по плану.
dexter_khm
Вот на этой строчке всегда застряет. Блин не знаю даже что не так?

П.С. Заливаю из IAR через JTAG J-Link.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.