Опорное напряжение для АЦП на Тини13
- zhu4er
- Вымогатель припоя
- Сообщения: 544
- Зарегистрирован: Пт июн 04, 2010 17:40:13
- Откуда: Непокорный город-герой Севастополь
Опорное напряжение для АЦП на Тини13
Ребятки, с англицким я дружу не очень. Залез в даташит Тини13 по поиску опорного напряжения для АЦП и вот что мне выдал переводчик на эту фразу:
Internal reference voltages of nominally 1.1V or VCC are provided On-chip.
Внутренние опорные напряжения номинально 1.1V или VCC обеспечены На микросхеме.
Это как понимать? Или у тиньки13 только внутреннее опорное напряжение 1.1В или опорное может быть и 1.1В и Vcc, тобишь пять вольт. Разъясните пожалуста!
И второй вопрос, если только внутр опорное равно 1.1В, то при восьмибитном преобразовании 1.1/256=0,004296875 Вольт правильно?
Не судите строго, я только начал изучать АЦП, вот и решил начать с простого. Кстати вот собранная схема, осталось только запрограммировать: Программить буду в CVAVR
А вот что мне выдал визард подскажите от куда (какая переменная) брать значение АЦП для дальнейшего сравнения с заданным значением в мВ
Допустим мне надо включить лампу при ЭДС(снимаемое с фотодиода) равном 100мВ. То есть значение АЦП будет 0х17(примерно) откуда выгрызть это значение?
Надеюсь на Ваше понимание.
Internal reference voltages of nominally 1.1V or VCC are provided On-chip.
Внутренние опорные напряжения номинально 1.1V или VCC обеспечены На микросхеме.
Это как понимать? Или у тиньки13 только внутреннее опорное напряжение 1.1В или опорное может быть и 1.1В и Vcc, тобишь пять вольт. Разъясните пожалуста!
И второй вопрос, если только внутр опорное равно 1.1В, то при восьмибитном преобразовании 1.1/256=0,004296875 Вольт правильно?
Не судите строго, я только начал изучать АЦП, вот и решил начать с простого. Кстати вот собранная схема, осталось только запрограммировать: Программить буду в CVAVR
А вот что мне выдал визард подскажите от куда (какая переменная) брать значение АЦП для дальнейшего сравнения с заданным значением в мВ
Допустим мне надо включить лампу при ЭДС(снимаемое с фотодиода) равном 100мВ. То есть значение АЦП будет 0х17(примерно) откуда выгрызть это значение?
Надеюсь на Ваше понимание.
Даже у стен есть уши...
- Реклама
Re: Опорное напряжение для АЦП на Тини13
Это знач, что у тинки может быть опороное для АЦП или внутренний откалиброванный источник 1.1 Вольт, или опроник с VCC от 2 до 5 вольт. Разрешение вы правильно считаете. а в исходнике функция unsigned char read_adc(unsigned char adc_input), вернет вам значение АЦП. вызывать таким образом adc_result = read_adc(номер канала АЦП);
- zhu4er
- Вымогатель припоя
- Сообщения: 544
- Зарегистрирован: Пт июн 04, 2010 17:40:13
- Откуда: Непокорный город-герой Севастополь
Re: Опорное напряжение для АЦП на Тини13
Ага, теперь понял. И последний непонятный мне пока вопрос: каким образом настроить внутренний источник опорного напряжения 1.1В или визард CVAVR сам по умолчанию устанавливает его?leowka писал(а):Это знач, что у тинки может быть опороное для АЦП или внутренний откалиброванный источник 1.1 Вольт, или опроник с VCC от 2 до 5 вольт. Разрешение вы правильно считаете. а в исходнике функция unsigned char read_adc(unsigned char adc_input), вернет вам значение АЦП. вызывать таким образом adc_result = read_adc(номер канала АЦП);
Даже у стен есть уши...
- Fasterpast
- Мучитель микросхем
- Сообщения: 493
- Зарегистрирован: Ср фев 14, 2007 12:07:58
- Откуда: Москва
- Контактная информация:
Re: Опорное напряжение для АЦП на Тини13
Насколько я понимаю, чтобы включить внутреннее опорное напряжение 1.1В, нужно в кодвизарде поставить галку на "bandgap reference"
- zhu4er
- Вымогатель припоя
- Сообщения: 544
- Зарегистрирован: Пт июн 04, 2010 17:40:13
- Откуда: Непокорный город-герой Севастополь
Re: Опорное напряжение для АЦП на Тини13
Да точно, я уже в книжке про Кодвижн посмотрел. Спасибо всем. Пошёл программить...Fasterpast писал(а):Насколько я понимаю, чтобы включить внутреннее опорное напряжение 1.1В, нужно в кодвизарде поставить галку на "bandgap reference"
Даже у стен есть уши...
- Реклама
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Опорное напряжение для АЦП на Тини13
Ребята, а что происходит тут ?
вот ссылка http://my-avr.at.ua/publ/1-1-0-15
Код: Выделить всё
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{
static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}Re: Опорное напряжение для АЦП на Тини13
Похоже, это просто "попытка" написать обучалку вырвав кусок кода из другой программы...Symbiosis писал(а):Ребята, а что происходит тут ?
Код: Выделить всё
adc_data[input_index]=ADCH;
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) input_index=0;Но:
Код: Выделить всё
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0 PS:Извиняюсь, невнимательно посмотрел...
Код: Выделить всё
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;— Не говорите мне что делать и я не скажу куда Вам идти...
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Опорное напряжение для АЦП на Тини13
Ну а если не модифицировать часть кода, сгенерированную CodeVision, разве не будет работать пример по той ссылке? Подрихтовать переменные... Не пойму зачем автор настаивает на модификации кода и какой смысл в ней
Re: Опорное напряжение для АЦП на Тини13
По ссылке нету кода сгенерированного CodeVision, поэтому непонятно что менял автор.
А так вроде все должно работать...
А так вроде все должно работать...
— Не говорите мне что делать и я не скажу куда Вам идти...
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Опорное напряжение для АЦП на Тини13
Сейчас сгенерирую )
...
...
Код: Выделить всё
#define ADC_VREF_TYPE 0x20
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}Re: Опорное напряжение для АЦП на Тини13
Смысл преобразований:
В автосгенерированном коде в функции read_adc
запускается преобразование, ожидается окончание,и только потом возвращается результат. Т.е основной цикл ждет получения результата.
Автор примера сделал измерения "фоновыми" - одновременно показывая как работать с АЦП и прерываниями.
В прерывании по окончании преобразований измеренное значение сохраняется в глобальной переменной и запускается новый цикл преобразования.
А в основном цикле программы достаточно просто на основании данных в глобальной переменной
зажигать светодиоды. Т.е основной цикл может во время преобразования АЦП заняться чем-то другим.
В автосгенерированном коде в функции read_adc
запускается преобразование, ожидается окончание,и только потом возвращается результат. Т.е основной цикл ждет получения результата.
Автор примера сделал измерения "фоновыми" - одновременно показывая как работать с АЦП и прерываниями.
В прерывании по окончании преобразований измеренное значение сохраняется в глобальной переменной и запускается новый цикл преобразования.
А в основном цикле программы достаточно просто на основании данных в глобальной переменной
зажигать светодиоды. Т.е основной цикл может во время преобразования АЦП заняться чем-то другим.
— Не говорите мне что делать и я не скажу куда Вам идти...


