|
Снова АЦП |
|
|
|
Sep 21 2009, 17:53
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
ATmega164P. Отладчик AVRdragon и Studio Проблема в следующем ,при прогоне программы с подключённым макетом АЦП ведёт себя как ему и положено , но стоит запрограмировать микросхему и запустить в автономке АЦП просыпается только по прерыванию от таймера , в моем случае через секунду. FUSES выставлены - проблем я с ними не вижу. Ниже привожу код , может всё таки что-то упустил. Конечно многое отсёк оставив только относящееся к АЦП. HELP Код *********************** ; * * ; * * ; * ATMega 164P * ; * * ; ***********************
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m164pdef.inc"
.DEVICE ATmega164P
.org ADCCaddr jmp ADC3 ; ADC Conversion Complete
; ***************************** ; * * ; * Initialization АЦП * ; * * ; * * ; *****************************
ldi temp,(1<<REFS0)|(1<<ADLAR) sts ADMUX,temp ; Внешнее напряжение AVcc, выравнивание влево ldi temp,(1<<ADC0D) ; Отключение цифрового контакта от sts DIDR0,temp ; PORTA pin0 clr temp sts ADCSRB,temp ldi temp,(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0) sts ADCSRA,temp ; |(0<<ADSC) Преобразование отключено ; АЦП вкл. Прерывание разрешено . Делитель на 64 = 187,5 Кгц частота ; преобразования
; ***************************** ; * * ; * Подпрограмма обнаружения * ; * * ; * * ; *****************************
TIM2COMPB: cli push temp push count in temp,SREG push temp ldi Cnt0,Low(255); Инициализация счётчика преобразований clr rab ; Очиска рабочих регистров clr mean0 clr mean1 clr ZH clr ZL cbi PORTB,0 ADC1:
ldi temp,(1<<SE)|(1<<SM0) ; Настройка режима "сна" out SMCR,temp ; Запись SMCR sei sleep ; Преобразование dec Cnt0 ; brne ADC1 ; Если не равно 255 - преобразование ldi count,$08 ; Начинаем процедуру вычисления среднего ADC5: lsr mean1 ; 255=2 в степени 8 ror mean0 ; сдвигаем регистры в право 8 раз dec count brne ADC5 ; Конец процедуры вычисления среднего ldi temp,(0<<SE)|(1<<SM0); Выход из режима "сна" out SMCR,temp pop temp out SREG,temp pop count pop temp sbi PORTB,0 sei rjmp CHECK
; ***************************** ; * * ; * Вычисление среднего ; * * ; *****************************
ADC3: cli ldi temp,(0<<SE)|(1<<SM0) ; Выход из режима "сна" out SMCR,temp ; Запись SMCR lds rab,ADCH ; Считывание только старшего регистра clr temp add mean0,rab ; Вычисление среднего adc mean1,temp ; Вычисление среднего ret
; ***************************** ; * * ; * Таблица значений для ADC * ; *****************************
tabADC: .db $00,$01,$4A,$4B,$4C,$95,$96,$97 .db $B4,$B5,$B6,$7E,$7F,$80,$FE,$FF Пояснения TIM2COMPB: это прерывание от таймера по которому и запускается АЦП- убрано за ненадобностью
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
 |
Сообщений в этой теме
ILYAUL Снова АЦП Sep 21 2009, 17:53 Александр Куличок ЦитатаADC5: lsr mean1 ... Sep 22 2009, 00:15 domowoj У Евстифеева написано, что АЦП запускается по ком... Sep 22 2009, 15:58 Rst7 ЦитатаКоней попредержи на поворотах, англоязычный ... Sep 23 2009, 08:43 ILYAUL Цитата(Rst7 @ Sep 23 2009, 12:43) Нормаль... Sep 23 2009, 18:39 Александр Куличок ЦитатаПояснения
TIM2COMPB: это прерывание от тайме... Sep 24 2009, 18:26 ILYAUL Александр
Огромное спаибо эа развёрнутый ответ. ... Sep 24 2009, 21:49 Александр Куличок ЦитатаТаймер2 считает внешние 1Гц импульсы от DS13... Sep 25 2009, 17:40 ILYAUL Извините , что долго не отвечал. Выкладываю полный... Oct 12 2009, 09:08 Александр Куличок Исправлюсь по поводу своего высказывания:
ЦитатаТа... Oct 14 2009, 15:03 defunct Цитата(Александр Куличок @ Oct 14 2009, 18... Oct 14 2009, 22:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|