Страница 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

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