Страница 1 из 2

настроить АЦП

Добавлено: Ср окт 22, 2014 00:18:20
sirha
Подскажите как правильно настроить ацп attiny 13,чтобы зажигался светодиод при подаче напряжения на ацп

Код: Выделить всё

#include <tiny13.h>

interrupt [ADC_INT] void adc_isr(void)
{ 
PORTB.3=1;
ADCSRA|=0x40;

}

void main (void)
{
PORTB=0x00;
DDRB=0x08; //ПОРТ 3 НА ВЫХОД
ADCSRA=0x8F;// 10001111 - ДЕЛИТЕЛЬ 128 + ПРЕРЫВАНИЯ АЦП ВКЛЮЧЕНЫ
ADMUX=0x01; //ADC 1 - ПОРТ 2 НА ВХОД АЦП
}

while(1);

}

не работает(((

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 00:24:48
Pink-Pank
АЦП включайте в main, а не в прерывании. ;)
чтобы зажигался светодиод при подаче напряжения на ацп
на ножку?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 00:56:27
sirha
Pink-Pank писал(а):АЦП включайте в main, а не в прерывании. ;)
ADCSRA|=0x40 - это лишнее???

ага на ножку

Код: Выделить всё

#include <tiny13.h>
#include <delay.h>
interrupt [ADC_INT] void adc_isr(void)
{ 
PORTB.3=1;
delay_ms(10);

}

void main (void)
{
PORTB=0x00;
DDRB=0x08; //ПОРТ 3 НА ВЫХОД
ADCSRA=0x8F;// 10001111 - ДЕЛИТЕЛЬ 128 + ПРЕРЫВАНИЯ АЦП ВКЛЮЧЕНЫ
ADMUX=0x01; //ADC 1 - ПОРТ 2 НА ВХОД АЦП

}

НЕ ГОРИТ СВЕТОДИОД((

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 05:23:09
Mishany
что бы работали прерывания их нужно сначало разрешить командой sei(); после настройки ацп
#include <interrupt.h> вроде тоже ложно быть....

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 09:05:21
Pink-Pank
ADCSRA|=0x40 - это лишнее???
Давайте начнем с того, что Вы ответите на вопрос: что Вы делаете этой командой и каков должен быть результат ее выполнения?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 13:27:08
sirha
0x40 - 1000000 : 10001111|=1000000

ADCSRA| =0x40 - 11111111 -- ADSC 6 бит начать преобразование (как я понил это измерение что



10001111|=1000000

ADCSRA| =0x40 дает 11111111

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 13:31:41
ARV
sirha писал(а):ADSC 6 бит начать преобразование (как я понил это измерение что ли?),ADFR 5 бит - непрерывное преобразование ( тоже не понимю что делает этот бит), 4 бит ADIF
флаг прерывания - бит устанавливается когда преобразование закончено

преобразование - это измерение
тоесть мне сначала нужно преоразовать???,однократное преобразование это когда делается?,и когда преобразов закончено то поставить флаг ADIF в 1 тоесть сбросить что ли?

я так понил что эта команда занимается сбросом ,плохо понимаю
сколько вопросов! сколько тем на форуме! вы даташит читали? или книгу какую-нибудь про AVR? может, с этого начать все-таки?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 13:35:20
Pink-Pank
Скачать это
Читать ежедневно на ночь до полного просветления и больше не задавать вопросов.
Модуль АЦП описан всего на 14 страницах (с. 310-323). Надеюсь, асилите?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 16:27:10
sirha
Pink-Pank писал(а): Модуль АЦП описан всего на 14 страницах (с. 310-323). Надеюсь, асилите?
зачем тогда форум),если вам сложно подсказать надо было сразу так и написать :( ,а книги я и так читаю,токо я не настоко умный чтобы сразу все понять,у меня про ацп даже листы распечатаны - все регистры и разряды - что делает каждый регистр ,назначение битов

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 16:34:00
pyzhman
sirha писал(а):я не настоко умный чтобы сразу все понять
Ум тут ни при чём. Просто не надо надеяться на то, что кто-то всё сделает. Штудировать и штудировать.

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 16:40:08
Pink-Pank
токо я не настоко умный чтобы сразу все понять
А как Вы собираетесь что-то делать, не понимая, что именно Вы делаете?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 16:53:00
sirha
Pink-Pank писал(а): А как Вы собираетесь что-то делать, не понимая, что именно Вы делаете?
обьясняйте ,я ведь не сам написал ADSCRA|=40;- Я ЕЕ НАШЕЛ В ПРИМЕРАХ ,она была вбита в коде с ацп ,я ведь сюда и пишу чтобы мне обьяснили что к чему

Обьясните сначала лучше что такое бит ADSC,ADFR - что за преобразование ?

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 17:03:52
vdavid
sirha, Ну уже ведь подсказали:
1. Разрешить прерывания (sei)
2. Первый запуск преобразования (установка бита ADSC оно же ADSCRA|=40) в основной программе.
В main() первая скобка "}" лишняя. Неужели компилятор не ругается?

Ну и следует понимать, что при этом светодиод включится независимо от состояния входа АЦП.

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 17:09:50
sirha
vdavid писал(а):sirha, Ну уже ведь подсказали:
1. Разрешить прерывания (sei)


Ну и следует понимать, что при этом светодиод включится независимо от состояния входа АЦП.
млииин вот болван я ,про глобальные прерывания то забыл (что надо их разрешить,спс ,скажите что за бит преобразования?,для чего он

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 17:16:52
vdavid
sirha писал(а):скажите что за бит преобразования?,для чего он
Для старта преобразования, что и следует из его названия. По завершении преобразования произойдет прерывание.

Re: настроить АЦП

Добавлено: Ср окт 22, 2014 17:17:35
НАПАЛМ
Читайте и понимайте. Я по этому курсу учусь, очень доходчиво написано: http://easyelectronics.ru/category/avr-uchebnyj-kurs

Re: настроить АЦП

Добавлено: Чт окт 23, 2014 13:06:18
sirha
0x40 - 1000000 : 10001111|=1000000

ADCSRA| =0x40 - 11111111 -- ADSC 6 бит начать преобразование (как я понил это измерение что

Токо дошло что я ошибся

10001111|=1000000

ADCSRA| =0x40 дает 11001111 - тоесть включает 6 бит тоесть преобразование

кто-нибудь обьяснит мне для чего нужно преобразование???

Re: настроить АЦП

Добавлено: Чт окт 23, 2014 13:19:48
vdavid
sirha писал(а): кто-нибудь обьяснит мне для чего нужно преобразование???
Преобразование это и есть процесс измерения напряжения на входе АЦП. Т.е. оно (преобразование) преобразовывает аналоговый сигнал на входе в цифровую форму, которую по окончании преобразования можно прочесть в регистровой паре ADCL, ADCH. Компилятор можно попросить прочитать оба регистра и вернуть шестнадцати битную переменную (ADCW или ADC). Так понятно?

Re: настроить АЦП

Добавлено: Чт окт 23, 2014 13:44:10
sirha
vdavid писал(а): Так понятно?
Вот теперь понятно спс :)

Код: Выделить всё


#include <tiny13.h>
#include <delay.h>

   
interrupt [ADC_INT] void adc_isr(void) {

   {PORTB=(unsigned char) ~ADCL;
delay_ms(5); } 


} 


void main(void) {
 
PORTB=0xFF; 
DDRB=0xFF; 

ADCSRA=0x8F; 

#asm("sei") 
    ADMUX=0x01;
   ADCSRA|=0x40;


while (1) ;

} 

Скажите а каков сдесь результат в 2 ичной системе???,если к примеру я подключу к ножки ADC1

1 вольт

Re: настроить АЦП

Добавлено: Чт окт 23, 2014 13:50:02
ARV
:shock: ну почему все так любят использовать прерывания, еще не научившись светодиодм мигать?! неужели нельзя учиться от простого к сложному?! почему нужно сразу после таблицы умножения таблицу синусов изучать, не представляя себе, что этот синус обозначает и нафига он нужен?! или без проблем жизнь кислая?

извините за оффтоп.