roboforum.ru

Технический форум по робототехнике.

АЦП в Tiny2313

АЦП в Tiny2313

Maycal » 28 ноя 2009, 23:32

Здравствуйте уважаемые программисты. Недавно начал заниматься электроникой и в частности микропроцессорами. Стоит такая задача: нужно сделать робота-охотника за светом (типичная задача для новичков). Стоят два фототранзистора, и нужно что бы с них считывались показания, сравнивались друг с другом и запускался двигатель постоянного тока вправо или влево "охотясь за светом".
Как считать уровень сигнала с фототранзисторов? С помощью АЦП? Так вот это то и не получается. В CodeVisionAVR для Tiny2313 при создания автокода вообще нет вкладки ADC, а если делать для другова MK - при прошивании не работает. Хотя в описании МК написанно что там есть встроенный ЦАП и АЦПю Немогли бы вы подсказать простую литературу, или же набросать тут код для CodeVisionAVR?. Нужно именно для него! Заранее спасибо!

Re: АЦП в Tiny2313

avr123.nm.ru » 28 ноя 2009, 23:42

Читайте даташит - там ПРАВИЛЬНО написано. Достаточно посмотреть обложку.

Измерить напряжение можно и без встоеного АЦП - эммитер фототранзистора соединяете резистором 150-470 Ом с ножкой-входом прерывания AVR и еще эммитер соединяете с землей резистором 10-20 кОм и параллельно конденсатором 10 нФ например. Теперь делаете на ножке "выход" и "0" - затем включаете таймер и делаете ножку "входом" без подтяжки, замеряете время заряда конденсатора до "1" т.е. до момента срабатывания прерывания "по фронту сигнала" ( прерывания в микроконтроллере AVR - http://avr123.nm.ru/03.htm ) - чем быстрей тем больше освещение фототранзистора.

но ИМХО удобней новичку использовать ATmega8 с АЦП например по 48 рублей.

Добавлено спустя 2 минуты 7 секунд:
Maycal писал(а): В CodeVisionAVR для Tiny2313 при создания автокода вообще нет вкладки ADC


ВЫВОД ??? не ясен ?

Доверяйте CVAVR и avr123 - они плохого не посоветуют ! :ROFL:

Re: АЦП в Tiny2313

Maycal » 28 ноя 2009, 23:56

ТЕ в Tiny 2313 нет АЦП?

Re: АЦП в Tiny2313

avr123.nm.ru » 28 ноя 2009, 23:57

ОЧЕВИДНО нет. Когда есть - то есть и в мастере CVAVR и на обложке даташита.

Re: АЦП в Tiny2313

galex1981 » 29 ноя 2009, 00:04

Там даже нет аппаратного SPI ;)

Re: АЦП в Tiny2313

Duhas » 29 ноя 2009, 00:08

:shock:
там просто ТВИ и СПИ в 1 модуль сшиты...

Re: АЦП в Tiny2313

Angel71 » 29 ноя 2009, 00:15

Maycal, изучайте внимательней датишиты. на атмеловские чипы их можно скачать, например тут http://atmel.com
по контроллерам еще могу посоветовать почаще заглядывать на сайты подобные этому http://electronix.ru/forum/index.php?showforum=10

Re: АЦП в Tiny2313

Maycal » 29 ноя 2009, 12:17

Скажите пожалуйста, EXT_INT0 это прерывание по фронту или ниспаду?

Re: АЦП в Tiny2313

Duhas » 29 ноя 2009, 12:22

по идее - как настроите...

Re: АЦП в Tiny2313

Maycal » 29 ноя 2009, 12:53

В генераторе начального кода много параметров, есть Low level, а конктретно High Level нет. Какой выбирать для моей задачи из всех?

Re: АЦП в Tiny2313

Duhas » 29 ноя 2009, 12:56

а какая у вас задача ? ) вообще прерывания 0 и 1 настраиваются на спад/фронт/низкий уровень... выбирайте и пользуйтесь..

Re: АЦП в Tiny2313

Maycal » 29 ноя 2009, 13:01

И еще такой вопрос, где в начальном генераторе указать порт, который будет реагировать на прерывание?

Добавлено спустя 3 минуты 44 секунды:
Мне нужно сделать прерывание на фронт. В генераторе для этой задачи на вкладке
External IRQ->INT0 Enabled-> какое выбрать из 4:
1) Low Level
2) Any Change
4) Falling Edge
5) Rising Edge
И как првязать это все к порту? Или оно будет на любой порт реагировать?

Re: АЦП в Tiny2313

Duhas » 29 ноя 2009, 13:05

фронт - Rising Edge

выбирать порт не нужно ) он в ДШ написан.. PD2 для этой тиньки вроде...

Re: АЦП в Tiny2313

Maycal » 29 ноя 2009, 13:27

Спасибо большое! Но есть еще один вопрос, скажи пожалуйсто, какой таймер использовать 0 или 1 или Watchdog для тако что бы посчитать время заряда конденсатора?

Добавлено спустя 15 минут 19 секунд:
Здесь еще одна проблема.
Я так понимаю прерывания работают след образом:
Сначало выполняется код в main. Если есть прерывания, включается обработчик прерываний, выполняется, когда прерывание прекращается, сново начинает выполняться main?
Но все дело в том, что почему то работает только прерывание. А main не работает. В main прописано зажигание светодиота, он не зажигается, а в обработчики прерывания зажигается. В чем же дело?

Re: АЦП в Tiny2313

Grofus » 29 ноя 2009, 13:27

Ну откройте же вы даташит наконец.... :D Там написано что таймер 0 восьмиразрядный !!,Таймер 1 шестнадцатиразрядный, а ВачДог таймер специальный защитный его не поюзаеш :D :D Я так думаю что таймер 1 для этой задачи будет слишком жирным поэтому юзай таймер 0..

А если хочется точности в измерениях то сходи на http://easyelectronics.ru там был где то пример как из аналогового компаратора и шим сделать неплохой ацп.. Ну и курс там есть неплохой по контроллерам на асемблере :Yahoo!:


Rambler\'s Top100 Mail.ru counter