Перейти к содержанию
    

at91sam7s256 IAR помогите помигать светодиодом

Прошу помощи !!!!

Есть некий прибор с которым мне сейчас приходится разбираться. Собран он на at91sam7s256 на выходе РА24 зацеплен тестовый светодиод. До этого с АРМами не работал, занимался AVR под CodeVision. Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:smile3046:

Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))

IAR слишком тяжел для старта. Советую начинать с Keil. С ним и примеры проектов поставляются, и вашего - в том числе ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

Изменено пользователем dexter_khm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

С IAR'ом также поставляются примеры. Плюс к этому с ним же поставляются различные "TUTORIALs" и "Getting Started ...", в которых подробно и по шагам разбирается, как создать новый проект. Очень советую начать с них ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На мой взгляд IAR всетаки попроще.

А книга Редькина не понравилась

Вот посмотри мой стартовый проектик, может че прояснится.

copy_started_sram_flash_wiggler.7z

Изменено пользователем kumle

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:rolleyes:

Прошу помощи !!!!

Есть некий прибор с которым мне сейчас приходится разбираться. Собран он на at91sam7s256 на выходе РА24 зацеплен тестовый светодиод. До этого с АРМами не работал, занимался AVR под CodeVision. Проблема в том что не могу найти нормального Старт-ап проекта под IAR, есть книга Редькина но это полный мрак. Люди не оставьте в тупике "Поможите чем сможите" )))))

 

Не пробовали создать пустой проект а иар под Ваш процессор, добавить к нему файл main.c в котором определить функцию void main(void) с пустым циклом внутри. Добавить стартап из примеров, в линкере подключить icf-файл для 7s256 а дальше по ошибкам поискать файлы board_lowlevel.c board_memories.c чтобы добавить их к проекту и т.д. ......

На сайте полно примеров для иар для моргания светодиодом.

Выкладываю пример моргания светодиодом который создал давно когда начал разбираться с 7s64

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за примеры мигания :rolleyes: . Вот теперь бы мне еще инициализацию АЦП на первом канале. Нашел вот такой пример

http://www.uschema.com/face/2010/11/at91sa...b0%d1%86%d0%bf/

 

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

Изменено пользователем dexter_khm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы в папку с примерами заглядывали вообще?

Там первый же проект - работа с АЦП

Когда разбирался именно оттуда брал работу с АЦП - всё завелось с первого раза

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем dexter_khm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все примеры из папки для sam7s

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

 

Я вчера понял почему у меня нет примеров скачал себе с иара Демо версию Кик старт там примеров реально много

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

насколько я помню примеры лежат в examples\atmel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

basic_adc_project.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем модифицировал я пример "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_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...