Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 02.08.2006, 21:00  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Странный ты человек..
Обьясняю ...
в CCS есть встроенная функция read_adc
(читай хелп)
с полным комплектом для работы с АЦП.
одна для всех пиков.

Но если тебя она по каким то причинам не устраивает
можешь написать свой драйвер ,
например на встроенном асме.
Или обращаясь к регистрам управления напрямую.
Это наверное и хотел изобразить Шпак.
Используя функцию (setup_adc и т.д.)в перемешку с
прямым доступам к регистрам,видно для
разнообразия.Никто не заставляет тебя писать
именно так как в книжке.Свобода выбора остается за тобой.

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



Работать с АЦП можно и не в прерываниях
Код:
long value;
int A;
void main() {
   setup_adc_ports(RA0_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   lcd_init();
   delay_ms(2000);
   init_user_chars();    // loads special characters into LCD CGRAM for bargraph
   set_adc_channel(0);
   delay_us(10);

   while(1)
   {
      value=read_adc(); //read the ADC
      delay_ms(20);     //pause so we don't blur the LCD display
      A=value/21;       //calculate the full scale for our bar
      lcd_putc('\f');   //clear the LCD
      printf(lcd_putc, "value = %lu \n",value); //Print top line with ADC value
      bargraph(A);      //print line 2 with the bargraph output.
   }
}
Реклама:
dosikus вне форума  
Непрочитано 02.08.2006, 21:03  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от zelanez
А я-то понял так, что аргумент (start_only) Только запускает преобразование, при этом результат не возвращается. Т.е. read_adc() ничего не даст.
Но проверить это ничто не мешает, чем и займусь.
Насчёт редактирования хедера - и что, я и это должен делать?! 8O
Всё-таки среду для асма делали более разумные люди.
Нет по умолчанию read_adc() == ADC_START_AND_READ
то есть старт и прочитать
Только старт --- read_adc(start_only).
dosikus вне форума  
Непрочитано 02.08.2006, 21:10  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Да и на счет "тяжкости" написания хедера.
Я считаю это наоборот гибкостью ,
к тому же это можно делать с помощью ВИЗАРДА.
Почти визуально.
dosikus вне форума  
Непрочитано 02.08.2006, 21:48  
zelanez
Вид на жительство
 
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
zelanez на пути к лучшему
По умолчанию

Сообщение от dosikus
Да и на счет "тяжкости" написания хедера.
Я считаю это наоборот гибкостью ,
к тому же это можно делать с помощью ВИЗАРДА.
Почти визуально.
Гибкость - это хорошо, но при этом теряется совместимость. Код нельзя будет передать, перенести или изменить без "гибко изменённого" хедера.

А зачем нужен аргумент (start_only)? Ведь смысл запуска преобразования в получении результата?
zelanez вне форума  
Непрочитано 02.08.2006, 22:07  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Я писал об этом выше , ну ладно повторю...

Это нужно именно тогда , когда ты работаешь с АЦП
в прерываниях.

void main()
{
setup_adc_ports(ALL_ANALOG); ‹-- настраиваем АЦП
setup_adc(ADC_CLOCK_DIV_32); ‹---//------
enable_interrupts(INT_AD); ‹-- разрешаем прерывания от АЦП
enable_interrupts(global);‹-- разрешаем глобальные
прерывания

set_adc_channel(0);‹-- канал 0 т.е. RA0
ADCON0|=4; ‹-- запускаем преобразование
while(1); ‹-- крутимся в цикле и ждем
} прерывания оно наступит когда закончится
преобразование , заодно автоматически сбросится

ADCON0.2 который мы установили --› ADCON0|=4;


Влетаем в прерывание :
#int_AD
AD_isr{)
n = read_adc() / 102;
читаем данные Ацп
output_D(~(2 ‹‹ n - 1));
и выводим их
ADCON0|=4; опять запускаем преобразование
}

Работать с АЦП в прерываниях хорошо когда
не хочешь "вручную" опрашивать готовность данных АЦП
(конец преобразования)
dosikus вне форума  
Непрочитано 03.08.2006, 20:38  
zelanez
Вид на жительство
 
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
zelanez на пути к лучшему
По умолчанию

Признателен за терпение и желание объяснить.
Прерывания я люблю. И всегда их использую.
Поэтому прочитав последнее сообщение, я ещё более утвердился в этом.
Но меня смутила фраза:

Цитата:
Обьясняю ...
в CCS есть встроенная функция read_adc
с полным комплектом для работы с АЦП.
....
Или обращаясь к регистрам управления напрямую.
Это наверное и хотел изобразить Шпак.
Используя функцию (setup_adc и т.д.)в перемешку с
прямым доступам к регистрам,видно для
разнообразия
Мне хотелось понять начёт разнообразия, поскольку из приведённой цитаты следует, что господин Шпак злоупотребил в перемешкой...И встроенная функция read_adc содержит в себе все настройки регистров ADC...
zelanez вне форума  
Непрочитано 03.08.2006, 21:34  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Почти так ... read_adc организует чтение АЦП.




Код:
Syntax:
 value = read_adc ([mode])

 
 
Parameters:
 mode is an optional parameter.  If used the values  may be: 

ADC_START_AND_READ (this is the default)

ADC_START_ONLY (starts the conversion and returns)

ADC_READ_ONLY (reads last conversion result)

 
 
Returns:
 Either a 8 or 16 bit int depending on #DEVICE ADC= directive.
А вот эти функции .. настройку АЦП

setup_adc_ports (value)

setup_adc (mode);

set_adc_channel (chan)
dosikus вне форума  
Непрочитано 03.08.2006, 21:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Хотя можешь по извращаться, написав свой драйвер
на асме ....
Я не обвиняю ШПАКА в чем либо , он показывает
возможности С , более мощные чем у асма.
dosikus вне форума  
Непрочитано 16.10.2009, 19:26  
avr32
Прохожий
 
Регистрация: 27.10.2006
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
avr32 на пути к лучшему
По умолчанию Re: CCS PICC

А у кого нибудь получилось настроить цвета/шрифты под себя с сохранением настроек? Что только не пробывал , при следующем запуске , по умолчанию всё выставляется
avr32 вне форума  
Непрочитано 16.10.2009, 20:13  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: CCS PICC

Сообщение от avr32 Посмотреть сообщение
А у кого нибудь получилось настроить цвета/шрифты под себя с сохранением настроек? Что только не пробывал , при следующем запуске , по умолчанию всё выставляется
Я раньше настраивал вручную цвета,а в новой версии просто стиль выбирал и все,ничего никогда не слетало.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CCS PICC+ TERMINAL Gladkih Микроконтроллеры, АЦП, память и т.д 0 24.07.2009 23:30
CCS PICC 4.088 dosikus Микроконтроллеры, АЦП, память и т.д 12 19.06.2009 21:23
CCS PICC 4.037 fmssp Proteus, KiCAD и другие ECAD 10 18.05.2007 20:25
CCS-PICC и EEPROM double_dash Микроконтроллеры, АЦП, память и т.д 1 22.04.2007 01:57
о CCS-PICC double_dash Proteus, KiCAD и другие ECAD 1 02.03.2007 23:19


Часовой пояс GMT +4, время: 08:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot