Обсуждаем контроллеры компании Atmel.
Ответить

АЦП в AVR

Сб мар 17, 2018 16:12:21

Доброго дня!!! Использую переменный резистор для регулирования оборотами электродвигателя через ШИМ.Схема собрана, программа написана. Но стоит оставить систему в работе, пойти погулять вернувшись поменять обороты при касаний к ручке резистора контроллер сбрасывается. По ходу я что-то не предусмотрел в цепи АЦП.Фатальные помехи проскакивают. В даташите говорилось про кондер на ножке AREF при ИОН с AVCC. Но у меня ИОН VCC. Кроме всего этого бывают касаюсь проводов так такой разряд происходит аж передергивает.Где копать не догадываюсь...
Спойлер
Код:
#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>
#define OC1A 5
#define SEI 0



void TIMER_instal(void)
{
   DDRD|=(1<<OC1A);
   TCCR1A=(1<<COM1A1)|(0<<COM1A0)|(0<<COM1B1)|(0<<COM1B0)|(0<<FOC1A)|(0<<FOC1B)|(1<<WGM11)|(1<<WGM10);
   TCCR1B=(0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);
}

void ADC_init(void)
{
   ADMUX=(0<<REFS1)|(0<<REFS0)|(0<<ADLAR)|(SEI<<0);
   ADCSRA=(1<<ADEN)|(0<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);                                   
}


int main(void)
{
   TIMER_instal();
   ADC_init();
   
   while (1)
   {
   ADCSRA|=1<<ADSC;
   OCR1A=ADC;
   }
}


Добавлено after 26 minutes 46 seconds:
Показания в книге и в даташите по поводу битов REFS1 и REFS0 по-моему разнятся,или я недопонимаю?
Вложения
2018-03-17_17-12-16.png
(242.96 KiB) Скачиваний: 523
2018-03-17_16-33-50.png
(10.74 KiB) Скачиваний: 535

Re: АЦП в AVR

Сб мар 17, 2018 17:08:50

Кроме всего этого бывают касаюсь проводов так такой разряд происходит аж передергивает.
От такого МК не то, что перезапустится, а и сгореть может.
Может в этом и проблема? Источник питания отвязать от сети, временно запитать от аккумулятора и т.д и т.п.

Re: АЦП в AVR

Сб мар 17, 2018 17:14:11

ROMan2947 писал(а):Где копать не догадываюсь...
А что на вас одето? поди эластик или шерстяное?
ROMan2947 писал(а):Кроме всего этого бывают касаюсь проводов так такой разряд происходит аж передергивает
Антистатический браслет поможет.
Заземлить придется.

Да и что-то в вашем коде пропущено
Код:
// Start the AD conversion
ADCSRA|=(1<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
OCR1A=ADC;

Re: АЦП в AVR

Сб мар 17, 2018 17:46:15

А что на вас одето? поди эластик или шерстяное?

да было одето, потом снял, стало реже,но не перестало.

Заземлить придется.
себя? :)))

Да и что-то в вашем коде пропущено
да в курсе,но на данном этапе я думаю это не кретично.

Добавлено after 4 minutes 48 seconds:
От такого МК не то, что перезапустится, а и сгореть может.
Может в этом и проблема?

да вроде работает, не сгорел пока :write: ps.мой микроконтроллер наверное самый несчастный контроллер в мире, так как я не издевается никто))

Re: АЦП в AVR

Вт мар 27, 2018 00:05:03

#define OC1A 5
#define SEI 0

круто)

Re: АЦП в AVR

Вт мар 27, 2018 12:00:30

круто)


так думаю круче

Код:
#define SEI(x) ADMUX=(0<<REFS1)|(0<<REFS0)|(0<<ADLAR)|(x<<0)

Re: АЦП в AVR

Вт мар 27, 2018 12:22:19

Еще проще - NE555.
8)
Насчет помех - программа на СИ уже к разрядам разного рода неустойчива.
Минимальная альтернатива - изолированная рукоятка /вал потенциометра.
Дальнейшее - весьма аккуратно прописанная обработка АЦП и процедура рестарта(перезагрузки) при сработках сторожевиков по BOD и WDT.
8)

Re: АЦП в AVR

Вт мар 27, 2018 12:40:32

при сработках сторожевиков по BOD и WDT.

сколько слышу сторожевик сторожевик, у меня он вообще в камне не включен по-моему,по крайне мере я с ним делов не имел пока.На сколько знаю он следит за зависанием программы,но редко в каких примерах я встречал применение его...

Добавлено after 9 minutes 36 seconds:
программа на СИ уже к разрядам разного рода неустойчива.
Как устойчивость к помехам зависит от языка программирования? :shock:

Re: АЦП в AVR

Вт мар 27, 2018 12:57:53

И от языка (слишком много данных передается через ОЗУ), и от разновидностей семейств МК.
Основная ошибка (помимо схемотехники и стандартных приемов подавления помех) не активированы сторожа по броскам питания, сбою хода исполнения программы и не проработана процедура перезапуска по сбою программы.
В принципе можно заставить работать МК и при искровом разряде в шины питания...
Только то уже весьма примитивная прожка может выдержать - с определенными спецограничениями на применение аппаратных и программных ресурсов МК.
Схемку и фотки с монтажем приблуды покажи - первые ошибки в монтаже будут.
8)

Re: АЦП в AVR

Вт мар 27, 2018 13:27:43

Схемку и фотки с монтажем приблуды покажи

разобрал схему с АЦП, есть фото ,скажем так отладочной платы. :facepalm:

первые ошибки в монтаже будут.
не сомневаюсь!

Re: АЦП в AVR

Вт мар 27, 2018 13:29:25

Ну дык и покажи, может чего прояснится.
:beer:

Re: АЦП в AVR

Вт мар 27, 2018 13:30:46

Ну дык и покажи, может чего прояснится.
:beer:

чет не получается загрузить :dont_know:

Re: АЦП в AVR

Вт мар 27, 2018 17:59:04

Делаем фотки или сброс схемки в *.gif или *.jpeg не наглея (до 500килобайт - настройками фотика выводим).
Графику можно запихнуть в img.radiokot.ru (а в сообщении только ссылка на адрес рисунка).
Или же напечатать в dopdf (dopdf7 или более новую версию), предварительно установив эту полезность на компе и загрузить результат *.pdf непосредственно в сообщении.
Скачать...
можно тут
http://www.dopdf.com
или тут
http://download-software.ru/dopdf.html
или где еще инет покажет...
:beer:

Re: АЦП в AVR

Вт мар 27, 2018 18:37:03

ROMan2947 писал(а):так думаю круче
вы специально решили сделать так, чтобы было больше шансов запутаться самому и запутать других? SEI - это стандартная команда разрешения прерываний для архитектуры AVR, и макрос с таким наименованием, даже набранный заглавными и с параметром, вводит в заблуждение тем более что есть "стандартный" макрос sei()...

круче будет только #define TRUE FALSE

Re: АЦП в AVR

Вт мар 27, 2018 18:44:32

вводит в заблуждение

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

Re: АЦП в AVR

Вт мар 27, 2018 19:07:25

В даташите говорилось про кондер на ножке AREF при ИОН с AVCC. Но у меня ИОН VCC. Кроме всего этого бывают касаюсь проводов так такой разряд происходит аж

AVCC это ножка куда подается питание аналоговой части МК. В любом случае, если на AREF не подается опора, а используется какое-то внутреннее - ДОЛЖЕН стоять конденсатор. VCC как опору в принципе использовать нельзя, только AVCC. Так что давай схему дружок, посмотрим что ты там наворотил.
А дергает тебя напряжением, потому что, могу поспорить, используешь ты комповский блок питания, и понятия не имеешь что его надо заземлять, иначе на массе у него потенциал относительно земли 110В переменки. Угадал?

Re: АЦП в AVR

Вт мар 27, 2018 19:24:12

могу поспорить
а вот и нет питается все через USBasp и зарядник от телефона на 1А :)))
понятия не имеешь

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

Re: АЦП в AVR

Вт мар 27, 2018 19:25:40

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

ну хоть с этим порядок. тогда тащи схему, иначе пустая трата времени.
должно быть вот так http://avrproject.ru/lesson/124141t54.png
ну катушку можно не ставить.
потенциометр тоже желательно проверить. Для теста можно его убрать, запаять делитель из двух резисторов и проверить на стабильность работы.
Последний раз редактировалось Ярослав555 Вт мар 27, 2018 19:31:27, всего редактировалось 1 раз.

Re: АЦП в AVR

Вт мар 27, 2018 19:29:15

В любом случае, если на AREF не подается опора, а используется какое-то внутреннее - ДОЛЖЕН стоять конденсатор.
Учту,спасибо! жаль, что этот кондер не заложили аппаратно.Думаю было бы удобно) :write:

Re: АЦП в AVR

Вт мар 27, 2018 19:31:50

Млин... не туда положил
:facepalm: :oops:
Последний раз редактировалось BOB51 Ср мар 28, 2018 08:58:24, всего редактировалось 2 раз(а).
Ответить