Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.08.2006, 21:00
|
#21
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Странный ты человек..
Обьясняю ...
в 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.
}
} |
|
|
|
|
02.08.2006, 21:03
|
#22
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Сообщение от zelanez
|
А я-то понял так, что аргумент (start_only) Только запускает преобразование, при этом результат не возвращается. Т.е. read_adc() ничего не даст.
Но проверить это ничто не мешает, чем и займусь.
Насчёт редактирования хедера - и что, я и это должен делать?! 8O
Всё-таки среду для асма делали более разумные люди.
|
Нет по умолчанию read_adc() == ADC_START_AND_READ
то есть старт и прочитать
Только старт --- read_adc(start_only).
|
|
|
|
02.08.2006, 21:10
|
#23
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Да и на счет "тяжкости" написания хедера.
Я считаю это наоборот гибкостью ,
к тому же это можно делать с помощью ВИЗАРДА.
Почти визуально.
|
|
|
|
02.08.2006, 21:48
|
#24
|
Вид на жительство
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Сообщение от dosikus
|
Да и на счет "тяжкости" написания хедера.
Я считаю это наоборот гибкостью ,
к тому же это можно делать с помощью ВИЗАРДА.
Почти визуально.
|
Гибкость - это хорошо, но при этом теряется совместимость. Код нельзя будет передать, перенести или изменить без "гибко изменённого" хедера.
А зачем нужен аргумент (start_only)? Ведь смысл запуска преобразования в получении результата?
|
|
|
|
02.08.2006, 22:07
|
#25
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Я писал об этом выше , ну ладно повторю...
Это нужно именно тогда , когда ты работаешь с АЦП
в прерываниях.
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; опять запускаем преобразование
}
Работать с АЦП в прерываниях хорошо когда
не хочешь "вручную" опрашивать готовность данных АЦП
(конец преобразования)
|
|
|
|
03.08.2006, 20:38
|
#26
|
Вид на жительство
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Признателен за терпение и желание объяснить.
Прерывания я люблю. И всегда их использую.
Поэтому прочитав последнее сообщение, я ещё более утвердился в этом.
Но меня смутила фраза:
Цитата:
|
Обьясняю ...
в CCS есть встроенная функция read_adc
с полным комплектом для работы с АЦП.
....
Или обращаясь к регистрам управления напрямую.
Это наверное и хотел изобразить Шпак.
Используя функцию (setup_adc и т.д.)в перемешку с
прямым доступам к регистрам,видно для
разнообразия
|
Мне хотелось понять начёт разнообразия, поскольку из приведённой цитаты следует, что господин Шпак злоупотребил в перемешкой...И встроенная функция read_adc содержит в себе все настройки регистров ADC...
|
|
|
|
03.08.2006, 21:34
|
#27
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Почти так ... 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)
|
|
|
|
03.08.2006, 21:39
|
#28
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Хотя можешь по извращаться, написав свой драйвер
на асме .... ![Валяюсь от смеха](images/smilies/icon_biggrin.gif)
Я не обвиняю ШПАКА в чем либо , он показывает
возможности С , более мощные чем у асма.
|
|
|
|
16.10.2009, 19:26
|
#29
|
Прохожий
Регистрация: 27.10.2006
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: CCS PICC
А у кого нибудь получилось настроить цвета/шрифты под себя с сохранением настроек? Что только не пробывал , при следующем запуске , по умолчанию всё выставляется
|
|
|
|
16.10.2009, 20:13
|
#30
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: CCS PICC
Сообщение от avr32
|
А у кого нибудь получилось настроить цвета/шрифты под себя с сохранением настроек? Что только не пробывал , при следующем запуске , по умолчанию всё выставляется
|
Я раньше настраивал вручную цвета,а в новой версии просто стиль выбирал и все,ничего никогда не слетало.
__________________
Глаза боятся,а руки делают.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 06:29.
|
|