roboforum.ru

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

АЦП на ATmega8

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

АЦП на ATmega8

Сообщение Izum » 21 окт 2010, 21:37

Добрый день всем!
Пишу диссертацию по одной системе, где необходимой составляющей является АЦП. Задача в первом приближении проста: необходимо преобразовать аналоговый сигнал в код и выдать его на порт. Столкнулся со следующей проблемой: независимо от того находится ли АЦП в режиме многократного преобразования или я инициализирую однократный запуск самостоятельно в цикле, преобразование аналогового сигнала в код происходит только ОДИН раз, дальше необходимо либо сбрасывать контроллер, либо отключать и подключать питание к нему заново. Помогите пожалуйста, уже не знаю что и делать, как только не пробовал. :cry:
Поскольку АЦП раньше никогда не программировал не бейте сильно за косяки, вот код:
;Подключаемые файлы:
.nolist
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc"
.list

;====================================
;Начало программы:
.org $0000
rjmp Init ;Переход на секцию инициализации
rjmp ADC_Complete ;Прерывание от АЦП
.org $0030
;====================================
;Обработчик прерывания:
ADC_Complete:
in r17,ADCL
out PortD,r17
reti

;====================================
Init:
;Инициализация стека:
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16


;Инициализация АЦП:
ldi r16,0x00
out admux,r16
ldi r16,0xFE
out ADCSRA,r16

;;Инициализация Портов:
ldi r16,0b11111111
out DDRD,r16

sei ;разрешение прерываний
;====================================
;Основное тело программы:
Start:

rjmp Start
Izum
 
Сообщения: 4
Зарегистрирован: 03 ноя 2009, 22:47
Откуда: Москва

Re: АЦП на ATmega8

Сообщение Duhas » 21 окт 2010, 22:59

а какой там вектор у прерывания по АЦП? 0x02 чтоль?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: АЦП на ATmega8

Сообщение Izum » 22 окт 2010, 09:43

я там ошибся чуточку. Вектор у АЦП 0х0Е. Это я уже исправил, но результат не изменился (он без исправления все равно на него попадал, только только немного кривым способом - он переходил на $000Е, а дальше добегал до адреса $0030, где и был написан обработчик прерывания, но щас я исправил и тут ошибки уже нет). Т.е. код такой должен быть:

.org $0000
rjmp Init ;Переход на секцию инициализации
.org $000Е
rjmp ADC_Complete ;Прерывание от АЦП
.org $0030

Я даже не знаю что и предположить, в чем косяк? Я попробовал уже на двух прогах написать: на AVR Studio и на AlgorithmBuilder - думал может дело в проге, результат одинаковый. Может в схеме ошибка? да вроде тоже все просто AREF=+5В, AVCC=+5В, VCC=+5В, на всход ADC0 подаю сигнал, что тут может быть не так?
Izum
 
Сообщения: 4
Зарегистрирован: 03 ноя 2009, 22:47
Откуда: Москва

Re: АЦП на ATmega8

Сообщение Michael_K » 22 окт 2010, 10:59

симуляторы кривые - на железе все жужжит.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: АЦП на ATmega8

Сообщение Victorovych » 22 окт 2010, 11:25

Маркс пишет так:
Вложения
434tr3etgerr.JPG
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: АЦП на ATmega8

Сообщение Michael_K » 22 окт 2010, 11:43

да там не в этом дело - симулятор ADСS сбрасывает, хотя во фри-раннинг не должен вроде бы...
(или что-то в таком духе - не вспомню сейчас)

а читать H - да, нужно обязательно.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: АЦП на ATmega8

Сообщение Izum » 22 окт 2010, 14:16

Сейчас все сделал как Вы посоветовали, все работает - ОГРОМНОЕ СПАСИБО!
Я просто нигде не наткнулся на то, что надо было считывать еще и старший байт - считывал только младший чтобы проверить работоспособность АЦП, а старший хотел потом подключить - дело в том, что в конечном итоге мне не нужно будет выводить данные в порт - это я для себя, для проверки сделал. :Yahoo!:
Izum
 
Сообщения: 4
Зарегистрирован: 03 ноя 2009, 22:47
Откуда: Москва

Re: АЦП на ATmega8

Сообщение Duhas » 22 окт 2010, 19:24

и я проглядел...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: АЦП на ATmega8

Сообщение Izum » 22 окт 2010, 20:47

Да ладно, бывает..=) Главное, что общими усилиями пришли к рабочей программе=) Еще раз всем огромное спасибо!
Izum
 
Сообщения: 4
Зарегистрирован: 03 ноя 2009, 22:47
Откуда: Москва


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27