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

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

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

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

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

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

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

 
Опции темы
Непрочитано 28.08.2011, 16:12  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

Сообщение от putmannn Посмотреть сообщение
Сделал не непрерывное, а одиночное преобразование, так работает, но мне надо шустрее опрашивать ..... может кто научит как корректно менять канал АЦП при непрерывном преобразовании на атмеге8 ?????
никто...
повышайте частоту АЦП
https://kazus.ru/forums/showpost.php...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.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Не работает АЦП mega8.

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

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

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

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

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

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

Сообщение от putmannn Посмотреть сообщение
а вне прерываний в главном цикле ничего нет, просто rjmp сам на себя.
Это пока... Её ещё править...
omercury вне форума  
Непрочитано 29.08.2011, 10:41  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
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.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
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 18:56


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot