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

ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 00:04:27
DIMA040891
Помогите пожалуйста найти ошибку. Хотел в ATmega8 задействовать АЦП. АЦП должен измерять напряжение раз в 0,5 С на вывоже ADC0 (PC0), затем прочитав это значение из ADCH (выравнивание влево) вывести значение в остальные вывода порта C. PC1-PC5 подключены светодиоды. Почемуто непроисходит ничего :(, светодиоды негорят :( Напряжение на ADC0 беру с переменного резистора, который соиденён с источником питания МК. Помогите разобраться кто может.

.

.

.

ldi Temp,low(RamEnd) ;установка указателя стека
out SPL,Temp
ldi Temp,high(RamEnd)
out SPH,Temp

ldi Temp,0b11111110
out DDRC,Temp

ldi Temp,0b00101000
out PORTC,Temp

ldi Temp,0b11100000
out ADMUX,Temp; выбор канала, а так же выравнивание влево(бит 5),+(биты 6 и 7)
; включение опорного напряжения внутреннего источника

ldi Temp,0b10000101
out ADCSRA,Temp; старший бит вкл АЦП, младшие - предделитель

reset: sbi ADCSRA,ADSC ; уст бит "старт преобразования"

WaitADC:

sbis ADCSRA,ADIF
rjmp WaitADC
; тут отсчет готов...
in Temp1,ADCH ; ст байт

out PORTC,Temp1

ldi Temp3,0x06
ldi Temp2,0x1A
ldi Temp1,0x80


Delay: subi Temp1,1;ждём 0,5С
sbci Temp2,0
sbci Temp3,0
brcc Delay

rjmp reset

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 00:27:26
Pooher
А что за дериктива такая SBCI?
Наверно имеется в виду SBIC? Так оно тоже не пройдёт.
Вот SBRC...

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 00:44:40
DIMA040891
Де вроде всё правильно. SBCI-Вычесть непосредственное значение с переносом, а SBIC Пропустить если бит в регистре I/O очищен.

Де и к тому же в предидущих своих программах я использовал для задержки комнду sbci.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 00:46:04
Pooher
:roll: Всё, пошёл спать...

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 08:00:28
GP1
если ничего не путаю, то читать надо оба байта ADCH:ADCL, иначе там какая-то бяка получается

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 09:37:46
Pooher
Ну да, но если результат выравнивается влево, то можно читать только ADCH.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 10:51:36
GP1
что нарыл:
1. в М8 регистр обзывается не ADCSRA - а ADCSR
2. ты забыл разрешить прерывание от ADC, поставь ADIE в 1 и все заработает :))), ну в соответствии с установками портов.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 11:15:12
DIMA040891
1. В даташите нет токого регистра ADCSR, есть только ADCSRA, хотя в одной из книг написано что у mega8 этот регистр называется просто ADCSR.
Кстати непонятно если в программе пменять название с ADCRA на ADCSR, и нажать кмпиляция то компилятор на изменения названия нериагирует, ну всмысле всё нормально компилирутся! Надо будет и так попробывать.
2. А это разве необхадимо))?? У меня же вроде как АЦП не от прерываний работает :)))?? Но всё равно обязательно попробую оба варианта как домой приду.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 11:39:57
GP1
Проект для VMLab 3.15 все работает

ЗЫ если будешь включать IE поставь заглушку по адресу ADCCaddr=$00e

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 11:45:18
Scuby_Du
о как все сложно! неужели нужно так досконально разбираться с асмом
в кодевижоне генеришь новый проект с использованием ацп и пишешь

PORTB=readADC();

все :))) :))) :)))

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 11:51:00
DIMA040891
Не неинтерсно!!!! :))) :))) :)))

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 12:00:29
Scuby_Du
DIMA040891 писал(а):Не неинтерсно!!!! :))) :))) :)))
зато за 10 секунд :))) :))) :)))

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 12:10:35
GP1
Scuby_Du писал(а):о как все сложно! неужели нужно так досконально разбираться с асмом
в кодевижоне генеришь новый проект с использованием ацп и пишешь

PORTB=readADC();

все :))) :))) :)))
И главное не надо понимать как это работает. :tea:

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 12:57:44
Smirnov
Даже в официальных даташитах немало примеров на си, что в асм лезут, непонятно :shock:

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 15:27:58
Pooher
Ну, ща опять полемика начнётся. Пишите Вы на чём хотите, и других не трогайте. Я вот СИ вообще НЕНАВИЖУ, а по чему, уже не раз писал на форуме.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 18:50:44
DIMA040891
А что будет если к выводу задействованному под АЦП подтянуть внутренний подтягивающий резастор?? Просто будет показывать что напряжение на этом выводе 5В?? или что??

in Temp1,ADCH ; ст байт
out PORTC,Temp1 - ведь этой командой в зависимости от напряжегия на ножке ADC0, может и внутренний резистор подтянуться, к ней же, так ведь?? Может из-за этого неработает????

Установка бита ADIE непомогла :evil: :evil: :evil: :evil:

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 19:18:00
GP1
тогда выложи весь код, у меня работает.
подключать Rp не пробовал, вероятно при отсутсвии сигнала там будет Vcc

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 19:24:51
avruser
Не могли бы схему выложить?

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 19:41:27
DIMA040891
Плучилось грубовато, но вроде всё понятно.

Re: ATmega8 и АЦП

Добавлено: Чт мар 18, 2010 20:15:00
avruser
Схема вроде норм. Попробуй вывести просто число и посмотри - выводится или нет.