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

 
 
> АЦП Tiny13V на входе ноль, а результат преобразования не 0, Как такое может быть?
smk
сообщение Oct 24 2010, 13:14
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Схема влючения простая. Вход АЦП (PB4) зашунтирован на обший резистором 68 Ом и конденсатором 1000 мкф. Осциллограф и тестер утверждают, что там 0 В. Да и по уму ничему другому там взяться неоткуда. Плата мытая. Результатом преобразования имеем значение 15 или около того. Вход АЦП (PB3) зашунтирован на общий резистором 4,7 кОм. Картина примерно таже самая. Суть проблемы в целом такова, что на нижнем пределе нет устойчивой однозначности результата преобразования. Плавно изменяющееся напряжение, снятое с RC-цепочки (время изменения от 1,03 В до 0 В примерно 1,5 с) демонстрирует даже какое-то подмигивание перед выключением светодиода, но не всегда а только примерно в 20% случаев. Из 10 значащих бит АЦП использую только старшие 8. Монтаж СМД, перекосов общего провода вродебы нет. Контроллер управляет MOSFETами, а они светодиодами. Яркость светодиодов управляется аппаратным ШИМом от таймера. Ну вобщем суть вопроса в том, как избавиться от миганий светодиода при нижних значениях яркости, в т.ч. и при нулевой яркости? Спасибо.
Код
volatile unsigned int c1,c2,adc_data;
volatile unsigned char t1,t2,flag1,flag2;

unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | 0b01100000;
ADCSRA |= (1<<ADSC); //начать преобразование
while (!(ADCSRA & (1<<ADIF))) {asm("nop");}; //ждем появления флага завершения преобр.
ADCSRA |= (1<<ADIF);//сбросить флаг
//return ADCW;
return ADCH;
}

ISR(TIM0_OVF_vect)
{
if(flag1==1)
    {
    OCR0A=t1;
    flag1=0;
    }
if(flag2==1)
    {
    OCR0B=t2;
    flag2=0;
    }
}


int main(void)
{
PORTB = 0b00000000;
DDRB  = 0b00000111;
OCR0A = 0;
OCR0B = 0;
TCNT0 = 0x01; //set count
TCCR0A = 0b10100001;
TCCR0B = 0b00000100; //start timer
TIMSK0 = 0b00000010;
DIDR0=0b00011000;
ACSR  = 0x80;//компаратор выключить

ADCSRA = 0b10000110;

asm("sei");

while(1)
    {
    if(flag1==0)
        {
        adc_data=read_adc(2);    
        c1=0;
        for(unsigned char i=0; i<250; i++)
            {
            adc_data=read_adc(2);
            if(adc_data>c1) c1=adc_data;
            }
        t1=(unsigned char)c1;
        if(c1>=250) t1=255;
        if(c1<4) t1=0;
        flag1=1;
        }
    if(flag2==0)
        {
        adc_data=read_adc(3);    
        c2=0;
        for(unsigned char i=0; i<250; i++)
            {
            adc_data=read_adc(3);
            if(adc_data>c2) c2=adc_data;
            }
        t2=(unsigned char)c2;
        if(c2>=250) t2=255;
        if(c2<10) t2=0;
        flag2=1;
        }
//    OCR0A=pgm_read_byte(&brightness[t1]);
//    OCR0B=pgm_read_byte(&brightness[t2]);
    asm("nop");
    }
return 0;
}


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   АЦП Tiny13V на входе ноль, а результат преобразования не 0   Oct 24 2010, 13:14
- - sigmaN   так вам от подмигивания избавиться или со странным...   Oct 24 2010, 13:28
- - smk   и то и то. Я так понимаю они взаимосвязаны. Опора ...   Oct 24 2010, 13:35
- - 314   Скажите, а последовательно со светодиодами включил...   Oct 24 2010, 14:54
- - smk   660 Ом (2х330) при питании в 9 В. Питание ровное. ...   Oct 24 2010, 15:29
|- - rx3apf   Цитата(smk @ Oct 24 2010, 19:29) 660 Ом (...   Oct 24 2010, 15:41
- - 314   А в затворах МОСФЕТов какие резисторы? Выглядит та...   Oct 24 2010, 16:28
- - ARV   сколько встречал, в том числе и в даташитах, всюду...   Oct 24 2010, 17:29
|- - rx3apf   Цитата(ARV @ Oct 24 2010, 21:29) сколько ...   Oct 24 2010, 17:44
- - ILYAUL   Цитатана обший резистором 68 Ом и конденсатором 10...   Oct 24 2010, 18:52
- - domowoj   Я не силен в СИ, но не вижу "засыпания" ...   Oct 25 2010, 00:53
- - =GM=   Цитата(smk @ Oct 24 2010, 12:14) Суть про...   Oct 25 2010, 16:24
- - smk   Резисторы в цепи затворов 68 Ом. MOSFET IRL520. За...   Oct 26 2010, 06:03
|- - aesok   В первом посте Вы написали что у Вас еть осцилогра...   Oct 26 2010, 09:56
- - ArtemKAD   Цитата660 Ом (2х330) при питании в 9 В. Подробнее,...   Oct 26 2010, 10:54
- - TechMike   Делал год назад показометр на трех светодиодах, чт...   Oct 26 2010, 11:59
|- - domowoj   Цитата(TechMike @ Oct 26 2010, 18:59) Апп...   Oct 26 2010, 16:30
|- - TechMike   Цитата(domowoj @ Oct 26 2010, 19:30) У Ти...   Nov 22 2010, 19:52
- - sKWO   Цитата(smk @ Oct 24 2010, 16:14) Схема вл...   Oct 26 2010, 21:03
- - GDI   Почитайте про калибровку АЦП в апноутах Атмела, та...   Oct 27 2010, 06:39
- - skyled   Переделал все на Мегу8 с выводом АЦП в порт компа....   Nov 2 2010, 09:51


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

 


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


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