|
ATMega16 и АЦП, настройка |
|
|
|
Nov 6 2007, 20:15
|
Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020

|
Имеется МК Mega 163, на вход ADC0 (PA0) которого подается изменяющееся напряжение 0...5 В; AVcc и AREF соединен с Vcc, AGND соединен с GND. В CodeVisionAVR пишу такой код: Код unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | 0xff; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSR|=0x40; // Wait for the AD conversion to complete while ((ADCSR & 0x10)==0); ADCSR|=0x10; return ADCW; }
//настройки портов
void main(void) { int a = 0;
while(1) { a = (int)read_adc; PORTC.6 = 1; delay_ms(a); PORTC = 0x00; } } в результате светодион на шестом выводе порта С постоянно мигает с частотой примерно 0,5с. Наверное, снимается показание с внутреннего источника опорного напряжения, которое составляет примерно половину 5В. Что неправильно сделано? Как сделать, чтобы частота мигания светодиода менялась в зависимости от подаваемого напряжения на ADC0?
|
|
|
|
|
 |
Ответов
|
Nov 23 2007, 04:45
|
Местный
  
Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391

|
Цитата while (1) { a = read_adc(0); PORTC.6 = 1; delay_ms(a); PORTC = 0x00; delay_ms(a); }; Почитал посты, тут как я понял мало кто использует CV, добавлю свою каплю, так как в CV работал около 1 года. Так вот зацитированная выше мною часть ИМХО должна выглядеть так: Цитата while (1) { read_adc(0); //Запуск преобразования АЦП a = ADCW; //Считывание преобразованного значения PORTC.6 = 1; //Установили вывод delay_ms(a); //Пауза PORTC.6 = 0; //Сбросили вывод delay_ms(a); //Пауза }; Если бы удосужились почитать Help на CV, то поняли бы что строка: Цитата a = read_adc(0); Представляет собой - чушь Правильность конфигурирования выводов и АЦП не проверяю, Wizard для этого есть
Сообщение отредактировал mrKirill - Nov 23 2007, 04:48
|
|
|
|
|
Nov 23 2007, 10:25
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(mrKirill @ Nov 23 2007, 06:45)  Если бы удосужились почитать Help на CV, то поняли бы что строка: Представляет собой - чушь А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV. Цитата(mrKirill @ Nov 23 2007, 06:45)  Правильность конфигурирования выводов и АЦП не проверяю, Wizard для этого есть "Программирование мышкой"? Ну-ну. Цитата(mr_onnik @ Nov 22 2007, 23:28)  Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы  Ее у вас просто нет  Возьмите описание АЦП, раздел регистры, выпишите все три описанных там регистра, далее читая описание на каждый из битов регистра решите, какое значение вам нужно записать в этот бит, чтобы АЦП сделало то, что вы хотите. И поставьте запись этих битов в эти регистры в функцию инициализации перед разрешением прерываний.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 23 2007, 11:11
|
Местный
  
Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391

|
Цитата(Сергей Борщ @ Nov 23 2007, 16:25)  А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV. Если бы удосужились более внимательно прочитать пост #17, который я цитировал, то наверное заметили бы, что там внизу текста приведена фраза "Программа CodeVisionAVR.", вот и привел правильный кусок программы для CV. Цитата "Программирование мышкой"? Ну-ну. Насколько я понял в деле программирования и конфигурирования он не силен, потому пусть тыкается в Визарде, потом может научится все правильно конфигурировать Лично сам пишу работаю в AVR Studio (для asm), CodeVision и IAR (для С), потому "программирование мышкой" - не ко мне. Офф-топ закончен.
|
|
|
|
Сообщений в этой теме
mr_onnik ATMega16 и АЦП Nov 6 2007, 20:15 mdmitry Цитата(mr_onnik @ Nov 6 2007, 23:15) Имее... Nov 6 2007, 21:49 oran-be А это - так задумано?
Код
ADMUX=adc_input | 0xff;... Nov 7 2007, 06:50 mr_onnik Цитата(oran-be @ Nov 7 2007, 08:50) ... Nov 7 2007, 08:30 SergeiCh Цитата(mr_onnik @ Nov 7 2007, 03:15) a = ... Nov 7 2007, 09:03 IgorKossak Цитата(SergeiCh @ Nov 7 2007, 11:03) (int... Nov 7 2007, 09:33  mr_onnik Цитата(IgorKossak @ Nov 7 2007, 11:33) Ну... Nov 7 2007, 10:09   oran-be Цитата(mr_onnik @ Nov 7 2007, 14:09) Испр... Nov 7 2007, 10:36    mr_onnik Цитата(oran-be @ Nov 7 2007, 12:36) ... Nov 7 2007, 10:55     SergeiCh Цитата(mr_onnik @ Nov 7 2007, 17:55) Подр... Nov 7 2007, 11:44     oran-be Цитата(mr_onnik @ Nov 7 2007, 14:55) Заса... Nov 7 2007, 13:01   SergeiCh Цитата(mr_onnik @ Nov 7 2007, 17:09) Испр... Nov 7 2007, 10:48  SergeiCh Цитата(IgorKossak @ Nov 7 2007, 16:33) Та... Nov 7 2007, 10:19 oran-be Да - кто первый заметит слона? Nov 7 2007, 10:05 GDI Вот что хорошо в CV, так это мастер нового проекта... Nov 7 2007, 12:22 singlskv Цитата(mr_onnik @ Nov 6 2007, 23:15) ....... Nov 7 2007, 19:41 mr_onnik Цитата(singlskv @ Nov 7 2007, 21:41) Авто... Nov 8 2007, 21:22  singlskv Цитата(mr_onnik @ Nov 9 2007, 00:22) Код/... Nov 8 2007, 23:53   mr_onnik Цитата(singlskv @ Nov 9 2007, 01:53) А гд... Nov 22 2007, 21:28  SergeiCh Цитата(mr_onnik @ Nov 9 2007, 04:22) Код#... Nov 9 2007, 04:43 sergeeff Jr. PWM организуй при помощи таймера... Nov 8 2007, 22:15   Сергей Борщ Цитата(mrKirill @ Nov 23 2007, 13:11) Есл... Nov 23 2007, 11:26 defunct Код#define ADC_CONTROL (1 << ADEN... Nov 23 2007, 13:16 WHALE defunct,в CV это не пройдет.Почему-то у него нет х... Nov 23 2007, 15:14 defunct Цитата(WHALE @ Nov 23 2007, 18:14) в CV э... Nov 23 2007, 16:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|