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

 
 
> ОДнократное преобразование в ATMEGA8
virtuality
сообщение May 18 2006, 14:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



Вот пример программы:
Код
char lcd_buffer[33];    
int temp=0;

#asm
    .equ __lcd_port=0x18
#endasm
#include<lcd.h>
#include<stdio.h>
#include <90s8535.h>
#include <delay.h>

#define ADC_VREF_TYPE 0x00

interrupt [ADC_INT] void adc_isr(void)
{
temp=ADCW;
delay_ms(20);
ADCSR|=0x40;
     lcd_clear();
     sprintf(lcd_buffer,"%imV",(temp*5-temp/10));
     lcd_puts(lcd_buffer);    
}

void main(void)
{


ADCSR=0x8E;
#asm("sei")
ADMUX=0;

ADCSR|=0x40;
lcd_init(16);
    while (1)
       {
       }
      
}



В принципе все понятно, но как мне сделать однократное преобразование по команде ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
virtuality
сообщение May 18 2006, 19:42
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



Сделал. Компилятор не ругается. Но в ходе отладки установлено, что программа виснет в цикле while ( ADCSRA & (1 << ADIF) );

Стал я дальше ковырять.
Ну вот это мне совсем не понятно...
Залез я в генератор кода в CodeVision. Сгенерировал.
Установил источником опорного напряжения AVCC.
В коде появилась такая строчка : #define ADC_VREF_TYPE 0x40

ОДнако ниже есть еще вот что: ADMUX=ADC_VREF_TYPE;

Что же это получается.... Я думал что ADMUX - это номер канала ADC0,
ADC1... То есть тот пин, куда подается измеряемое напряжение.

Так... надо подучить матчасть. Почитал я все что нашел на эту тему,
некоторые моменты остались непонятны. Если несложно проясните их для меня.


1. Для чего необходима установка частоты АЦП? Правильно ли я думаю, чтоэ
АЦП работает как отдельный блок, помещая результат в регистр, из которого мы читаем впоследсвии?
Или же АЦП спит, а когда мы ставим бит в ADSC он включается, конвертирует, возвращает результат?
ТОгда в этом случает непонятно для чего нужен этот параметр - частота.

2. Источник опорного напряжения. Что надо сделать? Подключить к плюсу AREF и AVCC? И что лучше выбрать потом - AREF или внутренний опорник?


P.S. ПРошу прощения, если кому мои вопросы покажутся глупыми.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:20
Рейтинг@Mail.ru


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