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

 
 
> Tiny26 АЦП проблема, Описана проблема с опросом АЦП.
Roth
сообщение Sep 8 2008, 11:35
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 8-09-08
Пользователь №: 40 054



Доброго времени суток.

Имеется Тiny26L. Стабилизир питание 5В.
PA2 PA3 PA7 - используются как выходы.
ADC0 ADC1 как дифф вход АЦП.

Проблема заключается в том что, АЦП после инициализации и последующих попыток стартовать, не обновляет ADCL - только после RESET.

Код
void port_init(void)
{
PORTB = b10000000;    
DDRB  = b01111111;
PORTA = b00000000;
DDRA  = b10001100;
}

//ADC initialize
// Conversion time: 26uS
void adc_init(void)
{
ADCSR = b00000000;   // disable adc
ADMUX = b10001011;   // select adc input : ref-int, xxx01011  diff(0-1),gain=20
ACSR  = b10000000;   // switch off analog comparator
ADCSR = b10000001;   // enable, prescaler=2  
}

.....................

while(1){

ADCSR = ADCSR | b01000000;    // single conversion
// sbi 0x6,6          компил-р ICCAVR v7


while (  (ADCSR & b01000000) != 0  ) {;}   // wait
// L14:   sbic 0x6,6   rjmp L14


k=ADCL;
ShowNum ( (unsigned short int)(k) );
.......
}


Всё прекрасно работает, показывает некоторое значение ADCL (при каждом включении разное).
Но оно не обновляется до выключения\reset - ощущение что АЦП один раз снял и больше не "хочет". Хотя ожидание после преобразования удачно проходит.

Так вот хочу выяснить - это ошибка программирования или МК(заменить МК пока нет возможности), на Меге8 подобная схема работает без проблем.

Перепробовал многое - перед включением АЦП переводил порты в hi-Z, включал опрашивал выключал АЦП , снова включал порты на выход. Результат тот же.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:15
Рейтинг@Mail.ru


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