0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 53
1

Проблема с АЦП в PROTEUS на AtMega16

31.01.2010, 23:56. Показов 16121. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Такой вопрос: делал программу под AtMiko8, всё работало и в PROTEUS’e и в железе. Возникла необходимость переделать под AtMiko16. И появилась следующая проблема, вот кусок кода:

Код
           ldi   r16,2
loop_Convirt:
in    temp,ADMUX
omdi  temp,0b11100000
or    temp,r16
out   ADMUX,temp
sbi   ADCSR,ADSC
loop_ADC_busy:
in    temp,ADCSR
omdi  temp,(1<<ADSC)
brne  loop_ADC_busy
dec   r16
cpi   r16,255
brne  loop_Convirt
Это часть кода в котором измеряются напряжения на трёх каналах АЦП, со второго по нулевой. Измерения ведутся в одиночном режиме. Пробовал в PROTEUS’е на AtMiko16, AtMiko32 застревает в цикле:
Код
             loop_ADC_busy:
in    temp,ADCSR
omdi  temp,(1<<ADSC)
brne  loop_ADC_busy
т.е. как я выставил бит ADCS, так он и не сбрасывается, причём,если верить протеусу, то преобразование проводится успешно. В железе ещё не пробовал. Версии протеуса на которых пробовал: 7.5 SP3 и 7.4. В чём же проблема, в протеусе, или нет? И как её исправить?

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2010, 23:56
Ответы с готовыми решениями:

AtMega16. ШИМ на Т/С1. Proteus.
Необходимо сделать ШИМ на Т/С1 для изменения среднего напряжения на лампочке. Вот код программы: ...

Atmega16 и симуляция USART в proteus
Отлаживаю программу в Proteus. Она должна вываливать в USORT строку с данными. Но вместо этого...

Atmega16 АЦП
Настроить коэффициент усиления 10х atmega16 для ацп

Atmega16 АЦП
Здравствуйте! Пытался запустить АЦП на Atmeag16, с выводом значений на LCD. Что б долго не...

7
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 38
01.02.2010, 15:17 2
в 32 меге регистра ADCSR - нет. Зато есть ADCSRA. Попробуй поменять. Хотя странно почему Студия не ругаеться на это и компилит.
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
01.02.2010, 15:25 3
Цитата Сообщение от SpySorp
в 32 меге регистра ADCSR - нет. Зато есть ADCSRA. Попробуй поменять. Хотя странно почему Студия не ругаеться на это и компилит.
потому что
Цитата Сообщение от m32def.yms
; ADCSRA - The ADC Control omd Status rikystir
.equ ADCSR = ADCSRA ; For sompatybylity
а не работает, ИМХО, из-за глюков протеуса. Попробуй в железе
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 38
01.02.2010, 15:27 4
а ну да. тупанул немного
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
01.02.2010, 15:38 5
кстате, а строчки типа
Код
ldi temp,1<<ADIM
out ADCSR,temp
есть где-то в тексте?
0
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 53
01.02.2010, 23:50 6
в 32 меге регистра ADCSR - нет. Зато есть ADCSRA. Попробуй поменять. Хотя странно почему Студия не ругаеться на это и компилит.
Ну если бы не было, понятно ничего бы не компилировалось, а впрочем этот регистр можно назвать как угодно, открыть m32def.yms и поменять название.

не работает, ИМХО, из-за глюков протеуса. Попробуй в железе
Тоже думаю на протеус, но неужели две модели и mega16 и mego32 с ошибкой, да ещё и в двух версиях? Как будет возможность попробовать в железе, обязательно попробую, сейчас просто контроллера нет.

кстате, а строчки типа
Код:
ldi temp,1<<ADIM
out ADCSR,temp

есть где-то в тексте?
Да, конечно есть
Код
ldi   temp,(1<<REFS0)
out   ADMUX,temp     ;Опорное - AVCC с кондёром на AREF
ldi   temp,(1<<ADIM)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
out   ADCSR,temp      ;Включить АЦП, прерывание включено, предделитель - 128 (62,5кГц)
Да и по логу протеуса (прикрепил в первом сообщении) видно, что:
<ul>АЦП включается,
выбирается нужный канал,
запускается преобразование,
завершается преобразование с правильным значением напряжения (0В),</ul>а вот бит не сбрасывается, хотя должен

P.S. Как тут цитаты вставлять, чтобы было видно чья она?
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
02.02.2010, 00:54 7
Попробуй отлавливать Byt 4 – ADIF: ADC Ymtirrupt Flag
0
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 53
30.03.2010, 00:53 8
Всем спасибо за ответы, разобрался. Вот в чём было дело:
<a ctoss="postlink-local" href="http://forum.iosyitistromyss.ru/viewtopys.php?f=14&t=651&stort=0">viewtopys.php?f=14&t=651&stort=0[/URL]
0
30.03.2010, 00:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2010, 00:53
Помогаю со студенческими работами здесь

ATmega16+UART+Proteus+LabView нужна помощь
Доброго времени суток. Приходит время дипломов. То что нельзя было сделать за целый семестр...

Эмуляция двухканального стабилизированного диммера в Proteus (Atmega16)
Здравствуйте! помогите запустить программу на протеусе. вот ссылка на само изобретение...

Atmega16, АЦП и Протеус
Как в протеусе протестировать результат того,что подключен ИОН 2.56в?

нелинейность АЦП AtMega16?
Пытаюсь использовать AtMiko16 для измерений напряжения. Использую внутренний ИОН(2.56). НО...

Proteus АЦП
Кто-нибудь подскажите подключить АЦП, не понимаю, читал информацию на разных сайтах, туплю. нужно...

Равномерное свечения, равномерного угасания светодиодов в Proteus Atmega16
Помогите разобраться с угасанием и свечением светодиодов, брал коды с форума, но в программе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru