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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение 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);

}

не работает(((
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

АЦП включайте в main, а не в прерывании. ;)
чтобы зажигался светодиод при подаче напряжения на ацп
на ножку?
Fucking static initialization order fiasco
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение 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 НА ВХОД АЦП

}

НЕ ГОРИТ СВЕТОДИОД((
Электрический кот
Аватара пользователя
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Сообщение Mishany »

что бы работали прерывания их нужно сначало разрешить командой sei(); после настройки ацп
#include <interrupt.h> вроде тоже ложно быть....
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

ADCSRA|=0x40 - это лишнее???
Давайте начнем с того, что Вы ответите на вопрос: что Вы делаете этой командой и каков должен быть результат ее выполнения?
Fucking static initialization order fiasco
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение sirha »

0x40 - 1000000 : 10001111|=1000000

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



10001111|=1000000

ADCSRA| =0x40 дает 11111111
Последний раз редактировалось sirha Чт окт 23, 2014 13:05:45, всего редактировалось 2 раза.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

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

Мой уютный бложик... заходите!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Скачать это
Читать ежедневно на ночь до полного просветления и больше не задавать вопросов.
Модуль АЦП описан всего на 14 страницах (с. 310-323). Надеюсь, асилите?
Fucking static initialization order fiasco
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение sirha »

Pink-Pank писал(а): Модуль АЦП описан всего на 14 страницах (с. 310-323). Надеюсь, асилите?
зачем тогда форум),если вам сложно подсказать надо было сразу так и написать :( ,а книги я и так читаю,токо я не настоко умный чтобы сразу все понять,у меня про ацп даже листы распечатаны - все регистры и разряды - что делает каждый регистр ,назначение битов
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

sirha писал(а):я не настоко умный чтобы сразу все понять
Ум тут ни при чём. Просто не надо надеяться на то, что кто-то всё сделает. Штудировать и штудировать.
Docendo discimus
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

токо я не настоко умный чтобы сразу все понять
А как Вы собираетесь что-то делать, не понимая, что именно Вы делаете?
Fucking static initialization order fiasco
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение sirha »

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

Обьясните сначала лучше что такое бит ADSC,ADFR - что за преобразование ?
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

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

Ну и следует понимать, что при этом светодиод включится независимо от состояния входа АЦП.
Последний раз редактировалось vdavid Ср окт 22, 2014 17:13:55, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение sirha »

vdavid писал(а):sirha, Ну уже ведь подсказали:
1. Разрешить прерывания (sei)


Ну и следует понимать, что при этом светодиод включится независимо от состояния входа АЦП.
млииин вот болван я ,про глобальные прерывания то забыл (что надо их разрешить,спс ,скажите что за бит преобразования?,для чего он
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

sirha писал(а):скажите что за бит преобразования?,для чего он
Для старта преобразования, что и следует из его названия. По завершении преобразования произойдет прерывание.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Читайте и понимайте. Я по этому курсу учусь, очень доходчиво написано: http://easyelectronics.ru/category/avr-uchebnyj-kurs
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение sirha »

0x40 - 1000000 : 10001111|=1000000

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

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

10001111|=1000000

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

кто-нибудь обьяснит мне для чего нужно преобразование???
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

sirha писал(а): кто-нибудь обьяснит мне для чего нужно преобразование???
Преобразование это и есть процесс измерения напряжения на входе АЦП. Т.е. оно (преобразование) преобразовывает аналоговый сигнал на входе в цифровую форму, которую по окончании преобразования можно прочесть в регистровой паре ADCL, ADCH. Компилятор можно попросить прочитать оба регистра и вернуть шестнадцати битную переменную (ADCW или ADC). Так понятно?
Вымогатель припоя
Аватара пользователя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

Сообщение 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 вольт
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

извините за оффтоп.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»