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

 
 
> at91sam7s256 IAR помогите помигать светодиодом
dexter_khm
сообщение Aug 29 2011, 07:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Прошу помощи !!!!
Есть некий прибор с которым мне сейчас приходится разбираться. Собран он на at91sam7s256 на выходе РА24 зацеплен тестовый светодиод. До этого с АРМами не работал, занимался AVR под CodeVision. Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
kovigor
сообщение Aug 29 2011, 08:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



smile3046.gif
Цитата(dexter_khm @ Aug 29 2011, 10:58) *
Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))

IAR слишком тяжел для старта. Советую начинать с Keil. С ним и примеры проектов поставляются, и вашего - в том числе ...
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Aug 29 2011, 08:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



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



Сообщение отредактировал dexter_khm - Aug 29 2011, 08:29
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 29 2011, 08:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



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

С IAR'ом также поставляются примеры. Плюс к этому с ним же поставляются различные "TUTORIALs" и "Getting Started ...", в которых подробно и по шагам разбирается, как создать новый проект. Очень советую начать с них ...
Go to the top of the page
 
+Quote Post
kumle
сообщение Aug 30 2011, 11:55
Сообщение #5


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

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



На мой взгляд IAR всетаки попроще.
А книга Редькина не понравилась
Вот посмотри мой стартовый проектик, может че прояснится.
Прикрепленный файл  copy_started_sram_flash_wiggler.7z ( 540.64 килобайт ) Кол-во скачиваний: 160


Сообщение отредактировал kumle - Aug 30 2011, 12:08
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 30 2011, 12:44
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



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
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Aug 30 2011, 14:03
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Всем спасибо за примеры мигания rolleyes.gif . Вот теперь бы мне еще инициализацию АЦП на первом канале. Нашел вот такой пример
http://www.uschema.com/face/2010/11/at91sa...b0%d1%86%d0%bf/

но только чет не работает он уменя из АЦП читается одно и тоже значение. Он конечно для GCC сделан но я все пересмотрел вроде нормально IAR не ругается но значение всевремя одно и тоже

Сообщение отредактировал dexter_khm - Aug 30 2011, 14:11
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 30 2011, 14:39
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Вы в папку с примерами заглядывали вообще?
Там первый же проект - работа с АЦП
Когда разбирался именно оттуда брал работу с АЦП - всё завелось с первого раза
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Aug 30 2011, 14:54
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Я дико извиняюсь вот только что посмотрел в папку examples\arm там только работа семисегментного индикатора может я не там смотрю конечно но больше ничего нет скинте пожалуйста пример с АЦП

Сообщение отредактировал dexter_khm - Aug 30 2011, 14:54
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 31 2011, 06:48
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Все примеры из папки для sam7s
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Aug 31 2011, 07:04
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Цитата(mempfis_ @ Aug 31 2011, 09:48) *
Все примеры из папки для sam7s

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

Я вчера понял почему у меня нет примеров скачал себе с иара Демо версию Кик старт там примеров реально много
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Aug 31 2011, 08:01
Сообщение #12


Знающий
****

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



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


насколько я помню примеры лежат в examples\atmel
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Aug 31 2011, 12:10
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Да спасибо я нашел уже примеры!!!
Go to the top of the page
 
+Quote Post
dexter_khm
сообщение Sep 2 2011, 13:54
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



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

Глянте пожалуйста что не так????
Прикрепленные файлы
Прикрепленный файл  basic_adc_project.rar ( 166.55 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Sep 4 2011, 11:14
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(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(); //тут пауза чтобы отделить один процесс моргания от другого

}

}


Сообщение отредактировал mempfis_ - Sep 4 2011, 11:15
Go to the top of the page
 
+Quote Post

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

 


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


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