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

 
 
> 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
 
Start new topic
Ответов
dexter_khm
сообщение Sep 2 2011, 13:54
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #3


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

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- dexter_khm   at91sam7s256 IAR помогите помигать светодиодом   Aug 29 2011, 07:58
- - kovigor   Цитата(dexter_khm @ Aug 29 2011, 10:58) П...   Aug 29 2011, 08:14
- - dexter_khm   Да я читал про Кейл но вся проблема в том что прое...   Aug 29 2011, 08:26
|- - kovigor   Цитата(dexter_khm @ Aug 29 2011, 11:26) Д...   Aug 29 2011, 08:29
- - kumle   На мой взгляд IAR всетаки попроще. А книга Редькин...   Aug 30 2011, 11:55
- - mempfis_   Цитата(dexter_khm @ Aug 29 2011, 10:58) П...   Aug 30 2011, 12:44
- - dexter_khm   Всем спасибо за примеры мигания . Вот теперь бы м...   Aug 30 2011, 14:03
|- - mempfis_   Вы в папку с примерами заглядывали вообще? Там пер...   Aug 30 2011, 14:39
- - dexter_khm   Я дико извиняюсь вот только что посмотрел в папку ...   Aug 30 2011, 14:54
|- - mempfis_   Все примеры из папки для sam7s   Aug 31 2011, 06:48
||- - dexter_khm   Цитата(mempfis_ @ Aug 31 2011, 09:48) Все...   Aug 31 2011, 07:04
|- - Zelepuk   Цитата(dexter_khm @ Aug 30 2011, 18:54) Я...   Aug 31 2011, 08:01
- - dexter_khm   Да спасибо я нашел уже примеры!!!   Aug 31 2011, 12:10
- - dexter_khm   Mempfis большое спасибо!!! добавил в с...   Sep 5 2011, 06:19
- - dexter_khm   Mempfis еще раз прошу у вас помощи. Совместил ваш...   Sep 5 2011, 09:12
|- - mempfis_   Посмотрите внимательно на настройки первого проект...   Sep 5 2011, 11:22
- - dexter_khm   Вот на этой строчке всегда застряет. Блин не знаю ...   Sep 5 2011, 14:51


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:40
Рейтинг@Mail.ru


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