Страница 1 из 1

проблемы с ацп atmega8

Добавлено: Ср авг 28, 2013 00:35:08
pimple2006
здравствуйте,задача была подключить акселерометр mma7361 к atmega8,возникли трудности.По началу копировал с сайта работу с ацп на асме и решил проверить на делителе напряжения,диод при включенном питании делителя тух,при выключенном - загорался.Припаял акселерометр(ось у) - ноль эмоций,сейчас после редактирования кода не работает ничего :cry: прошу помощи

Код: Выделить всё

.include "C:\Appnotes\m8def.inc"

 .def     Temp=R16
 .def     Temp1=R17
 .def     Temp2=R18
 .def     Temp3=R19
 .def     Temp4=R20

 .cseg
 .org 0

ldi  temp,low(RAMEND)            
out  SPL,temp
ldi  temp,high(RAMEND) ; Stack Pointer = $45F
out  SPH,temp

cli       ; запретить прерывания

ldi temp, 0b10000011  ; Вкл. Ацп, Однокр. преобр., Прерывание запрещено, СК/8 (125 kHz)
out ADCSR, temp
ldi temp, 0b01100000  ; AVcc, Внеш. конд. на Aref, Выравн. по лев. краю, channel 1.23V bg
out ADMUX, temp

ldi Temp3,0b11111111  ;присвоение константы
out DDRD,Temp         ;вывод

rcall adc_convert


main:
rcall adc_convert
cpi temp,75
brge OF
 ON: 
 ldi temp3,0b01000000
 out PortD,temp3
 rjmp main
 
 OF:
 ldi temp3,0b00000000
 out PortD,temp3
 rjmp main


adc_convert:
out ADMUX, temp    ; wreg contains channel
sbi ADCSR, ADSC    ; Start Convertion
sbic ADCSR , ADSC
rjmp PC-1
in temp, ADCL    ; просто формальность (первым всегда читается ADCL)
in temp, ADCH    ; wreg contains result

ret

Re: проблемы с ацп atmega8

Добавлено: Ср авг 28, 2013 07:51:27
Engineer_Keen
Для начала поправить это:

Код: Выделить всё

adc_convert:
out ADMUX, temp    ; wreg contains channel
в temp у вас результат оцифровки и вы его при следующем rcall adc_convert пихаете в ADMUX. Или выкиньте эту строку (вы в процессе работы все равно не меняете канал АЦП и прочие его настройки, или перед ней вставьте загрузку в temp правильной константы.
И вот тут по-моему опечатка:

Код: Выделить всё

ldi Temp3,0b11111111  ;присвоение константы
out DDRD,Temp        ;вывод

Re: проблемы с ацп atmega8

Добавлено: Ср авг 28, 2013 07:55:38
pyzhman
Вы в ADMUX-то гляньте чего засылаете.

Re: проблемы с ацп atmega8

Добавлено: Пт авг 30, 2013 22:36:20
COKPOWEHEU
in temp, ADCL ; просто формальность (первым всегда читается ADCL)
Что за бред. Запуск преобразования потому и настроен на чтение ADCH что для 8-битного результата, когда ADCL не нужен, его и не читают.

Re: проблемы с ацп atmega8

Добавлено: Ср сен 25, 2013 21:18:52
FreshMan
изучаю работу АЦП......, для меня остается непонятным один момент: в каких случаях надо выбирать опорноет на 5В а в каких на 2,56 В ? :dont_know:
помогите разобраться, пожалуйста.

Re: проблемы с ацп atmega8

Добавлено: Ср сен 25, 2013 21:55:02
Engineer_Keen
Допустим нужно мерить например от 0 до 2В, то если выбрать опорное 5В, то разрешающая способность будет 5/1024 = 5мВ, а если выбрать 2.56, то 2.56/1024=2.5мВ

Re: проблемы с ацп atmega8

Добавлено: Ср сен 25, 2013 23:11:15
FreshMan
я так понимаю 5мВ это более приемлемый вариант
есть еще какие-либо критерии отбора ?

Re: проблемы с ацп atmega8

Добавлено: Ср сен 25, 2013 23:43:58
Myp3ik
Нет, лучше 2,5мВ. Другими словами, что лучше, точность +-2,5мВ, или +-5мВ ?

Re: проблемы с ацп atmega8

Добавлено: Чт сен 26, 2013 06:02:17
pyzhman
Вещи интереснее измерять соизмеримыми мерами. Человека килограммами, а вагоны тоннами.