Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Не работает АЦП mega8

Непрочитано 28.08.2011, 16:12  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от putmannn Посмотреть сообщение
Сделал не непрерывное, а одиночное преобразование, так работает, но мне надо шустрее опрашивать .....
А смысл? Всё равно на каждое измерение идёт прерывание...
Код:
ADC_CC :
in temp, ADCL ; просто формальность (первым всегда читается ADCL)
in temp, ADCH ; wreg contains result читаем результат преобразования
;**************************************
cpi selacp, 1 ;если селектор АЦП =1 то идём на контроль АКБ
	brne noakb		;Если не напряжение -› проверяем ток или нет
akb:
	mov tacp,temp
	mov t, tacp
	ldi temp, 0b11100001 ; чтение, АЦП-1
	rjmp sacp
;**************************************
noakb:
cpi selacp, 2 ;если селектор АЦП =2 то идём на контроль тока
	brne key		;Если не напряжение и не ток -› на опрос кнопок
tok:
	mov acp, temp ; wreg contains result
	rcall ktok
	ldi temp, 0b11100111 ; чтение, АЦП-7
	rjmp sacp
;**************************************
key:
	mov tacp, temp ; wreg contains result
	mov t, tacp
	lsr t
	lsr t
	lsr t
	ldi temp, 0b11100000 ; чтение, АЦП-0
;**************************************
sacp:
	out ADMUX, temp
	ldi temp, 0b11001111	;Запуск однократного измерения
	out ADCSRA, temp
	dec	selacp				;селектор - 1
	brne	n_exit
	ldi	selacp,3			;Инициализация счётчика каналов
n_exit:
reti ;выходим из прерывания
ADC_.txt

Плохо, что rcall ktok прямо в прерывании.
Реклама:

Последний раз редактировалось omercury; 28.08.2011 в 16:16.
omercury вне форума  
Непрочитано 28.08.2011, 16:24  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от putmannn Посмотреть сообщение
Сделал не непрерывное, а одиночное преобразование, так работает, но мне надо шустрее опрашивать ..... может кто научит как корректно менять канал АЦП при непрерывном преобразовании на атмеге8 ?????
никто...
повышайте частоту АЦП
https://kazus.run/forums/showpost.ph...6&postcount=20
omercury вне форума  
Непрочитано 29.08.2011, 01:06  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

А всю прогу можно увидеть просто как то странно, что не сохраняются переменные на входе в прерывание .
EugenPKH вне форума  
Непрочитано 29.08.2011, 09:20  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от EugenPKH Посмотреть сообщение
А всю прогу можно увидеть просто как то странно, что не сохраняются переменные на входе в прерывание .
Уже исправил на одиночное преобразование, той версии не осталось, не смогу.
putmannn вне форума  
Непрочитано 29.08.2011, 09:42  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от EugenPKH Посмотреть сообщение
как то странно, что не сохраняются переменные на входе в прерывание .
Там ассемблер. Что сохранили ручками, то и сохранилось...

Кстати, putmannn, не забудьте добавить сохранение и восстановление SREG на входе и выходе из прерывания....
omercury вне форума  
Непрочитано 29.08.2011, 10:02  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от omercury Посмотреть сообщение
Кстати, putmannn, не забудьте добавить сохранение и восстановление SREG на входе и выходе из прерывания....
Зачем ? никогда не сохранял его, всё работает !!!
Это моя первая программа, недавно начал баловаться с контроллерами, насколько я понимаю если я в прерывании то прерывания по умолчанию запрещены, значит указаная выше процедура не может прервать и испортить срегистр.... а вне прерываний в главном цикле ничего нет, просто rjmp сам на себя.
Хотя я не подумал об этом, новичёк, спасибо, буду теперь всегда сохранять.

Последний раз редактировалось putmannn; 29.08.2011 в 10:18.
putmannn вне форума  
Непрочитано 29.08.2011, 10:37  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от putmannn Посмотреть сообщение
Зачем ? никогда не сохранял его, всё работает !!!
Очень странно...
В прерывание МК может свалиться перед проверкой какого-либо условия, а флаги в подпрограмме изменились... Условие не выполнилось, а должно... Или наоборот. Работа программы нарушается.

Сообщение от putmannn Посмотреть сообщение
а вне прерываний в главном цикле ничего нет, просто rjmp сам на себя.
Это пока... Её ещё править...
omercury вне форума  
Непрочитано 29.08.2011, 10:41  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Согласен....
putmannn вне форума  
Непрочитано 29.08.2011, 20:19  
-Dreamer-
Частый гость
 
Регистрация: 22.03.2010
Адрес: Севастополь
Сообщений: 26
Сказал спасибо: 5
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
-Dreamer- на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Извините, что не смотрел ваш код, но хотелось бы указать на частую ошибку при использовании непрерывного преобразования. Нюанс связан с переключением каналов, а именно с тем, что регистр ADMUX обновляется сразу и только в конце преобразования. В момент входа в прерывание по завершению преобразования, уже начинается следующий цикл с текущим ADMUX! И смена канала в прерывании не приведет к его моментальному переключению. Это произойдет лишь в конце цикла, который уже начался с предыдущим ADMUX!, т.е. после смены канала в прерывании, на следующем прерывании вы получите данные не нового, а предыдущего канала.
Извините, поздно заметил, что вы это знаете, но может кому-то пригодится))

Последний раз редактировалось -Dreamer-; 29.08.2011 в 22:05.
-Dreamer- вне форума  
Непрочитано 30.08.2011, 07:23  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от -Dreamer- Посмотреть сообщение
И смена канала в прерывании не приведет к его моментальному переключению. Это произойдет лишь в конце цикла, который уже начался с предыдущим ADMUX!, т.е. после смены канала в прерывании, на следующем прерывании вы получите данные не нового, а предыдущего канала.
Извините, поздно заметил, что вы это знаете, но может кому-то пригодится))
Это работает при однократном преобразовании, но как ни странно как я писал выше, получаю данные именно с того канала который переключил именнто сейчас именно в этом прерывании......

Последний раз редактировалось putmannn; 30.08.2011 в 09:57.
putmannn вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает АЦП mega8 putmannn Микроконтроллеры, АЦП, память и т.д 10 11.07.2011 12:40
АЦП mega8 Proteus не работает AGAT0365 Proteus 16 27.04.2010 19:53
АЦП в mega8 FlashAck Микроконтроллеры, АЦП, память и т.д 29 29.01.2010 17:50
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
об АЦП на mega8 Слава Микроконтроллеры, АЦП, память и т.д 5 23.03.2005 17:56


Часовой пояс GMT +4, время: 11:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.